Anda di halaman 1dari 18

Normalisasi adalah teknik perancangan yang banyak digunakan sebagai pemandu dalam

merancang basis data relasional. Pada dasarnya, normalisasi adalah proses dua langkah yang
meletakkan data dalam bentuk tabulasi dengan menghilangkan kelompok berulang lalu
menghilangkan data yang terduplikasi dari table relasional (www.utexas.edu).

Istilah Normalisasi berasal dari E. F.Codd, salah seorang perintis teknologi basis data.
Selaindipakai sebagai metodologi tersendiri untuk menciptakan struktur tabel 9relasi) dalam
basis data (dengan tujuan utnuk mengurangi kemubaziran data) , normalisasi terkadang hanya
diipakai sebagai perangkat verifikasi terhadap tabel-tabel yang dihasilkan oleh metodologi lain (
misalnya E-R). Normalisasi memberikan panduan yang sangat membantu bagi pengembang
untuk mencegah penciptaan struktur tabel yang kurang fleksibel atau mengurangi keflekxibelan.
Kroenke mendefinisikan normalisasi sbagai proses untuk mengubah suatu relasi yang memiliki
masalah tertentu ke dalam dua buah relasi atau lebih yang tida memiliki masalah tersebut.
Masalah yang dimaksud olej kroenke ini sering disebut dengan istilah anomali. ( Pada beberapa
literatur, istilah relasi yang digunakan pada bab ini terkadang digantikan dengan tabel. Istilah
relasi digunakan pada bab ini dikarenakan definisi tentang normalisasi memang
menggunakan istilah relasi).
Teori normalisasi didasarkan pada konsep bentuk normal. Sebuah table relasional
dikatakan berada pada bentuk normal tertentu jiak table memenuhi himpunan batasan tertentu.
Ada lima bentuk normal yang telah ditemukan.

KONSEP DASAR

Normalisasi adalah bagian perancangan basisdata. Tanpa normalisasi, system basisdata


menjadi tidak akurat, lambat, tidak efisien, serta tidak memberikan data yang diharapkan
(www.microsoft-accessolution.co.uk)

Pada waktu normalisasi basisdata, ada empat tujuan utama yang harus dicapai, yaitu :

1. Mengatur data dalam kelompok-kelompok sehingga masing-masing kelompok


hanya menangani bagian kecil system.
2. Meminimalkan jumlah data berulang dalam basisdata
3. Membuat basisdata yang datanya diakses dan dimanipulasi secara cepat dan efisien
tanpa melupakan integritas data
4. Mengatur data sedemikian rupa sehingga ketika memodifikasi data, anda hanya
mengubah pada satu tempat.

Perancang basisdata terkadang menyebut keempat tujuan dengan istilah integritas data, integritas
referensial, dan pengaksesan data.

Tujuan normalisasi adalah membuat kumpulan table ralasional yang bebas dari data
berulang dan dapat dimodifikasi secara benar dan konsisten. Ini berarti bahwa semua table pada
basisdata relasional harus berada pada bentuk normal ketiga (3NF). Sebuah table relasional
berada pada 3NF jika dan hanya jika semua kolom bukan kunci adalah (a) saling independen dan
(b) sepenuhnya tergantung pada kunci utama. Saling independen berarti bahwa tidak ada kolom
bukan kunci yang tergantung pada sembarang kombinasi kolom lainnya. Dua bentuk normal
pertama adalah langkah antara untuk mencapai tujuan, yaitu mempunyai semua table dalam 3NF
(Stephen and Plew, 2000).

ATURAN NORMALISASI

Berikut adalah aturan-aturan normalisasi :

1. Hilangkan kelompok berulang-buat table terpisah untuk setiap himpunan atribut yang
berhubungan dan tentukan kunci utama pada masing-masing table.
2. Hilangkan data berulang- jika sebuah atribut hanya tergantung pada sebagian kunci
utama gabungan, pindahkan atribut ke table lain.
3. Hilangkan kolom yang tidak tergantung pada kunci- jika atribut tidak tergantung pada
kunci, pindahkan atribut ke table lain.
4. Pisahkan relasi majemuk-tidak ada table yang bisa mengandung data atau lebih relasi 1:n
atau n:m yang tidak berhubungan langsung.
5. Pisahkan relasi majemuk yang berhubungan secara semantic-ada batasan pada informasi
yang memperbolehkan pemisahan relasi many to many yang berhungan secara logis.
6. Bentuk normal optimal-sebuah model hanya diabtasi oleh fakta sederhana
7. Bentuk normal domain-key-sebuah model harus terbebas dari semua anomaly
(www.datamodel.org).
Anomali
Anomali adalah proses pada basis data yang memberikan efek samping yang tidak diharapkan (
misalnya menyebabkan ketidakonsistenan data atau membuat suatu data menjadi hilang ketika
data dihapus)
Macam Anomali terdiri dari
Anomali peremajaan,
Anomali Penghapusan, dan
Anomali penyisipan
Anomali peremajaan
Anomali ini terjadi bila ada perubahan pada sejumlah data yang mubazir, tetapi tidak seluruhnya
diubah. Contoh : Tabel Pesanan
Pemasok Kota Barang Jumlah
Kartika Jakarta Mouse 5
Citra Bandung Monitor 2
Yudi Medan CPU 2
Citra Bandung Printer 1

Seandainya Citra dengan kota Bandung pindah ke Bogor maka pengubahan data hanya dilakukan
pada data pertama menjadi : Tabel Pesanan
Pemasok Kota Barang Jumlah
Kartika Jakarta Mouse 5
Citra Bogor Monitor 2
Yudi Medan CPU 2
Citra Bandung Printer 1

Di sini terlihat bahwa data tentang pemasok Citra tidak sama yang menyebabkan
ketidakkonsistenan data.
Anomali Penyisipan
Anomali ini terjadi pada saat penambahan data ternyata ada elemen yang kosong dan elemen tsb
justru menjadi key. Contoh : Tabel Kursus
NoSiswa Kursus Biaya
10 Bhs.Inggris 60000
10 Bhs.Perancis 80000
10 Bhs.Jepang 70000
15 Bhs.Inggris 60000
20 Bhs.Jepang 70000

Misalnya akan dibuka kursus baru yaitu Bhs.Jerman dengan biaya 75000 akan tetapi belum ada
seorangpun yang ikut kursus ini, shg data menjadi : Tabel Kursus
NoSiswa Kursus Biaya
10 Bhs.Inggris 60000
10 Bhs.Perancis 80000
10 Bhs.Jepang 70000
15 Bhs.Inggris 60000
20 Bhs.Jepang 70000
Bhs.Jerman 75000

Anomali penghapusan
Anomali ini terjadi apabila dalam satu baris/ tuple ada data yang akan dihapus sehingga
akibatnya terdapat data lain yang hilang. Contoh pada table kursus data NoSiswa 20 akan
dihapus karena sudah tidak ikut kursus lagi sehingga akibatnya data kursus bhs jepang dan biaya
70000 akan ikut terhapus.
NoSiswa Kursus Biaya
10 Bhs.Inggris 60000
10 Bhs.Perancis 80000
10 Bhs.Jepang 70000
15 Bhs.Inggris 60000
Bhs.Jerman 75000
Dependensi (Ketergantungan)
Konsep dasar pada tahap normalisasi yang menjelaskan hubungan atribut atau secara lebih
khusus menjelaskan nilai suatu atribut yang menentukan atribut lainnya.
Macam-macam dependensi, yaitu :
Dependensi fungsional
Definisi : Suatu atribut Y mempunyai dependensi fungsional terhadap atribut X jika dan hanya
jika setiap nilai X berhubungan dengan sebuah nilai Y.
Notasi : X --> Y (X secara fungsional menentukan Y)
Contoh : Tabel Pesanan
Pembeli Kota Barang Jumlah
P1 Yogya B1 10
P1 Yogya B2 5
P2 Jakarta B1 4
P2 Jakarta B2 7
P3 Solo B3 6
P3 Solo B4 6

Pembeli secara fungsional menentukan kota, sebab setiap pembeli yang sama mempunyai kota
yang sama, dengan demikian : Pembeli --> Kota
contoh lain : {Pembeli, Barang} --> Jumlah
Keterangan:
Bagian yang terletak disebelah kiri tanda panah biasa disebut DETERMINAN /
PENENTU dan bagian yang terletak di sebelah kanan panah disebut DEPENDENSI /
YANG TERGANTUNG.
Tanda {} biasanya digunakan untuk menentukan lebih dari satu atribut sebagai penentu
atau sebagai yang tergantung.
Dependensi fungsional sepenuhnya
Definisi : Suatu atribut Y mempunyai dependensi fungsional penuh terhadap X jika
Y mempunyai dependensi fungsional terhadap X dan/atau
Y tidak memiliki dependensi terhadap bagian dari X
Contoh : Pembeli --> Kota
{Pembeli, Barang} --> Jumlah
Intinya : Kota mempunyai dependensi fungsional terhadap Pembeli atau {Pembeli, Barang}
tapi kota mempunyai dependensi fungsional sepenuhnya terhadap pembeli bukan barang.
Dependensi Total
Definisi : Suatu atribut Y mempunyai dependensi total terhadap atribut X jika
Y memiliki dependensi fungsional terhadap X dan
X memiliki dependensi fungsional terhadap Y
Notasi : X<--> Y
Contoh : Tabel Pemasok
KodePemasok NamaPemasok Kota
K1 Kartika Jakarta
C1 Citra Bandung
C2 Candra Jakarta

Pada kasus ini KodePemasok <-->NamaPemasok, karena setiap kode tidak mempunyai nama
yang sama.
Dependensi Transitif
Definisi : Atribut Z mempunyai dependensi transitif terhadap X bila :
Y memiliki dependensi fungsional terhadap X
Z memiliki dependensi fungsional terhadap Y
Contoh :
Kuliah Ruang Tempat Waktu
Jarkom Merbabu Gedung Utara Senin
Basis Data Arjuna Gedung Selatan Selasa
Matematika Merapi Gedung Barat Rabu
Fisika Merbabu Gedung Timur Kamis

Relasi :
Kuliah --> {Ruang, Waktu}
Ruang --> Tempat
Terlihat bahwa : Kuliah --> Ruang --> Tempat
Dengan demikian Tempat mempunyai dependensi transitif terhadap kuliah

Diagram Dependensi Fungsional (Diagram DF)


Diagram Dependensi Fungsional (Diagram DF) Adalah diagram yang digunakan untuk
menggabarkan dependensi fungsional. Diagram ini menunjukkan hubungan antara atribut yang
menjadi penentu atribut lainnya, dengan hubungan yang dinyatakan dengan tanda panah. Seperti
contoh diatas dapat digambarkan diagram DF sebagai berikut :

Dekomposisi
Pada tahap normalisasi sering kali terjadi pemecahan table kedalam bentuk dua atau lebih relasi.
Proses pemecahaan ini disebut dengan dekomposisi. Syarat : Tidak ada informasi yang hilang
ketika suatu relasi dipecah menjadi relasi-relasi lain. Contoh : Terdapat suatu relasi awal sebagai
berikut :
Nim Nama Program Studi
95001 Andi Ekonomi
95002 Vira Teknik
95003 Andi Fisika

Akan dibentuk kedalam dekomposisi tak hilang menjadi :


Nim Nama Nim Program Studi
95001 Andi 95001 Ekonomi
95002 Vira 95002 Teknik
95003 Andi 95003 Fisika

Pada relasi awal dapat diketahui informasi sebagai berikut : 95001 adalah ANDI program studi
Ekonomi. Setelah proses dekomposisi tak hilang hasilnya adalah sama 95001 adalah ANDI dan
95001 program studi Ekonomi. Contoh dekomposisi hilang adalah
Nim Nama Nama Program Studi
95001 Andi Andi Ekonomi
95002 Vira Vira Teknik
95003 Andi Andi Fisika

95001 bernama ANDI, tetapi ANDI dengan program studi Ekonomi atau Fisika?
KETERGANTUNGAN FUNGSIONAL

Konsep ketergantungan fungsional adalah dasar untuk tiga bentuk normal pertama.
Sebuah kolom y suatu table relasional R dikatakan tergantung secara fungsional pada kolom x
jika dan hanya jika setiap nilai x pada R berhubungan dengan tepat satu nilai y pada suatu saat
tertentu, x dan y bisa berupa gabungan kolom. Mengatakan bahwa kolom y tergantung secara
fungsional pada x sama dengan mengatakan bahwa nilai kolom x menentukan nilai kolom y. Jika
kolom x adalah kunci utama, maka semua kolom pada table relasional R harus tergantung secara
fungsional pada x.

Notasi ketergantungan fungsional adalah :

R.x R.y

Notasi dapat dibaca bahwa pada table relasional bernama R, kolom x secara fungsional
menentukan kolom y.

Ketergantungan fungsional penuh diterapkan pada table dengan kunci gabungan. Kolom
y pada table relasional R tergantung sepenuhnya pada x jika kolom y tergantung secara
fungsional pada himpunan bagian dari x. fungsional penuh berarti bahwa ketika sebuah kunci
utama adalah gabungan, yaitu terbentuk dari dua atau lebih kolom, maka kolom lainnya harus
ditentukan oleh seluruh kolom yang membentuk kunci utama dan tidak hanya beberapa kolom.

Secara sederhana, kita dapat mengatakan bahwa normalisasi adalah proses


menghilangkan data berulang dari table relasional dengan memecah table relasional menjadi
table-tabel yang lebih kecil. Tujuannya adalah agar hanya mempunyai kunci utama pada sebelah
kiri ketergantungan fungsional. Supaya benar, pemecahan table haruslah lossless. Ini berarti
table-tabel baru dapat digabungkan kembali dengan natural join agar menghasilkan table asli
tanpa membentuk data berulang.

BENTUK NORMAL PERTAMA (1NF)

Contoh yang kita gunakan disini adalah sebuah perusahaan yang mendapatkan barang
dari sejumlah pemasok. Masing-masing pemasok benda pada satu kota. Sebuah kota dapat
mempunyai lebih dari satu pemasok dan masing-masing kota mempunyai kode status tersendiri.
Masing-masing pemasok bisa menyediakan banyak barang. Table relasionalnya dapat dituliskan
sebagai berikut :

PEMASOK (p#, status, kota, b#, qty ) dimana

p# : kode pemasok (kunci utama)

status : kode status kota

kota : nama kota

b# : barang yang dipasok

qty : jumlah barang yang dipasok

supaya bisa menggabungkan jumlah barang yang dipasok (qty) secara unik dengan barang (b#)
dan pemasok (p#), kita menggunakan kunci utama gabungan yang tersusun dari b# dan p#.

Sebuah table relasional secara definisi selalu berada dalam bentuk normal pertama.
Semua nilai pada kolom-kolomnya adalah atomic. Ini berarti kolom-kolom tidak mempunyai
nilai berulang. Gambar 4.1 menunjukkan table pemasok dalam 1NF.

Pemasok

p# Status Kota b# Qty


p1 20 Yogyakarta b1 300
p1 20 Yogyakarta b2 200
p1 20 Yogyakarta b3 400
p1 20 Yogyakarta b4 200
p1 20 Yogyakarta b5 100
p1 20 Yogyakarta b6 100
p2 10 Medan b1 300
p2 10 Medan b2 400
p3 10 Medan b2 200
p4 20 Yogyakarta b2 200
p4 20 Yogyakarta b4 300
p4 20 Yogyakarta b5 400

Gambar : Tabel bentuk normal pertama (1NF)

Meskipun berada pada 1NF, table pemasok mengandung data berulang. Sebagai contoh,
informasi tentang lokasi pemasok dan status lokasi harus diulang untuk setiap barang yang
dipasok. Perulangan menyebabkan apa yang disebut update anomalies. Update anomalies adalah
masalah yang timbul ketika informasi ditambahkan, dihapus, atau diupdate. Sebagai contoh
anomaly berikut dapat terjadi pada table pemasok:

1. INSERT. Fakta bahwa pemasok tertentu (p5) berlokasi pada kota tertentu (Bandung)
tidak dapat ditambahkan hingga mereka memasok barang.
2. DELETE. Jika sebuah baris dihapus, maka yang hilang tidak hanya informasi tentang
barang dan jumlahnya, tetapi juga informasi tentang pemasok.
3. UPDATE. Jika pemasok p1 pindah dari Yogyakarta ke Jakarta, maka enam baris harus
di-update karena adanya perubahan.

BENTUK NORMAL KEDUA (2NF)

Definisi bentuk normal kedua menyatakan bahwa table dengan kunci utama gabungan
hanya dapat berada pada 1NF, tetapi tidak pada 2NF. Sebuah table relasional berada pada bentuk
normal kedua jika dia berada pada 1NF dan setiap kolom bukan kunci yang sepenuhnya
tergantung pada kunci utama. Ini berarti bahwa setiap kolom kunci harus tergantung pada
seluruh kolom yang membentuk kunci utama. Table pemasok berada pada 1NF, tetapi tidak pada
2NF karena status dan kota tergantung secara fungsional hanya pada kolom p# dari kunci
gabungan (p#, b#). Ini dapat digambarkan dengan membuat daftar ketergantungan fungsional:

P# kota, status

Kota status

(p#, b#) qty

Proses mengubah 1NF ke 2NF adalah :


1. Tentukan sembarang kolom penentu selain kunci gabungan dan kolom-kolom yang
ditentukannya.
2. Buat dan beri nama table baru untuk masing-masing penentu dan kolom-kolom yang
ditentukannya.
3. Pindahkan kolom-kolom yang ditentukan dari table asal ke table baru. Penentu akan
menjadi kunci utama pada table baru.
4. Hapus kolom yang baru dipindahkan dari table asal, kecuali penentu yang akan berfungsi
sebagai kunci tamu.
5. Table asal bisa diberi nama baru.

Pada contoh, kita memindahkan kolom p#, status, dan kota ke table baru yang disebut
PEMASOK2. Kolom p# menjadi kunci utama table ini. Gambar dibawah ini menunjukkan
hasilnya.

PEMASOK2 BARANG

p# Status kota
p1 20 Yogyakarta
p2 10 Medan
p3 10 Medan
p4 20 Yogyakarta
p5 30 Bandung
p# b# qty
p1 b1 300
p1 b2 200
p1 b3 400
p1 b4 200
p1 b5 100
p1 b6 100
p2 b1 300
p2 b2 400
p3 b2 200
p4 b2 200
p4
Gambar : Tabel bentuk normal kedua (2NF) b4 300
p4 b5 400
Table masig mengandung anomaly pada contoh,
PEMASOK2, yaitu :

1. INSERT. Fakta bahwa kota tertentu mempunyai status tertentu (Semarang mempunyai
status 40) tidak dapat dimasukkan hingga ada pemasok di kota tersebut.
2. DELETE. Menghapus sembarang baris pada PEMASOK2 akan menghilangkan
informasi status tentang kota tersebut serta hubungan antara pemasok dan kota.

BENTUK NORMAL KETIGA (3NF)

Bentuk normal ketiga mengharuskan semua kolom pada table relasional tergantung hanya
pada kunci utama. Secara definisi, sebuah table berada pada bentuk normal ketiga (3NF) jika
table sudah berada pada 2NF dan setiap kolom yang bukan kunci tidak tergantung secara transitif
pada kunci utamanya. Dengan kata lain, semua atribut bukan kunci tergantung secara fungsional
hanya pada kunci utama. Table BARANG sudah dalam bentuk normal ketiga. Kolom bukan
kunci, qty, tergantung sepenuhnya pada kunci utama (p#,b#). PEMASOK masih berada pada
2NF, tetapi belum berada pada 3NF karena dia mengandung ketergantungan transitif.
Ketergantungan transitif terjadi ketika sebuah kolom bukan kunci, yang ditentukan oleh kunci
utama, menentukan kolom lainnya. Konsep ketergantungan transitif dapat digambarkan dengan
menunjukkan ketergantungan fungsional pada PEMASOK2, yaitu :

PEMASOK2.p# PEMASOK2.status

PEMASOK2.p# PEMASOK2.kota

PEMASOK2.kota PEMASOK2.status

Perlu dicatat bahwa PEMASOK2. Status ditentukan, baik oleh kunci utama, p#, maupun kolom
bukan kunci, kota.
Proses mengubah table menjadi 3NF adalah :

1. Tentukan semua penentu selain kunci utama dan kolom yang ditentukannya.
2. Buat dan beri nama table baru untuk masing-masing penentu dan kolom yang
ditentukannya.
3. Pindahkan kolom yang ditentukan dari table asal ke table baru. Penentu menjadi kunci
utama table baru.
4. Hapus kolom yang baru saja dipindahkan dari table asal, kecuali penentu yang akan
berfungsi sebagai kunci tamu.
5. Table asal bisa diberi nama baru.

Untuk mengubah PEMASOK2 menjadi 3NF, kita membuat table baru yang disebut
KOTA_STATUS dan memindahkan koloom kota dan status ke table baru. Status dihapus dari
table asal, kota tetap dibiarkan karena akan berfungsi sebagai kunci asing bagi
KOTA_STATUS, dan table asal diberi nama baru PEMASOK_KOTA. Gambar berikut
menunjukkan hasilnya.

PEMASOK_KOTA KOTA_STATUS
P# Kota kota Status
P1 Yogyakarta Yogyakarta 20
P2 Medan Medan 10
P3 Medan Bandung 30
P4 Yogyakarta Semarang 40
P5 Bandung

Perubahan ke 3NF menghasilkan tiga table dan dapat dinyatakan dalam pseudo SQL sebagai
berikut :

BARANG (p#,b#,qty)

Kunci utama (p#,b#)

Foreign Key (p#) references PEMASOK_KOTA.p#

PEMASOK_KOTA (p#,kota)

Kunci utama (p#)

Foreign Key (kota) references KOTA_STATUS.kota


KOTA_STATUS (kota, status)

Kunci utama (kota)

Keuntungan bentuk normal ketiga adalah menghilangkan data berulang sehingga akan
menghemat ruang dan mengurangi anomaly.

Sebagai contoh, peningkatan pada coontoh table diatas adalah :

1. INSERT. Fakta tentang status sebuah kota , Semarang mempunyai status 40, dapat
ditambahkan meskipun tidak ada pemasok di kota tersebut. Demikian pula, fakta tentang
pemasok baru dapat ditambahkan meskipun mereka belum memasok barang.
2. DELETE. Informasi tentang barang yang dipasok dapat dihapus tanpa menghilangkan
tentang pemasok atau kota.
3. UPDATE. Perubahan lokasi pemasok atau status suatu kota hanya membutuhkan
modifikasi satu baris.

BENTUK NORMAL BOYCE-CODE (BCNF)

Setelah 3NF, semua masalah normalisasi hanya melibatkan table yang mempunyai tiga
kolom atau lebih dan semua kolom adalah kunci. Banyak praktisi berpendapat bahwa
menempatkan entitas pada 3NF sudah cukup karena sangat jarang entitas yang berada pada 3NF
bukan merupakan 4NF dan 5NF. Lebih lanjut, mereka berpendapat bahwa keuntungan yang
didapat dari mengubah entitas ke 4NF dan 5NF sangat kecil sehingga tidak perlu dikerjakan.

Bentuk normal Boyce-Code (BCNF) adalah versi 3NF yang lebih teliti dan berhubungan
dengan table relasional yang mempunyai (a) banyak kunci kandidat, (b) kunci kandidat
gabungan, dan (c) kunci kandidat yang saling tumpang tindih.

BCNF didasarkan pada konsep penentu. Sebuah kolom penentu adalah kolom dimana
kolom-kolom lain sepenuhnya tergantung secara fungsional. Sebuah table relasional berada pada
BCNF jika dan hanya jika setiap penentu adalah kunci kandidat.

BENTUK NORMAL KEEMPAT (4NF)

Sebuah table relasional berada pada bentuk normal keempat (4NF) jika dia dalam BCNF
dan semua ketergantungan multivalue merupakan ketergantungan fungsional.
Bentuk normal keempat (4NF) didasakan pada konsep ketergantungan multivalue
(MVD). Sebuah kertergantungan multivalue terjadi ketika dalam sebuah table relasional yang
mengandung setidaknya tiga kolom, satu kolom mempunyai banyak baris bernilai sama, tetapi
kolom lain berbeda. Definisi secara formal diberikan oleh CJ Date, yaitu :

Misalnya, ada sebuah table relasional R dengan kolom A, B, dan C, maka R.A R.B
(kolom A menentukan kolom B).

Adalah benar jika dan hanya jika himpunan nilai B yang cocok dengan pasangan nilai
A dan nilai C pada R hanya tergantung pada nilai A dan tidak tergantung pada nilai C.

MVD selalu terjadi dalam pasangan, yaitu R.A R.B dipenuhi jika dan hanya jika
R.A R.C dipenuhi pula.

Misalnya, pegawai ditugaskan ke banyak proyek dan ia mempunyai banyak keahlian.


Jika kita mencatat informasi ini pada satu table, ketiga atribut harus digunakan sebagai kunci
karena tidak ada satu atribut pun yang dapat secara unik mengidentifikasikan sebuah record.

Hubungan antara peg# dan pry# merupakan ketergantungan multivalue karena untuk
setiap pasang nilai peg#/ahli pada table, himpunan nilai pry# yang berhubungan hany ditentukan
oleh peg# dan tidak tergantung pada ahli. Hubungan antara peg# dan ahli merupakan
ketergantungan multivalue karena himpunan nilai ahli untuk pasangan peg#/ pry# selalu hanya
tergantung pada peg#.

Untuk mengubah sebuah table dengan ketergantungan multivalue kedalam 4NF,


pindahkan masing-masing pasangan MVD ke table baru. Gambar berikut menunjukkan hasilnya.

peg# pry# peg# ahli


1211 p1 1211 analisis
1211 p3 1211 perancangan
1211 pemrograman

BENTUK NORMAL KELIMA (5NF)

Sebuah table berada pada bentuk normal kelima (5NF) jika dia tidak dapat mempunyai
dekomposisi lossless menjadi sejumlah table lebih kecil.

Empat bentuk normal pertama berdasarkan pada konsep ketergantungan


fungsional,sedangkan bentuk normal kelima berdasarkan pada konsep ketergantugan gabungan
(join dependence). Ketergantungan gabungan berarti bahwa sebuah table, setelah dekomposisi
menjadi tiga atau lebih table yang lebih kecil, harus dapat digabungkan kembali untuk
membentuk table asal. Dengan kata lain, 5NF menunjukkan ketika sebuah table tidak dapat
dikomposisi lagi.

Menambah sebuah record pada sebuah table yang bukan 5NF menimbulkan hasil yang
salah ketika table didekomposisi lalu digabung kembali. Sebgai contoh, misalkan kita
mempunyai pegawai yang menggunakan keahlian perancangan pada satu proyek dan keahlian
pemrograman pada proyek lainnya. Berikut ini adalah informasinya :

peg# pty# ahli

1211 11 Perancangan

1211 28 Pemrograman

Kemudian, kita menambahkan data pegawai (1544) yang menggunakan keahlian pemrograman
pada proyek 11.

peg# pty# ahli

1211 11 Perancangan

1211 28 Pemrograman

1544 11 Pemrograman

Kemudian, kita dekomposisi table menjadi dua table seperti yang dilakukan sebelumnya. Ketika
kita menggabungkan kembali, table hasil gabungan mengandung data yang salah.

peg# pty# ahli

1211 11 Perancangan

1211 11 Pemrograman data salah

1211 28 Pemrograman

1544 11 Perancangan data salah

1544 11 Pemrograman

Dengan menambah satu data baru ke table yang bukan 5NF, ada dua pernyataan yang salah,
yaitu :
Pegawai 1211 telah ditugaskan ke proyek 11
Proyek 11 membutuhkan keahlian pemrograman
Oleh karena itu, pegawai 1211 harus menggunakan keahlian pemrograman ketika
ditugaskan ke proyek 11

Pernyataan kedua :

Pegawai 1544 telah ditugaskan ke proyek 11


Proyek 11 membutuhkan keahlian perancangan
Oleh karena itu, pegawai 1544 harus menggunakan keahlian perancangan dalam proyek
11.