DBMS - Normalisasi
Ketergantungan Fungsional
Ketergantungan fungsional (FD) adalah sekumpulan batasan antara dua atribut dalam suatu relasi. Ketergantungan fungsional menyatakan bahwa jika dua tupel memiliki nilai yang sama untuk atribut A1, A2, ..., An, maka kedua tupel tersebut harus memiliki nilai yang sama untuk atribut B1, B2, ..., Bn.
Ketergantungan fungsional diwakili oleh tanda panah (→) yaitu, X → Y, di mana X secara fungsional menentukan Y. Atribut sisi kiri menentukan nilai atribut di sisi kanan.
Aksioma Armstrong
Jika F adalah himpunan dependensi fungsional maka closure dari F, dilambangkan sebagai F + , adalah himpunan semua dependensi fungsional yang secara logis diimplikasikan oleh F. Aksioma Armstrong adalah sekumpulan aturan, yang bila diterapkan berulang kali, menghasilkan penutupan dependensi fungsional .
Reflexive rule - Jika alpha adalah sekumpulan atribut dan beta adalah_subset_of alpha, maka alpha menyimpan beta.
Augmentation rule- Jika a → b memegang dan y adalah set atribut, maka ay → by juga berlaku. Artinya menambahkan atribut dalam dependensi, tidak mengubah dependensi dasar.
Transitivity rule- Sama seperti aturan transitif dalam aljabar, jika a → b bertahan dan b → c berlaku, maka a → c juga berlaku. a → b disebut sebagai fungsional yang menentukan b.
Ketergantungan Fungsional Sepele
Trivial- Jika dependensi fungsional (FD) X → Y berlaku, di mana Y adalah himpunan bagian dari X, maka hal itu disebut trivial FD. FD yang sepele selalu berlaku.
Non-trivial - Jika FD X → Y berlaku, di mana Y bukan bagian dari X, maka disebut FD non-trivial.
Completely non-trivial - Jika FD X → Y berlaku, di mana x berpotongan Y = Φ, dikatakan sebagai FD non-trivial sama sekali.
Normalisasi
Jika desain database tidak sempurna, mungkin mengandung anomali, yang seperti mimpi buruk bagi setiap administrator database. Mengelola database dengan anomali hampir tidak mungkin.
Update anomalies- Jika item data tersebar dan tidak terhubung satu sama lain dengan benar, maka hal itu dapat menyebabkan situasi yang aneh. Misalnya, ketika kami mencoba memperbarui satu item data yang salinannya tersebar di beberapa tempat, beberapa contoh diperbarui dengan benar sementara beberapa lainnya dibiarkan dengan nilai lama. Contoh seperti itu meninggalkan database dalam keadaan tidak konsisten.
Deletion anomalies - Kami mencoba menghapus rekaman, tetapi sebagian darinya dibiarkan tidak terhapus karena ketidaksadaran, datanya juga disimpan di tempat lain.
Insert anomalies - Kami mencoba memasukkan data dalam catatan yang tidak ada sama sekali.
Normalisasi adalah metode untuk menghapus semua anomali ini dan membawa database ke status yang konsisten.
Bentuk Normal Pertama
Bentuk Normal Pertama didefinisikan dalam definisi relasi (tabel) itu sendiri. Aturan ini mendefinisikan bahwa semua atribut dalam suatu relasi harus memiliki domain atom. Nilai dalam domain atom adalah unit yang tidak dapat dibagi.
Kami mengatur ulang relasi (tabel) seperti di bawah ini, untuk mengubahnya menjadi Bentuk Normal Pertama.
Setiap atribut hanya boleh berisi satu nilai dari domain yang telah ditentukan sebelumnya.
Bentuk Normal Kedua
Sebelum kita mempelajari bentuk normal kedua, kita perlu memahami yang berikut -
Prime attribute - Atribut, yang merupakan bagian dari kandidat-key, dikenal sebagai atribut prima.
Non-prime attribute - Atribut, yang bukan merupakan bagian dari kunci-prima, dikatakan sebagai atribut non-prima.
Jika kita mengikuti bentuk normal kedua, maka setiap atribut nonprima harus sepenuhnya bergantung secara fungsional pada atribut kunci prima. Artinya, jika X → A berlaku, maka seharusnya tidak ada subset Y yang tepat dari X, yang juga Y → A berlaku.
Kita lihat di sini dalam relasi Student_Project bahwa atribut kunci prima adalah Stu_ID dan Proj_ID. Menurut aturan, atribut bukan kunci, yaitu Stu_Name dan Proj_Name harus bergantung pada keduanya dan bukan pada atribut kunci prima satu per satu. Tetapi kami menemukan bahwa Stu_Name dapat diidentifikasi oleh Stu_ID dan Proj_Name dapat diidentifikasi oleh Proj_ID secara independen. Ini disebutpartial dependency, yang tidak diperbolehkan dalam Bentuk Normal Kedua.
Kami memutuskan hubungan menjadi dua seperti yang digambarkan pada gambar di atas. Jadi tidak ada ketergantungan parsial.
Bentuk Normal Ketiga
Agar relasi berada dalam Bentuk Normal Ketiga, ia harus dalam bentuk Normal Kedua dan berikut ini harus memenuhi -
- Tidak ada atribut nonprima yang secara transitif bergantung pada atribut kunci prima.
- Untuk ketergantungan fungsional non-trivial, X → A, lalu -
- X adalah kunci super atau,
- A adalah atribut prima.
Kami menemukan bahwa dalam relasi Student_detail di atas, Stu_ID adalah atribut kunci dan satu-satunya kunci utama. Kami menemukan bahwa Kota dapat diidentifikasi oleh Stu_ID serta Zip itu sendiri. Baik Zip bukan kunci super maupun City sebagai atribut utama. Selain itu, Stu_ID → Zip → Kota, jadi adatransitive dependency.
Untuk membawa relasi ini ke dalam bentuk normal ketiga, kita pisahkan relasi tersebut menjadi dua relasi sebagai berikut -
Bentuk Normal Boyce-Codd
Boyce-Codd Normal Form (BCNF) merupakan perpanjangan dari Third Normal Form dengan syarat yang ketat. BCNF menyatakan bahwa -
- Untuk ketergantungan fungsional non-trivial, X → A, X harus menjadi kunci super.
Pada gambar di atas, Stu_ID adalah super-key dalam relasi Student_Detail dan Zip adalah super-key dalam relasi ZipCodes. Begitu,
Stu_ID → Stu_Name, Zip
dan
Zip → Kota
Yang mengonfirmasi bahwa kedua relasi berada di BCNF.