Back to IF5101 Manajemen Data
BCNF dan Dependency Preservation
Questions/Cues
- Apa definisi Boyce-Codd Normal Form (BCNF)?
- Apa itu FD trivial?
- Mengapa
in_deptidak berada di BCNF?- Apa itu dependency preservation?
- Mengapa tidak selalu mungkin mencapai BCNF sekaligus dependency preserving?
Reference Points
- IF5101 — Relational Data Model Part 4 (Slides 18-22)
- Silberschatz, Korth, Sudarshan — Database System Concepts 7th Ed., Chapter 7.3.1-7.3.2
Definisi BCNF
Skema berada di BCNF terhadap himpunan FD jika untuk setiap FD di dengan dan , minimal satu berikut benar:
- trivial (yaitu ), atau
- adalah superkey dari .
FD trivial adalah FD yang selalu dipenuhi oleh semua instance relasi; secara umum trivial bila (mis. ).
Intuisi: setiap determinan harus berupa key — tidak ada fakta yang “ditentukan” oleh sesuatu yang bukan key.
Contoh:
in_depTidak BCNFin_dep = (ID, name, salary, dept_name, building, budget) F = { ID → name salary dept_name, dept_name → building budget }
dept_name → building budgetberlaku, tetapidept_namebukan superkeyin_dep. Jadiin_deptidak di BCNF. Dekomposisi menjadiinstructor(ID, name, salary, dept_name)dandepartment(dept_name, building, budget)menghasilkan dua skema BCNF.Dependency Preservation
Dependency preserving: FD dapat ditegakkan di dalam satu relasi tanpa harus join dua relasi atau lebih. Tidak selalu mungkin mencapai BCNF dan dependency preservation sekaligus.
Contoh:
dept_advisordept_advisor = (s_ID, i_ID, dept_name) F = { i_ID → dept_name, s_ID, dept_name → i_ID }
i_ID → dept_nameada, tetapii_IDbukan superkey → tidak BCNF.- Dekomposisi menurut BCNF:
A = (i_ID, dept_name)dengan danB = (s_ID, i_ID)dengan .- FD
s_ID, dept_name → i_IDmemakai atribut dari A dan B sekaligus, sehingga baru bisa dicek dengan join.- Maka dekomposisi ini bukan dependency preserving.
flowchart TD D["dept_advisor<br/>(s_ID, i_ID, dept_name)"] D -->|"dekomposisi BCNF"| A["A (i_ID, dept_name)<br/>i_ID → dept_name"] D --> B["B (s_ID, i_ID)<br/>tanpa FD"] A -.->|"s_ID, dept_name → i_ID<br/>perlu JOIN A dan B"| BKonsekuensi praktis: bila FD tidak bisa ditegakkan lokal, DBMS harus menjalankan join setiap kali insert/update untuk memverifikasi — mahal, atau constraint dibiarkan tidak ditegakkan.
BCNF: untuk setiap FD di , FD itu trivial atau adalah superkey.
in_deptidak BCNF karenadept_name → building budgetdengandept_namebukan superkey. Dependency preservation berarti FD bisa ditegakkan tanpa join; tidak selalu kompatibel dengan BCNF — contohdept_advisor, di mana dekomposisi BCNFA(i_ID, dept_name)+B(s_ID, i_ID)membuats_ID, dept_name → i_IDhanya bisa dicek lewat join.
Additional Information
Algoritma dekomposisi BCNF
Selama ada FD yang melanggar BCNF di : ganti dengan dan . Hasilnya selalu lossless, tetapi dependency preservation tidak dijamin. Algoritma ini bisa bernilai eksponensial untuk mengecek, namun biasanya skema praktis kecil.
Kenapa BCNF dan 3NF sama-sama dipakai
Bila dependency preservation dianggap penting (FD sulit ditegakkan lewat join), pilih 3NF. Lihat Third Normal Form dan Perbandingan dengan BCNF.
Proyek Eksplorasi Mandiri
- Buat tabel
dept_advisor+ dua tabel hasil dekomposisi BCNF. Coba masukkan data yang melanggars_ID, dept_name → i_IDdan lihat bahwa DBMS tidak menolaknya tanpa trigger/join.- Tulis
ASSERTION/trigger yang menegakkan FD tersebut dan ukur biayanya.Bacaan Lanjutan
- Silberschatz, Korth, Sudarshan. Database System Concepts, 7th Ed. — Chapter 7.3 dan 7.5 (BCNF decomposition algorithm).
- Codd, E. F. (1974). “Recent Investigations into Relational Data Base Systems” (asal BCNF).