Teknik Normalisasi
1
Normalisasi Teknik/pendekatan yang digunakan dalam membangun disain lojik basis data relasional melalui organisasi himpunan data dengan tingkat ketergantungan fungsional dan keterkaitan yang tinggi sedemikian sehingga menghasilkan struktur tabel yang normal. Tujuan : Minimalisasi redundansi (pengulangan data) Memudahkan identifikasi entitas Mencegah terjadinya anomali penyisipan, ubah, hapus 2
1
Beberapa bentuk normal (normal forms, NF) :
1NF, 2NF, 3NF, BCNF ( based on keys and functional dependencies)
4NF, 5NF (based on keys and multi-valued dependencies)
Menghilangkan group
UNF
Menghilangkan dependensi parsial
1NF
Menghilangkan dependensi pd bukan kunci kandidat
Menghilangkan dependensi transitif
2NF
3NF
BCNF
Menghilangkan lebih dari dependensi bernilai ganda
5NF
4NF Menghilangkan dependensi gabungan
DEPENDENSI FUNGSIONAL (DF) Terdapat relasi R dengan atribut X dan Y R(X,Y) maka Atribut Y dikatakan memiliki DF terhadap X, apabila nilai dalam X berhungan tepat satu nilai dengan Y dengan notasi X Y X disebut determinan(penentu) Y disebut dependensi ‘ yang tergantung ID_pemasok Nama_pemasok NPM nama_mhs Kode_brg nama_brg
DEPENDESI
TOTAL
X Y,
Contoh : ID_pemasok Nama_pemasok Kode_brg nama_brg
YX
Nama_pemasok ID_pemasok
nama_brg Kode_brg
NPM nama_mhs ???
2
Tabel : Pendidikan_dosen Kd_dos
Nm_dos
Jekel
Pendidikan
Thn_lulus
D41
Ani
W
S1
1988
D41
Ani
W
S2
1994
D42
Budi
L
S1
1988
D42
Budi
L
S2
1996
D42
Budi
L
S3
2003
DEPENDENSI PENUH Nilai Y tergantung lebih dari satu nilai ( X dan Z) {kd_dos,Pendidikan } thn_lulus DEPENDENSI PARSIAL Y atribut non_kunci, X atribut kunci Y DF terhadap bagian dari X tetapi tidak terhadap keseluruhan X {kd_dos,Pendidikan } jekel Jekel sebenarnya hanya DF pada kd_dos ( bagian dari kunci utama)
DEPENDENSI TRANSITIF
Z memiliki dependensi transitif terhadap X jika : • Z memiliki DF terhadap Y • Y memilikiDF terhadap X X Y Z
maka X Z
YZ XY (Asosiatif)
3
Tabel : Barang Kd_brg
Nm_brg
Hrg_jual
Kd_ pemasok
T001
TV 21
1500000
P22
T010
TV 29
3000000
P22
T002
AC Sam
2500000
P21
T004
AC Pana
2750000
P23
T003
Kulkas 1A
100000
P20
Kd_brg nm_brg Kd_pemasok nm_pemasok Kd_brg kd_pemasok nm_pemasok
Tabel : Pemasok Kd_ pemasok
Nm_pemasok
kota
P22
PT Jaya Elek
Bogor
P21
PT Elektindo
Yogya
P23
PT Nindya
Banten
P20
PT Amerta
Bandung
Maka : Kd_brg nm_pemasok
First Normal Form (1NF) Suatu relasi disebut memenuhi bentuk normal pertama (1NF)
jika dan hanya jika setiap atribut dari relasi tersebut hanya memiliki nilai tunggal dan tidak ada pengulangan grup atribut dalam baris.
Bentuk 1NF tidak boleh mengandung grup atribut yang berulang. Tujuan membentuk 1NF : semantik tabel menjadi lebih eksplisit semua operator aljabar relasional dapat diaplikasikan pada tabel.
8
4
First Normal Form (1NF) Tabel : Sales IDSales ADN006 ADN007 ADN008 ADN009 ADN010
NamaSales Yeni, SE Memey Tina Ir. Yanto Made
non-atomic
Telepon 3517261, 3520165 4744621,08122861427 08566241521 7265122, 7123910 6723192
Unnormalized Not 1NF
IDSales ADN006 ADN006 ADN007 ADN007 ADN008 ADN009 ADN009 ADN010
1NF
NamaSales Yeni, SE Yeni, SE Memey Memey Tina Ir. Yanto Ir. Yanto Made
Telepon 3517261 3520165 4744621 08122861427 08566241521 7265122 7123910 6723192
9
First Normal Form (1NF) Tabel : Buku ISBN Thn_Terbit ID_Pengarang 12-1202-19222 1992 K0121 11-1090-29101 2001 K1021 11-1090-29102 2001 K2091 12-1201-90871 2002 K2092 13-2089-12910 2001 K2019
Unnormalized Not 1NF repeated
Nama_Pengarang Aris M Kosim P K Odelia Renaldi Samsuri J
ISBN Thn_Terbit ID_Pengarang 12-1202-19222 1992 K0121 12-1202-19222 1992 K1021 11-1090-29101 2001 K1021 11-1090-29102 2001 K2091 11-1090-29102 2001 K0121 12-1201-90871 2002 K2092 12-1201-90871 2002 K2091 13-2089-12910 2001 K2019
ID_Pengarang Nama_Pengarang K1021 Kosim P K0121 K2091
Aris M K Odelia
Nama_Pengarang Aris M Kosim P Kosim P K Odelia Aris M Renaldi K Odelia Samsuri J
1NF
10
5
Second Normal Form (2NF) Suatu relasi disebut memenuhi bentuk normal kedua (2NF)
jika dan hanya jika : 1. memenuhi 1NF 2. setiap atribut yang bukan kunci utama tergantung secara fungsional terhadap semua atribut kunci dan bukan hanya sebagian atribut kunci ( DF Penuh). Untuk normalisasi ke bentuk 2NF, maka tabel 1NF didekomposisi menjadi beberapa tabel yang masing-masing memenuhi 2NF. Bila terdapat ketergantungan parsial maka : eliminate. Tujuan membentuk 2NF : semantik tabel 2NF menjadi lebih eksplisit (DF Penuh) mengurangi update anomali yang masih mungkin terjadi pada 1NF 11
Second Normal Form (2NF) Bagaimana bila R = (A,B,C,D,E) A,B kunci utama tetapi dengan DF : (A,B) (C,D) dan B E. Apakah memenuhhi 2NF ? Maka R bukan 2NF Karena atribut E yang bergantung hanya pada atribut B saja (DF parsial) dan bukan terhadap (A,B). Dari DF : (A,B) (C,D) juga mencerminkan bahwa hanya C dan D saja yang bergantung secara fungsional terhadap (A,B), tidak untuk E. Jadi bukan 2NF. Untuk mengubah menjadi 2NF, lakukan dekomposisi menjadi : R1 = (A,B,C,D) dan R2 = (B,E). Tampak R1 dan R2 memenuhi 2NF. 13
6
Second Normal Form (2NF) Diketahui Workshop = (NIM,Modul,Biaya,Grade)
Peserta Workshop NIM
Modul
Biaya
Key : NIM+Modul FD : Modul Biaya
Grade
(Biaya ditentukan oleh Modul yang diambil mahasiswa)
Tabel : workshop NIM
Modul
Biaya
Grade
0129
VB.Net
250000
A
0130
Prolog
100000
A
.0129
Prolog
100000
B
0201
Delphi 6
150000
A
0250
VB.Net
250000
B
1NF Not 2NF Sebab dalam tabel ini, Biaya tidak bergantung penuh pada atribut kunci (NIM,Modul)
14
Second Normal Form (2NF)
NIM
Modul
Biaya
Grade
(NIM,Modul) = key (Modul) Biaya (DF Parsial) (NIM,Modul) Grade (DF Penuh)
NIM
Modul
Biaya
Grade
Eliminate Buat Dekomposisi: Works1 = (NIM,Modul,Grade) Works2 = (Modul,Biaya) DF PENUH
15
7
Second Normal Form (2NF) Workshop NIM
Modul
Biaya
Grade
.0129
VB.Net
250000
A
.0130
Prolog
100000
A
0129
Prolog
100000
B
.0201
Delphi 6
150000
A
.0250
VB.Net
250000
B
NIM
Modul
Grade
0129
VB.Net
A
0130
Prolog
A
0129
Prolog
B
0201
Delphi 6
A
0250
VB.Net
B
Works1 Modul
Biaya
VB.Net
250000
Prolog
100000
Delphi 6
150000
Works2 16
Third Normal Form (3NF) Suatu relasi disebut memenuhi bentuk normal ketiga (3NF)
jika dan hanya jika : 1. memenuhi 2NF 2. setiap atribut yang bukan kunci tidak tergantung secara fungsional terhadap atribut bukan kunci yang lain dalam relasi tsb
(tidak terdapat ketergantungan transitif pada
atribut bukan kunci).
17
8
Third Normal Form (3NF)
Jika suatu relasi sudah memenuhi 2NF tapi tidak memenuhi 3 NF, maka untuk normalisasi ke bentuk 3NF, tabel 2NF didekomposisi menjadi beberapa tabel hingga masingmasing memenuhi 3NF.
Tujuan membentuk 3NF : :: semantik tabel 3NF menjadi lebih eksplisit (DF Penuh hanya pada primary key). :: menghindari update anomali yang masih mungkin terjadi pada 2NF. 18
Third Normal Form (3NF) Contoh : Diketahui tabel R=(A,B,C,D,E) ; A,B kunci utama (primary key) dengan DF: A,B C,D,E dan C D,E maka R bukan 3NF sebab : Atribut D dan E (bukan kunci utama) bergantung secara fungsional pada C (yang juga bukan kunci utama). Melalui FD : Diketahui A,B C,D,E. CD,E. Agar R memenuhi 3NF maka didekomposisi menjadi : R1=(A,B,C) dan R2=(C,D,E) sehingga R1 dan R2 memenuhi 3NF. 19
9
Third Normal Form (3NF) DF : A,B C,D,E berarti A,B C ; C D,E ; A,B D,E A,B D reduce A,B E reduce Dekomposisinya : R1=(A,B,C) ; DF : (A,B)C R2=(C,D,E) ; DF : CD,E R
A
A
B
B
C
C
D
E
C
D
E
R2
R1
20
Third Normal Form (3NF) Misal diketahui struktur informasi dari suatu dokumen supplier : S S1
S2 S3 S4
Status City
PQ P Qty 20 LONDON P1 300 P2 200 P3 400 P4 200 P5 100 P6 100 10 PARIS P1 300 P2 400 10 PARIS P2 200 20 LONDON P2 200 P4 399 P5 400
Akan dibentuk suatu tabel dengan skema TPS=(S,Status,City,P,Qty) dengan (S,P) = primary key dan berlaku DF : SStatus SCity CityStatus Lakukan normalisasi dari 1NF hingga 3NF.
21
10
Third Normal Form (3NF) Tabel : TPS
1NF Not 2NF
S Status City P Qty S1 20 LONDON P1 300 Masalah : S1 20 LONDON P2 200 Redundansi S1 20 LONDON P3 400 Anomali : S1 20 LONDON P4 200 S(Status,City) tapi kita tidak bisa: S1 20 LONDON P5 100 Insert data (S5,30,JAKARTA) tanpa diikuti data S1 20 LONDON P6 100 P (khususnya) dan Q. S2 10 PARIS P1 300 Menghapus 1 baris data akan jg merusak keutuhan informasi. S2 10 PARIS P2 400 S3 10 PARIS P2 200 Solusi : Dekomposisi menjadi : S4 20 LONDON P2 200 TPS1 dan TPS2 S4 20 LONDON P4 399 S4 20 LONDON P5 400
22
Third Normal Form (3NF)
TPS1
S Status City S1 20 LONDON S2 10 PARIS S3 10 PARIS S4 20 LONDON
1NF 2NF Not 3NF (transitif.) SCity CityStatus
Untuk insert data (S5,30,JAKARTA) dapat lakukan
dgn aman Tapi masih ada anomaly : karena CityStatus maka tidak bisa insert data City baru sebelum Status punya nilai.
Penghapusan 1 baris sebagian data City juga bisa merusak keutuhan informasi S. Selain itu, masih ada redundansi pada Status dan City 23
11
Third Normal Form (3NF) Tabel : TPS2
S S1 S1 S1 S1 S1 S1 S2 S2 S3 S4 S4 S4
P P1 P2 P3 P4 P5 P6 P1 P2 P2 P2 P4 P5
Qty 300 200 400 200 100 100 300 400 200 200 399 400
1NF 2NF 3NF
Third Normal Form (3NF) S S1 S2 S3 S4
TPS1-1 City LONDON PARIS PARIS LONDON
1NF 2NF 3NF
TPS1-2 City Status LONDON 20 PARIS 10 1NF 2NF 3NF
S S1 S1 S1 S1 S1 S1 S2 S2 S3 S4 S4 S4
TPS2 P Qty 1NF P1 300 2NF 3NF P2 200 P3 400 P4 200 P5 100 P6 100 P1 300 P2 400 P2 200 P2 200 P4 399 P5 400 25
12
Boyce Codd Normal Form (BCNF) Contoh : Diketahui tabel R=(A,B,C) dengan FD : AB C dan C B. Apakah : 3NF ? BCNF ?
R memenuhi 3NF karena : ABC ; maka AB ABC, atau A R. Jadi AB superkey dari R CB ; maka AC AB, atau AC ABC dan AC R. Jadi AC juga superkey (sekaligus juga candidate key) dari R Karena AB superkey dan C subset candidate key maka R memenuhi 3NF R bukan BCNF karena : AB superkey tetapi C bukan superkey.
26
Boyce Codd Normal Form (BCNF) Pinjam
idpinjam
sid
bid
date
P-01
53666
B002
10/11/2005
P-02
53668
B001
10/11/2005
P-03
53668
B004
11/12/2005
P-04
53670
B002
14/11/2005
Didekomposisi menjadi :
Pinjam1
Pinjam2
idpinjam
sid
idpinjam
bid
date
P-01
53666
P-01
B002
10/11/2005
P-02
53668
P-02
B001
10/11/2005
P-03
53668
P-03
B004
11/12/2005
53670
P-04
B002
14/11/2005
P-04
DF trivial BCNF
idpinjam bid, date idpinjam superkey 27 BCNF
13
Comparison of BCNF And 3NF Contoh kasus redundansi pada 3NF Jadwal = (Nim,Modul,Dosen) DF = {Dosen Modul} Relasi ini memenuhi 3NF, karena tidak ada ketergantungan transitif. Tetapi tidak memenuhi BCNF karena dari Dosen Modul maka Dosen bukan candidate key. Alternatif yang dilakukan adalah dekomposisi tabel menjadi : NIM
Modul
0129
Dosen
NIM
Dosen
VB.Net Ajib
0129
Ajib
0130
Prolog
Aris
0130
Aris
0129
Prolog
Aris
0129
Aris
0201
VB Net Budi
0201
Budi
0250
Prolog
Jono
0250
Jono
0260
VB.Net Budi
0260
Budi
NOT BCNF
Dosen
Modul
Ajib
VB.Net
Aris
Prolog
Jono
Prolog
Budi
VB.Net
BCNF
LATIHAN !!
28
Berdasarkan PO : • Rancanglah tabel penyimpanan datanya
29
14
Buat ERD dan Normalisasi
15