normalisasi
FUNCTIONAL
DEPENDENCY
Functional Dependency atau
ketergantungan fungsional merupakan ketergantungan relasi suatu atribut dalam
tabel atau set entity terhadap atribut yang lainya.
Notasi: A → B
A dan B adalah atribut dari sebuah tabel. Berarti secara fungsional A
menentukan B atau B tergantung pada A, jika dan hanya jika ada 2 baris data
dengan nilai A yang sama, maka nilai B juga sama
Notasi: A →
B atau A → B
Adalah kebalikan dari notasi sebelumnya.
Contoh Functional Dependency
Tabel Nilai
Functional
Dependency dari tabel nilai
Nrp → namaMhs
Karena
untuk setiap nilai nrp yang sama, maka nilai namaMhs juga sama.
{Namakul,
nrp} → NiHuruf
Karena
attribut Nihuruf tergantung pada Namakul dan nrp secara bersama-sama. Dalam
arti lain untuk Namakul dan nrp yang sama, maka NiHuruf juga sama, karena
Namakul dan nrp merupakan key (bersifat unik).
NamaKul
→
nrp
Nrp
→
NiHuruf
BENTUK – BENTUK NORMAL
Bentuk – bentuk
normalisasi sebagai berikut :
1. Bentuk Normal Tahap Pertama (1 st Normal Form
/ 1NF)
2. Bentuk Normal Tahap Kedua (2 nd Normal Form /
2NF)
3. Bentuk Normal Tahap Ketiga (3 rd Normal Form
/ 3NF)
4. Boyce-Code Normal Form (BCNF)
5. Bentuk Normal Tahap (4 th Normal Form / 4NF)
6. Bentuk Normal Tahap (5 th Normal Form / 5NF)
1. Bentuk Normal Tahap Pertama (1 st Normal
Form / 1NF)
Pada
tahap ini dilakukan penghilangan beberapa group elemen yang berulang
agar menjadi satu harga tunggal yang berinteraksi di antara setiap baris
pada suatu tabel, dan setiap atribut harus mempunyai nilai data yang atomic
(bersifat atomic value). Atom adalah zat terkecil yang masih memiliki sifat
induknya, bila terpecah lagi maka ia tidak memiliki sifat induknya.
Syarat
normal ke satu (1-NF) antara lain:
1. setiap data dibentuk dalam flat file, data dibentuk
dalam satu record demi satu record nilai dari field berupa “atomic value”.
2. tidak ada set atribute yang berulang atau bernilai
ganda.
3. telah ditentukannya primary key untuk tabel / relasi
tersebut.
4. tiap atribut hanya memiliki satu pengertian.
Langkah
pertama yang dilakukan pada Tabel Pelanggan Biaya (pada Tabel
9.3) tersebut adalah menghilangkan elemen data yang berulang dengan
data-data Pelanggan yang sesuai pada setiap baris. Hasil dari tabel yang
telah memenuhi bentuk normal pertama dapat dilihat pada Tabel 9.4. kita
dapat mengidentifikasi primary key untuk relasi Pelanggan_Biaya yang masih
memiliki composite key (No_Pelanggan, No_Property). Pada kasus ini kita
akan memperoleh primary key yang bersifat composite key. Relasi
Pelanggan_Biaya dapat didefinisikan sebagai berikut. Pelanggan_Biaya =(No_Pelanggan,
No_Property, Nama, Alamat_Property, Tgl_Pinjam, Tgl_Selesai, Biaya,No_Pemilik,
Nama_Pemilik)
2. Bentuk Normal Tahap Kedua (2 nd Normal
Form / 2NF)
Bentuk normal kedua didasari atas konsep full functional
dependency (ketergantungan fungsional sepenuhnya) yang dapat didefinisikan
sebagai berikut. Jika A adalah atribut-atribut dari suatu relasi, B
dikatakan full functional dependency (memiliki ketergantungan fungsional
terhadap A, tetapi tidak secara tepat memiliki ketergantungan fungsional dari
subset (himpunan bagian) dari A.
Syarat normal kedua (2-NF) sebagai berikut.
1. Bentuk data telah memenuhi kriteria bentuk normal kesatu.
2. Atribute bukan kunci (non-key) haruslah memiliki
ketergantungan fungsional sepenuhnya (fully functional dependency) pada
kunci utama / primary key.
Tabel Tabel Pelanggan Biaya dalam bentuk normal
kedua (2-NF)
3. Bentuk Normal Tahap Ketiga (3 rd Normal
Form / 3NF)
Walaupun relasi 2-NF memiliki redudansi yang lebih sedikit
dari pada relasi 1-NF,
namun relasi tersebut masih mungkin mengalami kendala bila
terjadi anomaly
peremajaan (update) terhadap relasi tersebut.
Misalkan kita akan melakukan update terhadap nama dari
seorang Pemilik (pemilik), seperti Durki (No_Pemilik: CO93), kita harus melakukan
update terhadap dua baris dalam relasi Property_Pemilik (lihat Tabel 9.5, (c)
relasi Property_Pemilik). Jika kita hanya mengupdate satu baris saja, sementara
baris yang lainnya tidak, maka data didalam database tersebut akan inkonsisten
/ tidak teratur. Anomaly update ini disebabkan oleh suatu ketergantungan
transitif (transitive dependency). Kita harus menghilangkan ketergantungan
tersebut dengan melakukan normalisasi ketiga (3-NF).
Syarat normal ketiga (Third Normal Form / 3 NF) sebagai
berikut.
1. Bentuk data telah memenuhi kriteria bentuk normal kedua.
2. Atribute bukan kunci (non-key) harus tidak memiliki
ketergantungan transitif, dengan kata lain suatu atribut bukan kunci (non_key)
tidak boleh memiliki ketergantungan fungsional (functional dependency) terhadap
atribut bukan kunci lainnya, seluruh atribut bukan kunci pada suatu relasi
hanya memiliki ketergantungan fungsional terhadap priamry key di relasi itu
saja. Seluruh atribut non-primary key pada relasi Pelanggan dan Biaya di
atas terlihat memiliki ketergantungan fungsional (functional dependency)
terhadap primary key dari masing-masing tabel / relasi. Relasi / tabel
Pelanggan dan Biaya di atas tidak memiliki ketergantungan transitif
(transitive dependency), sehingga tabel tersebut telah memenuhi kriteria
normal ketiga (3-NF).
Seluruh atribut non-primary key pada relasi Property_Pemilik
di atas terlihat memiliki ketergantungan fungsional (functional
dependency) terhadap primary key, kecuali Nama_Pemilik yang masih memiliki
ketergantungan fungsional (functional dependency) terhadap No_Pemilik.
Inilah contoh ketergantungan dari transitif (transitive dependency), yang
terjadi ketika atribut non-primary key (Nama_Pemilik) bergantung secara
fungsi terhadap satu atau lebih atribut non-primary key lainnya (No_Pemilik).
Kita harus menghilangkan ketergantungan transitif (transitive dependency)
tersebut dengan menjadikan relasi Property_Pemilik menjadi 2 relasi /
tabel dengan format / bentuk sebagai berikut.
· Relasi / Tabel Property_Untuk_Pemilik yang terdiri dari
atribut-atribut:
No_property â Alamat_Property, Biaya, No_Pemilik
{No_property sebagai primary key}
· Dan relasi Pemilik yang terdiri dari atribut-atribut:
No_Pemilik â Nama_Pemilik
{No_Pemilik sebagai primary key}
Hasil akhir normalisasi tabel Pelanggan_Biaya sampai ke
bentuk normal ketiga adalah
sebagai berikut:
Seluruh atribut bukan kunci pada suatu relasi hanya memiliki
ketergantungan fungsional terhadap primary key di relasi itu saja.
4. Boyce-Code Normal Form (BCNF)
Bentuk BCNF
terpenuhi dalam sebuah tabel, jika untuk setiap functional dependency terhadap
setiap atribut atau gabungan dalam bentuk: X
-> Y
Maka X adalah Super Key. Jika tidak, maka tabel tersebut harus didekomposisi
berdasarkan functional dependency yang ada, sehingga X menjadi super key dati tabel – tabel hasil dekomposisi.
Setiap tabel dalam
BCNF merupakan 3NF,. Akan tetapi setiap 3NF belum tentu termasuk BCNF.
Perbedaannya , untuk functional dependency X -> A, BCNF tidak membolehkan A
sebagai bagian dari primary key.