Anda di halaman 1dari 59

Sistem Basis Data

Objectives
Normalisasi Anomali Dependensi Bentuk Normal

Normalisasi
Proses normalisasi adalah proses menganalisa dan memperbaiki skema relasi menggunakan data atribut untuk memperoleh properti-properti skema relasi yang baik menjadi bentuk normal lebih tinggi sehingga dapat:
Mengotimalisasi redundansi Menghilangkan anomali

Normalisasi (2)
Suatu proses untuk mengurangi redundancy pada suatu tabel/obyek/entitas sehingga mudah dimodifikasi. Biasanya melibatkan pembagian tabel menjadi dua atau lebih tabel dan menjelaskan hubungan diantara tabel. Tujuannya adalah untuk mengisolasi (pemisahan) data sehingga penambahan, pengurangan, dan modifikasi dari atribut dapat dilakukan pada satu tabel dan selanjutnya dikembangkan keseluruh database melalui relasi yang ada.

Redundancy
Pengulangan/duplikasi data yang tidak perlu. Redundansi tidak dapat dihilangkan sama sekali karena berguna untuk integritas referensial (acuan) yang menghubungkan satu field pada suatu tabel dengan field lain pada tabel yang berbeda.

Contoh Redundansi
Tabel KRS
NIM
200543423 200512345 200534632 200595732 200634123 200612367 200691245 200736512

Kode_MK
PS-4533 PS-4533 PS-4533 PS-4533 BD-5452 BD-5452 BD-5452 PG-3465

Nama_MK
Perancangan Sistem Perancangan Sistem Perancangan Sistem Perancangan Sistem Basis Data Basis Data Basis Data Pemrograman

Nilai
A B B A B B A B

Tabel diatas memiliki redundansi. Kolom Kode_MK dan Nama_MK memiliki data yang sama (berulang-ulang).

Anomali
Anomali pada dasarnya adalah ketidakkonsistenan (inkonsistensi) data. Anomali bisa terlihat pada saat melakukan perubahan, penghapusan dan penambahan data.

Contoh Anomali
Tabel KRS
NIM
200543423 200512345 200534632 200534632 200634123

Kode_MK
PS-4533 PS-4533 PS-4533 BD-5630 BD-5452

Nama_MK
Perancangan Sistem Perancangan Sistem Perancangan Sistem Sistem Basis Data Basis Data

Nilai
A B B A B

200612367
200691245 200691245

BD-5452
BD-5452 PG-3465

Basis Data
Basis Data Pemrograman

B
A B

Misalkan pada tabel diatas dilakukan perubahan data pada record ke 5, data nama mata kuliah basis data diganti menjadi perancangan basis data.

Contoh Anomali (2)


Tabel KRS
NIM
200543423 200512345 200534632 200534632 200634123

Kode_MK
PS-4533 PS-4533 PS-4533 BD-5630 BD-5452

Nama_MK
Perancangan Sistem Perancangan Sistem Perancangan Sistem Sistem Basis Data Perancangan Basis Data

Nilai
A B B A B

200612367
200691245 200691245

BD-5452
BD-5452 PG-3465

Basis Data
Basis Data Pemrograman

B
A B

Pada tabel diatas akan terjadi ketidak-konsistenan pada record 5, 6 dan 7. yaitu record Kode_MK = BD-5452 berelasi dengan dua Nama_MK yang berbeda (Perancangan basis data dengan Basis data).

Solusi

Normalisasi

Melakukan dekomposisi dengan menentukan ketergantungan fungsional (Functional dependency). Dependensi : suatu hubungan dimana perubahan pada satu tabel akan mempengaruhi tabel yang lain, dimana salah satu tabel bergantung pada tabel yang lain. Contoh ketergantungan fungsional : Ketergantungan fungsional pada tabel KRS
Kode_MK Nim, Kode_MK Nama_MK Nilai

Dekomposisi Berdasarkan ketergantungan fungsional tersebut, maka tabel KRS dapat didekomposisi menjadi 2 tabel

Kode_MK
PS-4533 BD-5630 BD-5452 PG-3465

Nama_MK
Perancangan Sistem Sistem Basis Data Perancangan Basis Data Pemrograman

NIM
200543423 200512345 200534632 200534632 200634123 200612367 200691245 200691245

Kode_MK
PS-4533 PS-4533 PS-4533 BD-5630 BD-5452 BD-5452 BD-5452 PG-3465

Nilai
A B B A B B A B

Dekomposisi tabel dapat mengurangi redudansi yang ada dan menghilangkan anomali Perancangan melalui proses normalisasi mempunyai keuntungan-keuntungan sebagai berikut :
Meminimalkan ukuran penyimpanan yang diperlukan untuk penyimpanan data. Meminimalkan resiko inkonsistensi data pada basis data. Meminimalkan kemungkinan anomaly pembaruan. Memaksimalkan stabilitas struktur (susunan) data.

Tujuan proses normalisasi adalah mengkonversi relasi menjadi bentuk normal lebih tinggi. Terdapat beragam tingkat bentuk normal, yaitu:
1. 2. 3. 4. 5. 6. Bentuk normal pertama (1NF) Bentuk normal kedua (2NF) Bentuk normal ketiga (3NF) Bentuk normal Boyce-Codd (BCNF) Bentuk normal keempat (4NF) Bentuk normal kelima (5NF)

Bentuk normal pertama (1NF) untuk menghilangkan atribut bernilai jamak. Bentuk normal kedua (2NF) untuk menghilangkan kebergantungan parsial. Bentuk normal ketiga (3NF) untuk menghilangkan kebergantungan transitif. Bentuk normal Boyce-Codd (BCNF) untuk menghilangkan anomaly tersisa disebabkan kebergantungan fungsional. Bentuk normal keempat (4NF) untuk menghilangkan kebergantungan nilai jamak. Bentuk normal kelima (5NF) untuk menghilangkan anomaly tersisa.

Tiga bentuk normal pertama berkaitan dengan kebergantungan fungsional. Sementara itu bentuk keempat dan kelima berkaitan dengan redundansi yang disebabkan kebergantungan banyak nilai (multi-valued dependencies).

1NF
Syarat 1NF adalah :
setiap atribut harus bersifat atomik, artinya, setiap atribut merupakan unsur terkecil dari identitas entitas (tidak perlu dipecah-pecah lagi) semua nilai atributnya adalah sederhana, bukan atribut komposit (gabungan/campuran) dan bukan atribut bernilai banyak (multi-valued). Menghilangkan repeating group data (kelompok data yang berulang).

Contoh tabel yang termasuk dalam 1NF


Pada gambar disamping, atribut nilai bersifat tunggal untuk setiap kombinasi atribut NIM dan atribut Kode_MK tertentu.
NIM
200543423 200512345 200534632 200595732 200634123 200612367 200691245 200736512

Kode_MK
PS-4533 PS-4533 PS-4533 BD-5630 BD-5452 BD-5452 BD-5452 PG-3465

Nilai
A B B A B B A B

Kombinasi NIM dan Kode_MK dapat dijadikan sebagai kunci primer untuk menentukan nilai (penanda)

Contoh lain 1NF


Contoh : akan kita periksa atribut NAMA, apakah atribut tersebut sudah atomik ?
Kode_Peg
200512345 200534632 200595732 200634123

Nama
Tukul Rahwana Tri Wahyuni Dedi Gumilang Benny Mulyadi

Departemen
Marketing Marketing IT IT

Misalkan salah satu isi atribut NAMA adalah Tukul Rahwana, jika nama itu selamanya akan digunakan demikian, maka atribut tersebut sudah atomik. Tetapi, jika nama itu suatu saat harus dicetak menjadi Rahwana, Tukul, maka atribut NAMA tersebut belum atomik. Bagaimana mencetak Tukul Rahwana menjadi Rahwana Tukul ?. Jadi, jika di negara barat, biasanya atribut nama dipecah-pecah menjadi first name (FNAME), middle name (MNAME), dan last name (LNAME), karena memang nama mereka sering dibolakbalik.

Kesimpulan contoh :
Tabel Pegawai dapat dikatakan telah berada pada bentuk Normal ke 1, bila atribut nama akan tetap dipergunakan dalam bentuk seperti itu. Apabila atribut (field) nama akan dipergunakan dengan membedakannya menjadi nama depan dan nama belakang, maka akan lebih baik jika field nama dijadikan dua field.

Contoh 1NF

Coba perhatikan tabel disamping ini. Apakah tabel Member List ini sudah termasuk dalam 1NF ?

Contoh 1NF (2)

Tabel member list memiliki tipe atribut multi-valued Sehingga tabel member list harus didekomposisikan menjadi 2 tabel. Antara tabel member dan database direlasikan menggunakan atribut MID yang merupakan primary-key pada tabel member dan foreign-key pada tabel database

2NF
Syarat 2NF :
telah memenuhi 1NF, setiap atribut non key (bukan primary atau foreign key) harus tergantung secara fungsional dengan atribut key-nya.

Relasi pada bentuk normal kedua harus tidak menyimpan fakta-fakta mengenai bagian kunci relasi. Bentuk normal kedua menghilangkan kebergantungan parsial (sebagian) dan masih memiliki anomali-anomali yang secara praktis tidak dapat diterima.

Pada gambar disamping, atribut Nilai memiliki ketergantungan fungsional dengan atribut NIM dan Kode_MK

NIM
200543423 200512345 200534632 200534632 200634123 200612367 200691245 200691245

Kode_MK
PS-4533 PS-4533 PS-4533 BD-5630 BD-5452 BD-5452 BD-5452 PG-3465

Nilai
A B B A B B A B

Apabila ketergantungan tersebut diganti menjadi NIM dengan Nilai saja, maka akan terdapat ketidakbenaran.

Dari gambar disamping terlihat bahwa Nilai tidak tergantung secara fungsional dengan NIM

NIM
200543423 200512345 200534632 200534632 200634123 200612367 200691245 200691245

Nilai
A B B A B B A B

Kesimpulan : kombinasi NIM dengan Kode_MK menentukan Nilai seorang mahasiswa dengan NIM untuk mata kuliah tertentu.

NIM
200543423

Kode_MK
PS-4533

Nama_Mhs
Juli

Nama_MK
Perancangan Sistem

Nilai
A

200512345
200534632 200595732 200634123

PS-4533
PS-4533 BD-5630 BD-5452

Gogon
Heru Heni Yanita

Perancangan Sistem
Perancangan Sistem Perancangan Basis Data Basis Data

B
B A B

200612367
200691245 200736512

BD-5452
BD-5452 PG-3465

Linda
Petruk Koko

Basis Data
Basis Data Pemrograman

B
A B

Bagaimana bila terdapat tabel seperti diatas. Apakah sudah memenuhi syarat 2NF ?

Pada tabel tersebut terdapat 2 atribut key : NIM dan Kode_MK Atribut non key memiliki ketergantungan : Nama_mhs NIM Nama_Mk Kode_Mk Nilai NIM dan Kode_Mk
NIM
200543423 200512345 200534632 200595732 200634123

Kode_MK
PS-4533 PS-4533 PS-4533 BD-5630 BD-5452

Nama_Mhs
Juli Gogon Heru Heni Yanita

Nama_MK
Perancangan Sistem Perancangan Sistem Perancangan Sistem Perancangan Basis Data Basis Data

Nilai
A B B A B

200612367
200691245 200736512

BD-5452
BD-5452 PG-3465

Linda
Petruk Koko

Basis Data
Basis Data Pemrograman

B
A B

Untuk memenuhi syarat 2NF, maka atribut non key harus memiliki ketergantungan fungsional dengan atribut key. Tabel harus dipisah menjadi tiga tabel yang memiliki atribut key dan ketergantungan fungsional dengan atribut non key.
NIM
200543423 200512345 200534632 200595732 200634123 200612367 200691245 200736512

Nama_Mhs
Juli Gogon Heru Heni Yanita Linda Petruk Koko

NIM 200543423 200512345 200534632 200595732 200634123 200612367 200691245 200736512

Kode_MK PS-4533 PS-4533 PS-4533 BD-5630 BD-5452 BD-5452 BD-5452 PG-3465

Nilai A B B A B B A B

Kode_MK PS-4533 BD-5630 BD-5452 PG-3465

Nama_MK Perancangan Sistem Perancangan Basis Data Basis Data Pemrograman

Contoh lain 2NF


TTL_BYR NM_BRG NAMA *NOPEG *NO_KWI *KD_BRG HARGA

KASIR

JUAL

BARANG

**NOPEG ALAMAT

STOK MEREK

JENIS

**KD_BRG

JML_BRG

Di master file (entity) KASIR, kunci utamanya : NOPEG (nomor pegawai) Di master file (entity) BARANG, kunci utamanya : KD_BRG (kode barang) Di transaction file (relationship) JUAL, kunci utamanya : NO_KWI (nomor kwitansi) kunci tamunya : NOPEG dan KD_BRG

Contoh 2NF
Coba perhatikan tabel disamping ini. Apakah tabel ini sudah termasuk dalam 2NF ?

Contoh 2NF
Didalam tabel database terdapat satu atribut non-key yaitu atribut database yang memiliki ketergantungan terhadap atribut DID dan MID. Untuk memenuhi syarat 2NF, maka atribut database di set up sehingga tergantung dengan primary key yang sesuai yaitu atribut DID.

Contoh 2NF
Untuk menghubungkan tabel database dengan tabel member, maka dibuat suatu tabel baru yang memiliki atribut dari kedua tabel utama.

3NF
Syarat 3NF :
telah memenuhi 2NF setiap atribut non key tidak boleh tergantung dengan atribut non key lainnya (tidak boleh terjadi ketergantungan transitif).

Pada tabel Member terdapat satu primary key yaitu MID. Atribut non key lainnya yaitu Name, Company terhubung dengan primary key MID.

Atribut CompLoc sebagai atribut non-key tidak tergantung secara fungsional dengan primary key MID. Atribut CompLoc (non-key) memiliki ketergantungan dengan atribut Company (non-key), ketergantungan antara non-key dengan non-key disebut ketergantungan transitif. Untuk mengatasi masalah ini, dibuat tabel baru yaitu tabel Company.

Contoh lain 3NF


NIM 12345 34924 42345 54231 Nama Didi Amir Melly Tini Alamat Jl. Mawar 23 Jl. Borobudur 12 Jl. Penggilingan 9 Jl. Malaka 2 KodePos 65141 65151 13460 13460 Kota Malang Malang Jakarta Jakarta

Tabel diatas memiliki primary key NIM. Atribut non key : Nama, Alamat, KodePos dan Kota Atribut Kota memiliki ketergantungan dengan atribut Kode Pos, bukan dengan primary key.

Menurut aturan 3NF, atribut non key tidak boleh memiliki ketergantungan dengan atribut non key (tidak boleh ada ketergantungan transitif) Untuk mengatasi masalah ini, harus dibuat tabel baru dengan atribut Kota. Sebagai primary key digunakan atribut Kode Pos.
NIM Nama Alamat KodePos

12345
34924 42345 54231

.
. . .

.
. . .

65141
65151 13460 13460

KodePos Kota 65141 Malang

65151
13460

Malang
Jakarta

Bentuk Normal Boyce-Codd (BCNF)


BCNF memiliki ketentuan yaitu :
masing-masing atribut utama bergantung fungsional penuh pada masing-masing kunci dimana kunci tersebut bukan bagiannya. Relasi adalah BCNF (optimal) jika setiap determinan atribut-atribut relasi adalah kunci relasi. Relasi adalah BCNF (optimal) jika kapanpun faktafakta disimpan mengenai beberapa atribut, maka atribut-atribut ini merupakan satu kunci relasi. BCNF dapat memiliki lebih dari satu kunci. Properti penting BCNF adalah relasi tidak memiliki informasi yang redundan.

BCNF sudah pasti 3NF, tetapi belum tentu sebaliknya. Perbedaan BCNF dengan 3NF :
Pada BCNF suatu atribut yang bergantung secara fungsional terhadap kunci primer, mungkin saja merupakan kunci primer bagi atribut yang lain (ketergantungan funsional Trivial). Pada 3NF hal ini bisa saja terjadi dan tidak menjadi masalah.

Ada dua kasus yang membuat 3NF harus dijadikan BCNF :


Dalam satu entity terdapat lebih dari satu atribut key, dan masing-masing dari key menentukan atributnya masing-masing. Ketergantungan terjadi dari atribut non key ke atribut key, Atribut non key menentukan bagian dari atribut key.

Contoh BCNF
Gambaran relasi yang termasuk 3NF tetapi tidak termasuk BCNF
A B C

Bagaimana dengan tabel disamping ini ?

Mahasiswa
Samsul Merry Andri Rika Winda

Mata Kuliah
Basis Data Perancangan Sistem Perancangan Sistem Basis Data Pemrograman

Pengajar
Lukman Yenny Yenny Lukman Billy Gatel

Contoh BCNF
Tabel tersebut berada dalam 3NF. Pada tabel tersebut terdapat ketergantungan : Mahasiswa, Mata kuliah pengajar Pengajar mata kuliah Atribut non key (pengajar) bergantung secara fungsional terhadap kunci primer, tetapi atribut tersebut (pengajar) juga merupakan kunci primer bagi atribut yang lain (mata kuliah).
Mahasiswa Samsul Merry Andri Rika Winda Mata Kuliah Basis Data Perancangan Sistem Perancangan Sistem Basis Data Pemrograman Pengajar Lukman Yenny Yenny Lukman Billy Gatel

Bisa dibuat beberapa kemungkinan :


{Mahasiswa, pengajar} dan {mahasiswa, MK} {MK, pengajar} dan {MK, mahasiswa} {Pengajar, MK} dan {pengajar, mahasiswa}

Contoh lain BCNF


Entity StudentConcentration termasuk dalam 3NF, tetapi selama ada ketergantungan antara FacultyName dengan MajorMinor, maka entity ini tidak berada dalam bentuk Boyce-Codd.

Untuk mengatasi masalah ini, maka Entity StudentConcentration dipecah menjadi entity StudentConcentration dan Faculty. Apabila belum terdapat entity Faculty maka dapat dibuat entity baru, tetapi bila sudah ada maka dapat dibuat relasi antara Faculty dengan StudentConcentration dengan tambahan atribut MajorMinor.(Pada gambar dibawah, MajorMinor diganti menjadi MajorArea)

4NF
Relasi memenuhi syarat BCNF Tidak berisi kebergantungan banyak nilai.
Untuk menghilangkan kebergantungan banyak nilai dari satu relasi, kita membagi relasi menjadi dua relasi baru. Masing masing relasi berisi dua atribut yang mempunyai hubungan banyak nilai.

Contoh 4NF

Contoh lain 4NF


Pada gambar berikut ini terdapat relasi dimana seorang member bisa menguasai beberapa software, dan juga dapat memiliki referensi terhadap beberapa buku. Relasi yang terjadi adalah many to many, dimana setiap relasi many to many harus dibuat entitas tambahan (dipisah).

Ini Adalah Solusi yang SALAH

Solusi yang Lebih TEPAT

MID Bill John John Mary

SID ERWin VB.Net Java ERWin

MID Bill John John Steve

BID ERWin Bible VB For Dummies JavaFor Dummies PowerBuilder Bible

5NF
Bentuk normal kelima (5NF) berurusan dengan properti yang disebut join tanpa adanya kehilangan informasi (lossless join). Bentuk normal kelima (5NF) juga disebut PJNF (projection-join normal form). Kasus-kasus ini sangat jarang muncul dan sulit untuk dideteksi secara praktis.

Terdapat relasi seperti berikut dimana antara software dengan book terdapat hubungan. Karena relasi bersifat many to many, maka harus dibuat suatu entitas tambahan (dipisah)

Solusi yang salah


Apabila terdapat data software dan book tetapi tidak ada data member, maka MemberSoftwareBook tidak dapat menjelaskan siapa member yang terkait.

Solusi yang tepat


Data Member, Software dan book disimpan secara terpisah. Walaupun salah satu entitas tidak memiliki data yang dapat direlasikan dengan entitas yang lain, tidak akan mempengaruhi data di entitas lainnya.

Normalization
The three steps of data normalization are:
1NF - All repeating groups are removed 2NF - All Partial dependencies are removed 3NF - All Transitive dependencies are removed

All non-key attributes must depend on the entire primary key, and nothing but the primary key, so help me CODD.

Normalization Un-normalized Data


UN-NORMALIZED DATA Student Number Student Name Major Status Course Number (1 n) Course Title (1 n) Term (1 n) Professor Id (1 n) Professor Department (1 n) Grade (1 n)

Normalization 1NF
UNORMALIZED DATA Student Number STUDENT 1NF

Student Name
Major Status Course Number (1 n) Course Title (1 n) Term (1 n) Professor Id(1 n) Professor Department (1 n) Grade (1 n)

Student Number (PK)


Student Name Major Status STUDENT - COURSE Student Number (FK,PK) Course Number (PK) Course Title Term Professor Id Professor Department Grade

Normalization 2NF
1NF
STUDENT Student Number (PK) Student Name Major Status

2NF

STUDENT - COURSE Student Number (FK,PK)

STUDENT - COURSE Student Number (FK,PK)

Course Number (PK)


Course Title Term Professor Id Professor Department

Course Number (FK,PK)


Term Professor Id Professor Department Grade

Grade
COURSE Course Number (PK) Course Title

Normalization 3NF
2NF STUDENT - COURSE 3NF STUDENT - COURSE

Student Number (FK,PK)


Course Number (FK,PK) Term Professor Id Professor Department Grade COURSE Course Number (PK) Course Title

Student Number (FK,PK)


Course Number (FK,PK) Professor Id (FK) Term Grade

PROFESSOR Professor Id (PK) Professor Department

Normalization Results Summary


UNORMALIZED DATA Student Number STUDENT 1NF 2NF 3NF STUDENT Normalized ERD

Student Name
Major Status Course Number (1 n) Course Title (1 n) Term (1 n)

Student Number (PK)


Student Name Major

Student Number (PK)


Student Name Major

Status

Status

STUDENT - COURSE

STUDENT - COURSE

STUDENT - COURSE

STUDENT - COURSE

Professor Id(1 n)
Professor Department (1 n) Grade (1 n)

Student Number (FK,PK)

Student Number (FK,PK)

Student Number (FK,PK)

Student Number (FK,PK)

Course Number (PK) Course Title Term Professor Id Professor Department Grade

Course Number (FK,PK) Term Professor Id Professor Department Grade

Course Number (FK,PK) Professor Id (FK) Term Grade

Course Number (FK,PK) Professor Id (FK) Term Grade

COURSE Course Number (PK) Course Title

COURSE Course Number Course Title

PROFESSOR Professor Id (PK)

PROFESSOR Professor Id (PK)

Professor Department

Professor Department

Anda mungkin juga menyukai