Tugas 5 (921411058)
NORMALISASI DATABASE
Normalisasi database ini dilakukan agar kita dapat menentukan foreign key secara tepat dan juga agar redundancy dalam suatu database menjadi minimal.
Normalisasi basis data ini juga digunakan agar anomali tidak terjadi dalam suatu basis data.
Anomali terjadi karena ada proses insert, delete dan modifikasi suatu data.
Contoh dalam anomali :
Tabel PegawaiCabang.
NIK Nama IdCabang AlmtCabang Telp 100 Beno 001 Jl. Kariman 0218999 200 Niknu 002 Jl. Pecangan 0219999 300 Anik 001 Jl. Kariman 0218999
Perhatikan tabel diatas :
Anomali bisa saja terjadi ketika adanya proses insert.
“bayangkan ketika ada suatu cabang baru dalam kantor tersebut, maka boleh jadi kantor cabang tersebut belum mempunyai pegawai, akan tetapi jika tabelnya seperti itu, maka idCabang, AlmtCabang, Telp tidak akan dapat di masukkan dalam tabel tersebut” inilah yang dinamakan anomali karena proses insert
Anomali bisa saja terjadi ketika adanya proses delete
“bayangkan jika Niknu keluar dari kantor tersebut (misal mengundurkan diri atau seperti itu). Maka Kantor cabang 002 seolah-olah akan menjadi hilang, padahal secara fakta kantor cabat 002 itu masih ada hanya saja memang belum ada pegawai lagi”. Inilah yang dinamakan anomali karena proses delete.
Anomali bisa saja terjadi ketika adanya proses modifikasi
“Ketika kita mengedit alamat suatu kantor cabang 001, maka semua alamat yang mempunyai id 001 harus diedit sedemikian hingga, hal ini tentu tidak efektif dan juga rawan akan perbedaan data” inilah yang dinamakan anomali karena proses modifikasi
Normal Form yang biasa digunakan ada 3 yaitu 1 NF (First Normal Form), 2NF(Second Normal Form), dan 3NF(Third Normal Form)
Mari kita bahas Normal Form pertama
Normal Form pertama kita hanya melihat satu baris dan satu kolom. Jika kita mengiris satu baris dan satu kolom dan hanya mendapatkan satu nilai dalam suatu cell tersebut maka tabel itu sudah memenuhi normalForm pertama. Akan tetapi jika ada dua data dalam cell tersebut, maka kita harus memecah tabel tersebut.
Contoh :
IdCabang NamaCabang AlmtCabang Telp 001 MawarOffice Jl. Kariman 0218999, 0219888 002 MelatiOffice Jl. Pecangan 0219999
Dalam tabel diatas terlihat bahwa Telp ada yang mempunyai dua nilai, oleh karena itu harus dipecah menjadi dua tabel baru.
IdCabang NamaCabang AlmtCabang 001 MawarOffice Jl. Kariman 002 MelatiOffice Jl. Pecangan
Telp IdCabang 0218999 001 0219888 001 0219999 002
Nah jika seperti yang diatas sudah memenuhi normal yang pertama
Ok, setelah di check dengan Normal yang pertama, sekarang langkah selanjutnya yaitu dengan mengecekNormal kedua.
Disebut Normal kedua jika ada composite key(Primary key yang dibentuk oleh dua primary key atau lebih), attribut yang lain harus bergantung penuh terhadap composite key tersebut, tidak boleh bergantung parsial terhadap salah satu primary key.
Contoh :
NIK IdCabang Jabatan Nama AlmtCabang Telp 100 001 Tukang Sapu Beno Jl. Kariman 0218999 100 002 Direktur Beno Jl. Pecangan 0219999 200 002 Manajer Niknu Jl. Pecangan 0219999 300 001 Sopir Anik Jl. Kariman 0218999
Dalam hal ini, Kita bisa saja mendapatkan Nama dari PK NIK saja tanpa perlu mengetahui IdCabang. Seperti juga AlmtCabang, gak harus menggunakan PK NIK, sudah dapat mengetahuinya, ok untuk mbenerinnya sekarang kita lakukan normalisasi. Hasilnya adalah seperti ini :
NIK IdCabang Jabatan 100 001 Tukang Sapu 100 002 Direktur 200 002 Manajer 300 001 Sopir
NIK Nama 100 Beno 100 Beno 200 Niknu 300 Anik
IdCabang AlmtCabang Telp 001 Jl. Kariman 0218999 002 Jl. Pecangan 0219999 002 Jl. Pecangan 0219999 001 Jl. Kariman 0218999
Nah ketika sudah di normalkan seperti yang diatas berarti, sehingga attribut-attribut yang lainnya itu bergantung penuh terhadap PK.
Normal Ketiga
Setelah dilakukan Normal satu dan Normal dua, yang terakhir kita lakukan adalah melakukan Normal ketiga, yaitu menghilangkan bergantung transitif. Apa jal iku ?
Gini, Jika B Bergantung penuh pada A (A -> B) dan C bergantung pada B (B->C) maka C adalah bergantung transitif terhadap A dan B( A tidak bergantung penuh pada B dan C). <<Tambah mumed mesti haha.
Contoh :
NIK Nama IdCabang AlmtCabang Telp 100 Beno 001 Jl. Kariman 0218999 200 Niknu 002 Jl. Pecangan 0219999 300 Anik 001 Jl. Kariman 0218999
AlmtCabang dan Telp itu kan bisa didapat hanya dari IdCabang, sehingga IdCabang itu berarti bergantung Transitif (berarti bisa jadi bergantung transitif itu sakjane PK, tapi nggak jadi PK).
Normalnya gini
NIK Nama 100 Beno 200 Niknu 300 Anik
IdCabang AlmtCabang Telp 001 Jl. Kariman 0218999 002 Jl. Pecangan 0219999
Ok selesai, yang tadi gak PK, dipisah dijadiin PK.