BAB I NORMALISASI
Normalisasi adalah
proses pembentukan struktur basis data sehingga sebagian besar ambiguity
bisa dihilangkan. Tahap Normalisasi dimulai dari tahap paling ringan (1NF)
hingga paling ketat (5NF). Akan tetapi, biasanya sebagian besar pendesain
database hanya sampai pada tingkat 3NF atau BCNF karena sudah cukup memadai
untuk menghasilkan tabel-tabel yang berkualitas baik.
Sebuah tabel dikatakan baik (efisien) atau normal jika
memenuhi 3 kriteria sbb:
1.
Jika ada dekomposisi (penguraian) tabel, maka
dekomposisinya harus dijamin aman (Lossless-Join Decomposition). Artinya,
setelah tabel tersebut diuraikan / didekomposisi menjadi tabel-tabel baru,
tabel-tabel baru tersebut bisa menghasilkan tabel semula dengan sama persis.
2.
Terpeliharanya ketergantungan fungsional pada saat
perubahan data (Dependency Preservation).
3.
Tidak melanggar Boyce-Code Normal Form (BCNF) (-akan
dijelaskan kemudian-)
Jika kriteria ketiga (BCNF) tidak dapat terpenuhi, maka
paling tidak tabel tersebut tidak melanggar Bentuk Normal tahap ketiga (3rd Normal Form /
3NF).
Tabel Universal (Universal
/ Star Table) à sebuah tabel yang merangkum semua kelompok data yang
saling berhubungan, bukan merupakan tabel yang baik. Misalnya:
I.1 Functional Dependency
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 xà B
Adalah kebalikan dari notasi sebelumnya.
Misal isi tabel nilai sbb:
Namakul
|
Nrp
|
namaMhs
|
NiHuruf
|
Struktur Data
|
980001
|
Ali Akbar
|
A
|
Struktur Data
|
980004
|
Indah Susanti
|
B
|
Basis Data
|
980001
|
Ali Akbar
|
|
Basis Data
|
980002
|
Budi Haryanto
|
|
Basis Data
|
980004
|
Indah Susanti
|
|
Bahasa Indonesia
|
980001
|
Ali Akbar
|
B
|
Matematika I
|
980002
|
Budi Haryanto
|
C
|
Maka Functional
Dependency sbb:
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
Dst
I.2 Bentuk-bentuk Normal
- Bentuk Normal Tahap Pertama (1st Normal Form / 1NF)
- Bentuk Normal Tahap Kedua (2nd Normal Form / 2NF)
- Bentuk Normal Tahap (3rd Normal Form / 3NF)
- Boyce-Code Normal Form (BCNF)
- Bentuk Normal Tahap (4th Normal Form / 4NF)
- Bentuk Normal Tahap (5th Normal Form / 5NF)
I.3 Bentuk Normal Tahap Pertama (1st Normal Form / 1NF)
Bentuk normal
1NF terpenuhi jika sebuah tabel tidak memiliki atribut bernilai banyak (multivalued attribute), atribut
composite atau kombinasinya dalam domain data yang sama. Dalam arti lain,
setiap atribut dalam tabel tersebut harus bernilai atomic (tidak dapat dibagi-bagi lagi).
Contoh: (multivalued)
Misal data mahasiswa sbb:
Nrp
|
nama
|
Hobi
|
12020001
|
Heri Susanto
|
Sepakbola, membaca komik,
berenang
|
12020013
|
Siti Zulaiha
|
Memasak,mrogram komputer
|
12020015
|
Dini Susanti
|
Menjahit,membuat roti
|
Atau:
Nrp
|
nama
|
hobi1
|
Hobi2
|
Hobi3
|
12020001
|
Heri Susanto
|
Sepak Bola
|
Membaca komik
|
Berenang
|
12020013
|
Siti Zulaiha
|
Memasak
|
mrogram komputer
|
|
12020015
|
Dini Susanti
|
Menjahit
|
membuat kue
|
|
Maka tabel-tabel serupa di atas tidak memenuhi syarat 1NF.
Perlu di-dekomposisi menjadi sbb:
Mahasiswa
Nrp
|
Nama
|
12020001
|
Heri Susanto
|
12020013
|
Siti Zulaiha
|
12020015
|
Dini Susanti
|
.Hobi
Nrp
|
Hobi
|
12020001
|
Sepakbola
|
12020001
|
membaca komik
|
12020001
|
Berenang
|
12020013
|
Memasak
|
12020013
|
mrogram computer
|
12020015
|
Menjahit
|
12020015
|
membuat roti
|
Contoh 2:
(composite)
JadwalKuliah
Kodekul
|
NamaKul
|
Dosen
|
Kelas
|
Jadwal
|
Dimana nilai
pada atribut jadwal berisi gabungan antara Hari dan Jam.
Jika asumsi hari dan jam memegang peranan penting dalam
sistem basis data, maka atribut Jadwal perlu dipisah sehingga menjadi
JadwalHari dan JadwalJam sbb:
JadwalKuliah
Kodekul
|
NamaKul
|
Dosen
|
Kelas
|
JadwalHari
|
JadwalJam
|
I.4 Bentuk Normal Tahap Kedua (2nd Normal Form)
Bentuk normal 2NF terpenuhi dalam sebuah tabel jika telah
memenuhi bentuk 1NF, dan semua atribut selain primary key, secara utuh memiliki
Functional Dependency pada primary key.
Sebaliknya, sebuah tabel tidak memenuhi 2NF, jika ada
atribut yang ketergantungannya (Functional Dependency) hanya bersifat parsial
saja (hanya tergantung pada sebagian dari primary key).
Jika terdapat atribut yang tidak memiliki ketergantungan
terhadap primary key, maka atribut tersebut harus dipindah atau dihilangkan.
Contoh:
Tabel berikut memenuhi 1NF tapi tidak termasuk 2NF:
NilaiMahasiswa
Mhs_nrp
|
mhs_nama
|
mhs_alamat
|
mk_kode
|
mk_nama
|
mk_sks
|
nihuruf
|
Tidak memenuhi 2NF, karena {Mhs_nrp, mk_kode} yang dianggap
sebagai primary key, sedangkan:
{Mhs_nrp, mk_kode} mhs_nama
{Mhs_nrp, mk_kode} mhs_alamat
{Mhs_nrp, mk_kode} mk_nama
{Mhs_nrp, mk_kode} mk_sks
{Mhs_nrp, mk_kode} à nihuruf
oleh sebab itu tabel di atas perlu didekomposisi menjadi
beberapa tabel yang memenuhi syarat 2NF, yang functional dependencynya sbb:
{Mhs_nrp, mk_kode} à nihuruf (fd1)
Mhs_nrp à {mhs_nama, mhs_alamat} (fd2)
Mk_kode à {mk_nama, mk_sks} (fd3)
fd1 (mhs_nrp,
mk_kode, nihuruf) è
Tabel Nilai
fd2 (Mhs_nrp,
mhs_nama, mhs_alamat) èTabel
Mahasiswa
fd3 (mk_kode, mk_nama, mk_sks) è Tabel MataKuliah
I.5 Bentuk Normal Tahap Ketiga (3rd Normal Form /3NF)
Bentuk normal 3NF terpenuhi jika telah memenuhi bentuk 2NF,
dan jika tidak ada atribut non primary key yang memiliki
ketergantungan terhadap atribut non
primary key yang lainnya.
Untuk setiap Functional Dependency dengan notasi X à
A, maka:
- X
harus menjadi superkey pada tabel tsb.
- Atau
A merupakan bagian dari primary key pada tabel tsb.
Contoh:
Tabel berikut memenuhi 2NF, tapi tidak memenuhi 3NF:
Mahasiswa
Nrp
|
Nama
|
Alm_Jalan
|
Alm_Kota
|
Alm_Provinsi
|
Alm_Kodepos
|
karena masih terdapat atribut non primary key (yakni alm_kota
dan alm_Provinsi) yang memiliki
ketergantungan terhadap atribut non
primary key yang lain (yakni alm_kodepos):
alm_kodepos à {alm_Provinsi,
alm_kota}
Sehingga tabel tersebut perlu didekomposisi menjadi:
Mahasiswa (Nrp, nama,
alm_jalan, alm_kodepos)
Kodepos (alm_kodepos,
alm_provinsi, alm_kota)
I.6 Boyce-Code Normal Form (BCNF)
Bentuk BCNF terpenuhi dalam sebuah tabel, jika untuk
setiap functional dependency terhadap
setiap atribut atau gabungan atribut dalam bentuk: X à Y
maka X adalah super
key. Jika tidak, maka tabel tersebut harus di-dekomposisi berdasarkan functional dependency yang ada, sehingga
X menjadi super key dari 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.
I.9 Bentuk Normal Tahap Keempat (4th Normal Form /4NF)
Bentuk normal 4NF terpenuhi dalam sebuah tabel jika telah
memenuhi bentuk BCNF, dan tabel tersebut tidak boleh memiliki lebih dari sebuah multivalued atribute.
Dalam arti lain, untuk setiap multivalued dependencies (MVD) juga harus merupakan functional dependencies.
Misal, tabel berikut tidak memenuhi 4NF:
Employee
|
Project
|
Skill
|
Jim
|
11
|
Program
|
Mary
|
5
|
Design
|
Mary
|
NULL
|
Analysis
|
Setiap employee dapat bekerja di lebih dari project dan
dapat memiliki lebih dari satu skill. Untuk kasus seperti ini tabel tersebut
harus di-dekomposisi menjadi:
(Employee, Project)
(Employee, Skill)
I.10 Bentuk Normal Tahap Keempat (5th Normal Form /5NF)
Bentuk normal 5NF terpenuhi dalam sebuah tabel jika tidak
dapat memiliki sebuah lossless
decomposition menjadi tabel-tabel yg
lebih kecil.
Jika 4 bentuk normal sebelumnya dibentuk berdasarkan functional dependency, 5NF dibentuk
berdasarkan konsep join dependence.
Yakni apabila sebuah tabel telah di-dekomposisi menjadi tabel-tabel lebih
kecil, harus bisa digabungkan lagi (join) untuk membentuk tabel semula.
No comments:
Post a Comment
silahkan membaca dan berkomentar