NORMALISASI
Beberapa Definisi Normalisasi
Normalisasi adalah proses pengelompokan data ke dalam bentuk tabel atau relasi atau file untuk menyatakan entitas dan hubungan mereka sehingga terwujud satu bentuk database yang mudah untuk dimodifikasi.
Normalisasi dapat berguna dalam menjawab 2 pertanyaan mendasar yaitu: “apa yang dimaksud dengan desain database logical?” dan “apa yang dimaksud dengan desain database fisikal yang baik? What is phisical good logical database design?”.
Normalisasi adalah suatu proses untuk mengidentifikasi “tabel” kelompok atribut yang memiliki ketergantungan yang sangat tinggi antara satu atribut dengan atrubut lainnya.
Normalisasi bisa disebut jga sebagai proses pengelompokan atribut-atribut dari suatu relasi sehingga membentuk WELL STRUCTURED RELATION.
Dekomposisi tabel dapat mengurangi redudansi yang ada dan menghilangkan anomali.
Perancangan melalui proses normalisasi mempunyai keuntungan-keuntungan sebagai berikut :
- Meminimalkan ukuran penyimpanan yang diperlukan untuk penyimpanan data.
- Meminimalkan resiko inkonsistensi data pada basis data.
- Meminimalkan kemungkinan anomaly pembaruan.
- Memaksimalkan stabilitas struktur data.
Bentuk Normal
- Bentuk normal pertama (1NF)
- Bentuk normal kedua (2NF)
- Bentuk normal ketiga (3NF)
Contoh Kasus Normalisasi
Terdapat sebuah table dengan komposisi sebagai berikut
Nama_mahasiswa | NIM | Kd_MKul |
Jones | 61521 | MAT231, ECO220, HST211 |
Diana | 61300 | HST211 |
Tony | 61425 | ENG202, MAT231 |
Paula | 61230 | MAT231, ENG202 |
Tabel mahasiswa di atas belum memenuhi kriteria 1-NF sebab atribut Kd_MKul masih memiliki nilai ganda dalam satu baris. Untuk mengkonversi table mahasiswa tersebut ke dalam bentuk 1-NF, maka kita harus menyusun kembali baris-baris pada Kd_MKul, sehingga setiap baris memiliki nilai tunggal, seperti table di bawah ini :
Nama_mahasiswa | NIM | Kd_MKul |
Jones | 61521 | MAT231 |
Jones | 61521 | ECO220 |
Jones | 61521 | HST211 |
Diana | 61300 | HST211 |
Tony | 61425 | ENG202 |
Tony | 61425 | MAT231 |
Paula | 61230 | MAT231 |
Paula | 61230 | ENG202 |
Tabelo mahasiswa di atas sudah memenuhi kriteria 1-NF, tetapi belum memenuhi criteria 2-NF sebab atribut mahasiswa bergantung fungsional pada NIM, dan atribut Kd_MKul juga bergantung fungsional pada NIM, sehingga table Mahasiswa di atas perlu dipecah lagi menjadi dua table agar setiap atribut bukan primary key hanya bergantung sepenuhnya terhadap atribut primary key saja, seperti table di bawah ini :
Tabel Mahasiswa-1 Tabel Mahasiswa-2
Nama_mahasiswa | NIM |
Jones | 61521 |
Jones | 61521 |
Jones | 61521 |
Diana | 61300 |
Tony | 61425 |
Tony | 61425 |
Paula | 61230 |
Paula | 61230 |
61521 | MAT231 |
61521 | ECO220 |
61521 | HST211 |
61300 | HST211 |
61425 | ENG202 |
61425 | MAT231 |
61230 | MAT231 |
61230 | ENG202 |
Terdapat sebuah tabel yang sudah memenuhi criteria 1-NF dengan komposisi sebagai berikut :
Tabel Mahasiswa-C
Nama_Mhs | NIM | Tgl_Lahir | Kuliah | Kd_MKul | SKS | Nilai | Bobot |
Jones | 61521 | 12/05/77 | Kalkulus | MAT231 | 3 | B | 3 |
Jones | 61521 | 12/05/77 | Ekonomi-1 | ECO220 | 3 | A | 4 |
Jones | 61521 | 12/05/77 | History | HST211 | 2 | B | 3 |
Diana | 61300 | 14/02/78 | History | HST211 | 2 | A | 4 |
Tony | 61425 | 11/01/76 | B. Inggris | ENG202 | 2 | C | 2 |
Tony | 61425 | 11/01/76 | Kalkulus | MAT231 | 3 | B | 3 |
Paula | 61230 | 14/06/77 | Kalkulus | MAT231 | 3 | B | 3 |
Paula | 61230 | 14/06/77 | B. Inggris | ENG202 | 2 | C | 2 |
Dari tabel Mahasiswa-C di atas terdapat beberapa ketergantungan fungsional diantara atribut-atribut sebagai berikut :
NIM -> Nama_Mahasiswa, Tgl_Lahir
Kd_MKul -> Kuliah, SKS
NIM, Kd_MKul -> Nilai
Nilai -> Bobot
Teabel Mahasiswa-C di atas belum memenuhi kriteria 2-NF. Selama terdapat beberapa atribut seperti Tgl_Lahir, Kuliah yang tidak memiliki ketergantungan fungsional terhadap primary key (NIM, Kd_MKul). Untuk mengkonversi tabel tersebut menjadi 2-NF, maka tabel Mahasiswa-C perlu dipecah menjadi 3 tabel yaitu : Tabel Mahasiswa-C1 = (NIM, Nama_Mahasiswa, Tgl_Lahir), Mahasiswa-C2 = (Kd_MKul, Kuliah, SKS), dan Mahasiswa-C3 = (NIM, Kd_MKul, Nilai, Bobot) dengan komposisi tabel sebagai berikut :
Tabel relasi yang sudah dalam bentuk 2-NF
Nama_mahasiswa | NIM | Tgl_Lahir |
Jones | 61521 | 12/05/77 |
Diana | 61300 | 14/02/78 |
Tony | 61425 | 11/01/76 |
Paula | 61230 | 14/06/77 |
(a) Tabel Mahasiswa-C1
NIM | Kd_MKul | Nilai | Bobot |
61521 | MAT231 | B | 3 |
61521 | ECO220 | A | 4 |
61521 | HST211 | B | 3 |
61300 | HST211 | A | 4 |
61425 | ENG202 | C | 2 |
61425 | MAT231 | B | 3 |
61230 | MAT231 | B | 3 |
61230 | ENG202 | C | 2 |
Kuliah | Kd_MKul | SKS |
Kalkulus | MAT231 | 3 |
Ekonomi-1 | ECO220 | 3 |
History | HST211 | 2 |
B.Inggris | ENG202 | 2 |
(c) Tabel Mahasiswa-C3
Tabel Mahasiwa-C1 dan Mahasiswa-C2 telah memenuhi kriteria 3-NF, namun tabel Mahasiswa-C3 belum memenuhi kriteria 3-NF, selama atribut non-key Nilai dan Bobot masih saling memilki ketergantungan fungsional. Untuk mengkonversinya menjadi bentuk 3-NF, maka Tabel Mahasiwa-C3 tersebut perlu dipecah menjadi 2 tabel yaitu : Tabel Mahasiswa-C3A = (NIM, Kd_MKul, Nilai) dan Tabel Mahasiswa-C3B = (Nilai, Bobot) dengan komposisi tabel sebagai berikut :
Tabel/ relasi Mahasiswa-C3 yang sudah dalam bentuk 3-NF
Nilai | Bobot |
A | 4 |
B | 3 |
C | 2 |
D | 1 |
E | 0 |
(a) Tabel Mahasiswa-C3A
NIM | Kd_MKul | Nilai | Bobot |
61521 | MAT231 | B | 3 |
61521 | ECO220 | A | 4 |
61521 | HST211 | B | 3 |
61300 | HST211 | A | 4 |
61425 | ENG202 | C | 3 |
61425 | MAT231 | B | 2 |
61230 | MAT231 | B | 3 |
61230 | ENG202 | C | 2 |
(b) Tabel Mahasiswa-C3B
Tidak ada komentar:
Posting Komentar