NORMALISASI Dr.Budi Setiyono, MT
Perancangan basis data Entity Relation Diagram (ERD) Identifikasi entitas table Entitas table
Normalisasi Identifikasi keterkaitan field dalam suatu table table Table table normal
Key dan atribut Jenis key Superkey Satu atau lebih atribut yang dapat membedakan setiap baris data secara unik Contoh : (nim, nama_mhs, almaat_mhs, tgl_lahir) (nim, nama_mhs) dan (nim)
Key dan atribut (ljt) Candidate key
Kumpulan atribut minimal yang dapat membedakan setiap baris data dalam sebuah table secara unik. Tidak boleh berisi atribut atau kumpulan atribut yang telah menjadi superkey yang lain sehingga setiap candidate key pasti superkey, tetapi tidak sebaliknya. Contoh : (nim) (nama_mhs) : jika dapat menjamin keunikan untuk setiap baris
Key dan atribut (ljt) Primary key Salah satu candidate key (jika lebih dari satu) dapat dijadikan primary key, dengan pertimbangan : key tersebut lebih sering dijadikan acuan lebih ringkas jaminan keunikan key tersebut lebih baik.
Tipe-tipe atribut Atribut deskriptif : atribut yang tidak menjadi primary key, misal nama_mhs, tgl_lahir.
Atribut sederhana (simple attribute) atribut atomic, tidak dapat pecah-pecah (break down) lebih lanjut,missal nim, nama_mhs.
Tipe-tipe atribut (ljt) Atribut komposit (composit attribute) : atribut yang masih memungkinkan dipecah menjadi beberapa atribut lain, missal alamat_mhs dapat dpecah menjadi kota, jalan, kode_pos Atibut bernilai tunggal (single valued attribute) : ditujukan pada atribut yang paling banyak mempunyai satu nilai pada setiap baris. Atribut bernilai ganda (multivalued attribute) : atribut yang dapat diisi dengan lebih dari satu nilai, asalkan sejenis. Misal penambahan atribut pada table mhs akan dapat diisi dengan beberapa jenis hobi.
Tipe-tipe atribut (ljt) Mandatory attribute : Atribut yang harus ada isinya,misal nim, nama_mhs . Tidak boleh bernilai Null (note : Null tidak sama dengan spasi)
Atribut turunan (derived attribute) : atribut yang nilainya diperoleh dari atribut lain. Misal penambahan atribut angkatan dan ip pada table mhs. (note : biasanya tidak diperlukan)
Functional Dependencies Definisi Jika diberikan sebuah table T dengan minimal 2 atribut A dan B, maka notasi AB diartikan sebagai “A secara fungsional menentukan B” atau
“B secara fungsional tergantung pada A” jika dan hanya jika untuk setiap kumpulan baris (record) pada table T, apabila terdapat 2 baris data dengan nilai A yang sama, dipastikan bawa B juga sama.
Functional Dependencies
KF yang terjadi misalnya :
nim nama_mhs atribut nama_mhs hanya bergantung pada atribut nim, berarti untuk setiap nilai nim yang sama, dipastikan bahwa nama_mhs juga sama. MataKuliah, nim nilai Walaupun tidak dapat secara eksplisit ditunjukan bahwa jika matakuliah dan nim yang sama pasti nilai juga sama. Juga bisa ditunjukan untuk non KF, misal MataKuliah nim Atribut nim tidak tergantung pada atribut MataKuliah
Kriteria table yang baik Sebuah table dikategorikan baik (normal) jika telah memenuhi 3 kriteria berikut: Jika ada dekomposisi (penguraian) table, maka dekomposisinya harus dijamin aman (Lossless-Join decomposition) Terpeliharanya ketergantungan fungsional pada saat perubahan data (Dependecy Preservation) Tidak melanggar Boyce Code Normal Form (BCNF)
Jika kriteria ketiga tidak dapat terpenuhi, maka paling tidak table tidak melanggar bentuk normal tahap ketiga.
Losless-Join Decomposition Syarat : hasil dekomposisi jika digabungkan akan kembali menjadi table semula. Contoh (lossy-join decomposition) Misal Table ABC dengan KF : A B dan B C
Losless-Join Decomposition Jika table ABC asal row 4 diganti KF : A B dan B C tidak dilanggar Dekomposisi yang Losless Decomposition
Closure dari Functional Dependencies Tidak memungkinkan untuk me- list semua KF yang mungkin dalam suatu table. Kumpulan KF yang diimplikasikan oleh sekumpuilan KF yang lain disebut sebagai ketertutupan dari S closure(S) atau S+. Contoh : {a} {b}; {b} {c}; maka {a} {c} disebut KF transitif via {b} Algoritma untuk menghitung S+ dari S diusulkan oleh Armstrong inferensi
Closure dari Functional Dependencies Misal terdapat variable khayal A,B,C yang berisi kumpulan kolom dari relasi R dengan 8 field {s,t,u,v,w,x,y,z}; A={s,t}, B={u,v}, C={w,x}, D={y,z}. Inferensi amstrong didefinisikan :
refleksifitas : bila B subset dari A, maka AB Augmentasi : bila AB, maka ACBC Transitivitas : bila AB dan BC, maka AC Self determinitation : AA Dekomposisi : bila ABC, maka AB dan AC Union : bila AB dan AC, maka ABC Komposisi : bila AB dan CD, maka ACBD
Closure dari Functional Dependencies Contoh, misal ada relasi R1 dengan 6 kolom {s,t,u,v,w,x} dengan KF :
{s} {t,u}; {t} {w}; {u,v} {w,x} bisa disimpulkan KF {s,v} {x} dari inferensi : 1. {s} {t,u} (diberikan) 2. {s} {u} (aturan dekomposisi) 3. {s,v} {u,v} (aturan augmentasi) 4. {u,v} {w,x} (diberikan) 5. {s,v} {w,x} (transitivitas dari 3 dan 4) 6. {s,v} {x} (aturan dekomposisi)
DEPENDENCY PRESERVATION (Pemeliharaan ketergantungan) Perubahan pada data harus dapat menjamin tidak akan menghasilkan inkonsistensi data yang mengakibatkan terlanggarnya KF yang telah terbentuk Perubahan yang terjadi tersebut juga harus efisien Contoh : Jika table nilai ditambah atribut nama_mhs dan terjadi perubahan data pada table mhs,maka perubahan tersebut harus dijalarkan ke table nilai, sehingga KF selalu terjaga.
Analisa tabel berikut : NRP
Nama
Alamat
KodeJur
NamaJur Kajur
M100
Joko
Surabaya
1002
IF
Rianto
M101
Arianto
Surabaya
1006
Ekonomi
Suprapto
M105
Adrian
Sidoarjo
1002
IF
Rianto
M107
Tuti S
Pasuruan
1008
Hukum
Sigit
Bentuk Normal tahap pertama Jika sebuah table tidak memiliki atribut bernilai banyak (multivalued attribute)
Apabila terdapat attribute yang bernilai banyak, harus didekomposisi Contoh
Bentuk Normal tahap pertama Table mhs harus di dekomposisi (tiga alternatif) Alternatif satu Masing-masing hobi dijadikan satu record, (tabel tersebut terdapat 6 record)
Alternatif dua Hobi dipecah menjadi hobi1, hobi2, dan seterusnya (dari tabel terdapat 7 kolom)
Alternatif tiga Table mhs (nim, nama_mhs, alamat, tgl_lahir) Table hobi (nim, hobi)
Bentuk Normal tahap kedua Jika atribut yang bukan primary key mempunyai ketergantungan fungsional (KF) pada key primer secara utuh. Contoh : Tabel nilai punya primary key {kode, nim} Table nilai (kode, nim, nilai) KF : kode, nim nilai Jika table nilai ditambah atribut nama. Maka : Table nilai (kode, nim, nama_mhs, nilai) KF : kode, nim nilai; nim nama_mhs. Mengakibatkan terlanggarnya Bentuk normal kedua, karena nama hanya tergantung secara parsial terhadap primary key.
Bentuk Normal tahap ketiga Merupakan bentuk alternatif, jika BCNF tidak dapat terpenuhi. Jika untuk setiap KF dengan notasi X A, dimana A mewakili semua atribut tunggal dalam table yang tidak ada di dalam X, maka : X harus superkey dari table tersebut Atau A merupakan bagian dari primary key pada table tersebut
Bentuk Normal tahap ketiga
Contoh : Jika Table mhs (nim, nama_mhs, alamat, tgl_lahir) dimana atribut alamat dipisah menjadi atribut jalan, kota, dan kode_pos
Jika Table mhs (nim, nama_mhs, jalan, kota,kode_pos, tgl_lahir) Tidak memenuhi bentuk normal ketiga. KF baru yang muncul : jalan, kota kode_pos {jalan, kota} bukan merupakan superkey. Sebagai solusi : table mhs didekomposisi menjadi table mhs dan table alamat : Table mhs (nim, nama_mhs, jalan, kota, tgl_lahir) Table alamat (alamat, kota, kode_pos)
Bentuk Normal tahap keempat dan kelima Bentuk normal keempat berkaitan dengan sifat ketergantungan banyak nilai, yang merupakan pengembangan dari ketergantungan fungsional. Bentuk normal kelima merupakan ketergantungan relasi antar table
BOYCE-CODD NORMAL FORM (BCNF)
Syarat :
Jika untuk semua KF dengan notai X Y, maka X harus merupakan super key pada table tersebut. Jika tidak, table harus didekomposisi sedemikian hingga X menjadi super key dari table-table hasil dekomposisi.
Contoh : Pada “table universal” (not BCNF) terdapat 4 KF minimum, yaitu :
Nim nam_mhs, alamat, tgl_lahir Kode_kul MataKuliah, sks, semester, waktu, ruang, nama_dos Nama_dos alamat_dos Nim, kode_kul nilai Table nilai (kode_kul, nim, nilai) Keempat table dalam kondisi BCNF.
Keuntungan Normalisasi Keuntungan bentuk normal Efek penghapusan tidak akan menghilangkan informasi yang ada Efek penambahan data insert tidak fleksibel Efek penghapusan ? Efek penghapusan ?