Normalisasi Basis Data: BCNF (Boyce-Codd Normal Form)

Apakah normalisasi sampai dengan BCNF itu diperlukan?

M. Ramadhan
Telematika
4 min readOct 20, 2021

--

Pendahuluan

Tujuan utama normalisasi adalah mengelompokkan atribut ke dalam relasi sehingga data gandanya minimal. Konsep normalisasi dikemukakan pertama kali oleh Codd (1970) dengan memperkenal­kan 1NF (first normal form ‘bentuk normal pertama’), dilanjutkan dengan 2NF dan 3NF (Codd, 1971). Bersama Raymond F. Boyce, Codd (1974) mendefinisikan BCNF (Boyce-Codd normal form ‘bentuk normal Boyce-Codd’).

Relasi yang memenuhi 3NF, dalam banyak kasus, biasanya sudah memenuhi BCNF. Oleh karena itu, dalam praktik, para praktisi melakukan proses normalisasi cukup sampai 3NF saja.

Relasi BCNF

Sebuah relasi memenuhi syarat BCNF jika dan hanya jika setiap determinan dalam relasi tersebut adalah candidate key. Ini berarti setiap determinan dalam relasi BCNF bernilai unik.

Ketergantungan Fungsional
Jika A dan B adalah atribut relasi R, maka B dinyatakan memiliki ketergantungan fungsional pada A (ditulis A → B), jika setiap harga A berasosiasi tepat dengan satu harga B. A dan B boleh jadi terdiri atas satu atau beberapa atribut.

Determinan ketergantungan fungsional adalah atribut atau sekum­pulan atribut yang ada pada sisi kiri anak panah.

Relasi BCNF tidak harus melalui 3NF terlebih dahulu. Pengecekan BCNF perlu dilakukan apabila relasi tersebut:
• memiliki dua composite candidate key atau lebih, dan
• sekurang-kurangnya ada sebuah atribut yang overlap.

Sebagai contoh, lihat kembali artikel sebelumnya yang membahas proses normalisasi 1NF, 2NF dan 3NF. Berikut adalah hasil normalisasi pada tahap 2NF.

Ketiga relasi di atas semuanya 2NF karena atribut bukan primary key bergantung fungsional pada keseluruhan primary key. Apakah ketiganya memenuhi BCNF?

Relasi Barang tidak memiliki composite candidate key. Determinannya yaitu KodeBarang bernilai unik dan merupakan primary key. Dengan demikian, relasi Barang telah memenuhi BCNF.

Relasi FakturPelanggan tidak memiliki composite candidate key. Determinannya yaitu NoFaktur adalah primary key. Oleh karena itu, relasi FakturPelanggan telah memenuhi BCNF.

Relasi DetailFaktur memiliki hanya sebuah composite candidate key. Determinannya yaitu KodeBarang+NoFaktur bernilai unik dan merupakan primary key. Oleh karena itu, relasi DetailFaktur telah memenuhi BCNF.

Ketiga relasi 2NF di atas semuanya telah memenuhi BCNF. Ini contoh kasus yang menunjukkan bahwa BCNF tidak harus melalui 3NF terlebih dahulu.

Relasi Belum BCNF

Relasi berikut memuat jadwal wawancara bagi calon karyawan sebuah perusahaan. —Seorang calon karyawan diwawancara hanya sekali dalam sehari. Bila dipandang perlu, wawancara dilakukan lebih dari sekali dan diadakan pada hari yang berbeda. —Pada hari yang sama, pewawancara menempati ruang yang sama.

Apakah relasi di atas memenuhi syarat BCNF? Bila dilihat lebih lanjut, relasi di atas memiliki beberapa composite candidate key, yaitu: (1) NoTes+Tanggal; (2) Tanggal+Waktu+Ruang; (3) Tanggal+Waktu+NRP. Ada dua atribut yang overlap yaitu Tanggal dan Waktu. Dengan demikian pengecekan BCNF terhadap relasi di atas layak dilakukan.

Setiap determinan adalah candidate key merupakan syarat BCNF. Dengan meninjau berbagai kemungkinan, diperoleh ketergantungan fungsional berikut.

  • NoTes+TanggalWaktu, NRP, Ruang
    Seorang calon karyawan pada satu hari diwawancara pada satu waktu oleh seorang pewawancara pada satu ruang, berarti diagram ketergantungan fungsional tersebut benar. Karena bernilai unik, determinan NoTes+Tanggal adalah candidate key.
  • Tanggal+Waktu+Ruang → NoTes+NRP
    Pada satu hari, satu waktu dan satu ruang, seorang calon karyawan diwawancarai oleh seorang pewawancara, berarti diagram ketergantungan fungsional tersebut benar. Karena bernilai unik, determinan Tanggal+Waktu+Ruang adalah candidate key.
  • Tanggal+Waktu+NRP → NoTes, Ruang
    Pada satu hari, satu waktu, seorang pewawancara mewawancarai seorang calon karyawan pada satu ruang, berarti diagram ketergantungan fungsional tersebut benar. Karena bernilai unik, determinan Tanggal+Waktu+NRP adalah candidate key.

Telah diperoleh tiga ketergantungan fungsioanal dan semua determinannya adalah candidate key. Apakah ini berarti relasi di atas sudah memenuhi syarat BCNF? Jangan tergesa-gesa menarik kesimpulan, masih ada ketergantungan fungsional berikut.

  • Tanggal+NRP → Ruang
    Pada satu hari, seorang pewawancara menempati satu ruang, berarti diagram ketergantungan fungsional tersebut benar. Determinan Tanggal+NRP bukan candidate key. karena nilainya tidak unik.

Karena ada determinan yang bukan candidate key, relasi di atas belum BCNF. Ketergantungan fungsional yang determinannya bukan candidate key, Tanggal+NRP → Ruang, dipisahkan ke dalam relasi tersendiri, sehingga diperoleh dua relasi BCNF, yaitu:
Wawancara (NoTes, Tanggal, Waktu, NRP)
Ruang (Tanggal, NRP, Ruang)

Relasi yang dihasilkan terkait satu sama lain.

  • Relasi Wawancara
    Primary key komposit : NoTes + Tanggal
    Foreign key komposit : Tanggal+NRP
  • Relasi Ruang
    Primary key komposit : Tanggal+NRP
    Foreign key : tidak ada

Penutup

Dalam banyak kasus, relasi yang memenuhi 3NF biasanya sudah memenuhi BCNF. Bila dianggap perlu, pengecekan BCNF dilakukan hanya apabila relasi tersebut memiliki sekurang-kurangnya dua composite candidate key dan paling sedikit ada sebuah atribut yang overlap.

Terima kasih sudah membaca. Jangan ragu untuk berkomentar.

--

--

M. Ramadhan
Telematika

I’m a database designer and developer, childhood in Menggala, living in Palembang.