Ketergantungan adalah kendala yang berlaku untuk atau mendefinisikan hubungan antara atribut. Itu terjadi dalam database ketika informasi yang disimpan dalam tabel database yang sama secara unik menentukan informasi lain yang disimpan dalam tabel yang sama. Anda juga dapat mendeskripsikan ini sebagai hubungan di mana mengetahui nilai satu atribut (atau sekumpulan atribut) sudah cukup untuk memberi tahu Anda nilai atribut lain (atau kumpulan atribut) dalam tabel yang sama.
Ketergantungan basis data sering membingungkan baik pelajar maupun profesional basis data. Untungnya, mereka tidak serumit kelihatannya. Mereka dapat dijelaskan dengan menggunakan beberapa contoh. Di sini, kita akan memeriksa jenis ketergantungan basis data yang umum.
Ketergantungan Basis Data dan Ketergantungan Fungsional
Mengatakan bahwa ada ketergantungan antar atribut dalam sebuah tabel sama dengan mengatakan bahwa ada ketergantungan fungsional antara atribut tersebut. Jika ada ketergantungan dalam database sehingga atribut B bergantung pada atribut A, Anda akan menulis ini sebagai:
A -> B
Misalnya, dalam tabel yang mencantumkan karakteristik karyawan, termasuk Nomor Jaminan Sosial (SSN) dan nama, dapat dikatakan bahwa nama bergantung pada SSN (atau SSN -> nama) karena nama karyawan dapat ditentukan secara unik dari SSN. Namun, pernyataan kebalikannya (nama -> SSN) tidak benar karena lebih dari satu karyawan dapat memiliki nama yang sama tetapi selalu memiliki SSN yang berbeda.
Ketergantungan Fungsional Sepele
Ketergantungan fungsional sepele terjadi ketika Anda menjelaskan ketergantungan fungsional atribut pada kumpulan atribut yang menyertakan atribut asli. Misalnya, {A, B} -> B adalah dependensi fungsional sepele, seperti halnya {nama, SSN} -> SSN. Jenis ketergantungan fungsional ini disebut sepele karena dapat diturunkan dari akal sehat. Jelas bahwa jika Anda telah mengetahui nilai B, maka nilai B dapat ditentukan secara unik oleh pengetahuan tersebut.
Dependensi Fungsional Penuh
Ketergantungan fungsional penuh terjadi ketika Anda sudah memenuhi persyaratan untuk ketergantungan fungsional dan kumpulan atribut di sisi kiri pernyataan ketergantungan fungsional tidak dapat dikurangi lebih jauh. Misalnya, {SSN, age} -> name adalah dependensi fungsional, tetapi bukan dependensi fungsional penuh karena Anda dapat menghapus usia dari sisi kiri pernyataan tanpa memengaruhi hubungan dependensi.
Dependensi Transitif
Ketergantungan transitif terjadi ketika ada hubungan tidak langsung yang menyebabkan ketergantungan fungsional. Misalnya, A -> C adalah dependensi transitif jika benar hanya karena A -> B dan B -> C benar.
Ketergantungan Multinilai
Ketergantungan multinilai terjadi ketika keberadaan satu atau lebih baris dalam sebuah tabel menunjukkan adanya satu atau lebih baris lain dalam tabel yang sama. Misalnya, bayangkan sebuah perusahaan mobil yang memproduksi banyak model mobil, tetapi selalu membuat warna merah dan biru pada setiap modelnya. Jika Anda memiliki tabel yang berisi nama model, warna, dan tahun setiap mobil yang diproduksi perusahaan, ada ketergantungan multinilai dalam tabel tersebut. Jika ada baris untuk nama model dan tahun tertentu dengan warna biru, baris serupa juga harus sesuai dengan versi merah dari mobil yang sama.
Pentingnya Ketergantungan
Ketergantungan basis data penting untuk dipahami karena menyediakan blok bangunan dasar yang digunakan dalam normalisasi basis data, proses pengorganisasian data secara efisien dalam basis data. Misalnya:
- Agar tabel berada dalam bentuk normal kedua (2NF), tidak boleh ada kasus atribut nonprime dalam tabel yang secara fungsional bergantung pada subset dari kunci kandidat.
- Agar tabel berada dalam bentuk normal ketiga (3NF), setiap atribut nonprima harus memiliki ketergantungan fungsional nontransitif pada setiap kunci kandidat.
- Agar tabel berada dalam Bentuk Normal Boyce-Codd (BCNF), setiap dependensi fungsional (selain dependensi yang sepele) harus berada di superkey.
- Agar tabel berada dalam bentuk normal keempat (4NF), ia harus tidak memiliki dependensi multinilai.