Wednesday, October 21, 2015

Cara mendapatkan relasi 3NF dari Fungsional Dependensi (FD)

3NF merupakan salah satu bentuk normalisasi dari database.

Tujuan dari normalisasi adalah:

  1. Database memiliki relasi yang baik.
  2. Lossless join decomposition (bila R di-join-kan, maka akan kembali ke R semula)
  3. Sebaiknya/akan lebih baik bila dekomposisinya menjaga dependency.

Sebuah relasi R dikatakan berada pada bentuk 3NF apabila A->B pada himpunan Fungsi memenuhi salah satu dari kondisi berikut:

  1. A -> B adalah trivial.
  2. A adalah super key dari R.
  3. Setiap atribut Y (bila B-A = Y) adalah anggota CK(candidate key) dari R. (NB: tiap atribut mungkin berada pada CK yg berbeda)

Relasi dalam bentuk BCNF sudah termasuk dalam 3NF selama salah satu dari syarat di atas terpenuhi.


Contoh kasus:

Bila diketahui relasi R(A,B,C,D,G,H) dan fungsional dependency F={AB->GH , AC ->D, DG->H, CH->AD} serta candidate key CK= {A, H}.
1. Tentukan CK yang lain, jika ada yg dapat diturunkan dari FD tersebut.
2. Dekomposisikan R, bila diperlukan, hingga diperoleh relasi-relasi yang masuk dalam 3NF

Penyelesaian:

1. Mencari CK yang mungkin

- Karena A dan H adalah CK, maka AB, AC, AD, CH dan GH bukan CK.

- Cek apakah D itu CK:
{D}+ = {D} U {A,B,G,H} U {D,G,H} U {C,H,A,D} = {A,B,C,D,G,H}
karena {D}+ = R, maka D adalah CK.

- Cek apakah G itu CK:
{G}+ = {G} U {A,B,G,H} U {A,C,D} U {C,H,A,D} = {A,B,C,D,G,H}
karena {G}+ = R, maka G adalah CK.

Jadi diperoleh CK= {A,D,G,H}

2. Mencari relasi 3NF
Tentukan F canonical cover dari FD, dengan mencari ektra pada tiap fungsi.
Ditemukan pada {CH ->AD}, D adalah ekstra, sehingga menjadi {CH->A}. Karena tidak ditemukan ekstra pada ketiga fungsi yg lain, maka:
   F = {AB->GH , AC ->D, DG->H, CH->A}

-Hilangkan fungsi redundant pada F:
(a) CH->AC (aksioma augmentasi CH->A dengan C)
(b) AC->D
dengan menerapkan aksioma transitif  pada (a) dan (b) diperoleh CH->D, maka:
 F = {AB -> GH , DG -> H, CH -> D }

- Cek apakah AB->GH adalah 3NF:
{GH}-{AB}={GH}
Karena G dan H adalah anggota dari CK, maka {AB->GH} adalah bentuk 3NF.

- Cek apakah DG->H adalah 3NF:
{H}-{DG}={H}
H adalah anggota dari CK, maka {DG->H} adalah bentuk 3NF.

- Cek apakah CH->D adalah 3NF:
{D}-{CH}={D}
D adalah anggota dari CK, maka { CH->D} adalah bentuk 3NF.

Jadi relasi 3NF-nya adalah R(A,B,G,H), R(D,G,H), R(C,D,H)



Referensi:
Database system concepts 6th edition by silberschatz korth and sudarshan.
Relational database system algorithms and further dependencies.

No comments:

Post a Comment