Ketergantungan fungsional penuh adalah keadaan normalisasi database yang setara dengan standar normalisasi dari Bentuk Normal Kedua (2NF) . Singkatnya, ini berarti bahwa ia memenuhi persyaratan Bentuk Normal Pertama (1NF), dan semua atribut non-kunci secara fungsional sepenuhnya tergantung pada kunci primer.
Ini tidak serumit kedengarannya. Mari kita lihat ini lebih detail.
Ringkasan Bentuk Normal Pertama
Sebelum database dapat sepenuhnya bergantung pada fungsi, pertama-tama harus mematuhi First First Form .
Semua ini berarti bahwa setiap atribut harus memiliki satu nilai atom.
Sebagai contoh, tabel berikut tidak sesuai dengan 1NF, karena karyawan Tina terhubung ke dua lokasi, keduanya dalam satu sel:
Karyawan | Lokasi |
---|---|
John | Los Angeles |
Tina | Los Angeles, Chicago |
Mengizinkan desain ini dapat berdampak negatif terhadap pembaruan atau entri data. Untuk memastikan kepatuhan 1NF, atur ulang tabel sehingga semua atribut (atau sel kolom) memiliki satu nilai:
Karyawan | Lokasi |
---|---|
John | Los Angeles |
Tina | Los Angeles |
Tina | Chicago |
Tetapi 1NF masih belum cukup untuk menghindari masalah dengan data.
Bagaimana 2NF Bekerja untuk Memastikan Ketergantungan Penuh
Agar sepenuhnya bergantung, semua atribut kunci non-kandidat harus bergantung pada kunci primer. (Ingat, atribut kunci kandidat adalah kunci apa saja (misalnya kunci utama atau asing) yang digunakan untuk mengidentifikasi secara unik catatan basis data.
Perancang database menggunakan notasi untuk menggambarkan hubungan dependen antara atribut:
Jika atribut A menentukan nilai B, kita menulis A -> B - yang berarti bahwa B secara fungsional bergantung pada A. Dalam hubungan ini, A menentukan nilai B, sedangkan B bergantung pada A.
Misalnya, dalam tabel Departemen Karyawan berikut, EmployeeID dan DeptID keduanya kunci kandidat: EmployeeID adalah kunci utama tabel sementara DeptID adalah kunci asing.
Atribut lainnya - dalam hal ini, EmployeeName dan DeptName - harus bergantung pada kunci utama untuk mendapatkan nilainya.
Identitas pegawai | Nama karyawan | DeptID | DeptName |
---|---|---|---|
Emp1 | John | Dept001 | Keuangan |
Emp2 | Tina | Dept003 | Penjualan |
Emp3 | Carlos | Dept001 | Keuangan |
Dalam hal ini, tabel tidak sepenuhnya bergantung karena, sementara EmployeeName bergantung pada kunci utama EmployeeID, DeptName bergantung pada DeptID. Ini disebut ketergantungan parsial .
Untuk membuat tabel ini sesuai dengan 2NF, kita perlu memisahkan data menjadi dua tabel:
Identitas pegawai | Nama karyawan | DeptID |
---|---|---|
Emp1 | John | Dept001 |
Emp2 | Tina | Dept003 |
Emp3 | Carlos | Dept001 |
Kami menghapus atribut DeptName dari tabel Karyawan dan membuat Tabel baru. Departemen :
DeptID | DeptName |
---|---|
Dept001 | Keuangan |
Dept002 | Sumber daya manusia |
Dept003 | Penjualan |
Sekarang hubungan antar tabel sepenuhnya bergantung, atau dalam 2NF.
Mengapa Ketergantungan Penuh Itu Penting
Ketergantungan penuh antara atribut database membantu memastikan integritas data dan menghindari anomali data.
Misalnya, perhatikan tabel di bagian atas yang hanya mematuhi 1NF. Ini dia, lagi:
Karyawan | Lokasi |
---|---|
John | Los Angeles |
Tina | Los Angeles |
Tina | Chicago |
Tina memiliki dua catatan. Jika kami memperbarui satu tanpa menyadari bahwa ada dua, hasilnya akan menjadi data yang tidak konsisten.
Atau, bagaimana jika kita ingin menambahkan karyawan ke tabel ini, tetapi kita belum tahu Lokasinya? Kami mungkin tidak diizinkan untuk bahkan menambahkan karyawan baru jika atribut Lokasi tidak memungkinkan nilai NULL.
Ketergantungan penuh bukanlah gambaran keseluruhan, ketika datang ke normalisasi. Anda harus memastikan bahwa database Anda ada di Third Normal Form (3NF).