Materi
Tabel yang sudah 3NF masih bisa menyimpan anomali bila punya lebih dari satu kunci kandidat yang saling beririsan. Buku terbuka Database Design karya Adrienne Watt (BCcampus, CC BY) menyebut bentuk normal Boyce-Codd (BCNF) sebagai kasus khusus 3NF dan merumuskannya singkat: sebuah tabel memenuhi BCNF jika, dan hanya jika, setiap determinan adalah kunci kandidat. Determinan adalah sisi kiri dependensi fungsional, yaitu A pada A → B. OpenStax Introduction to Computer Science hanya menyebut BCNF sebagai versi 3NF yang lebih tinggi untuk mengatasi anomali, tanpa rumusan lebih lanjut.
Contoh di klinik fisioterapi: tabel terapi(pasien, layanan, terapis) dengan dua aturan bisnis. Setiap pasien punya satu terapis untuk setiap layanan, dan setiap terapis hanya menangani satu layanan. Dependensinya (pasien, layanan) → terapis dan terapis → layanan, sehingga kunci kandidatnya (pasien, layanan) dan (pasien, terapis). Tabel ini lolos 3NF, karena layanan adalah bagian dari kunci kandidat, bukan kolom bukan kunci. Namun determinan terapis bukan kunci kandidat, jadi BCNF dilanggar. Anomalinya sama dengan modul 1: layanan seorang terapis tersimpan di setiap baris pasiennya, terapis baru tidak bisa dicatat sebelum punya pasien, dan menghapus pasien terakhir menghapus layanan terapisnya.
| Sebelum: terapi | Sesudah: pasien_terapis + terapis_layanan | |||
|---|---|---|---|---|
| pasien | layanan | terapis | pasien, terapis | terapis, layanan |
| Rina | Punggung | Dewa | Rina, Dewa | Dewa, Punggung |
| Joni | Punggung | Dewa | Joni, Dewa | Lusi, Lutut |
| Rina | Lutut | Lusi | Rina, Lusi |
Pemecahannya mengikuti pola Watt: dependensi yang bermasalah dipindah ke tabelnya sendiri, terapis_layanan(terapis, layanan) berkunci terapis, dan sisanya menjadi pasien_terapis(pasien, terapis). Setiap determinan kini menjadi kunci di tabelnya, dan layanan pasien tetap bisa disusun ulang dengan JOIN lewat terapis. Watt mencatat BCNF jarang dipakai, dan Microsoft menyatakan tiga bentuk normal pertama cukup untuk sebagian besar rancangan. Bentuk keempat (4NF), yang membahas dependensi bernilai banyak, hanya disebut namanya di kelas ini.