Senin, 16 Maret 2009

Rekayasa Perangkat Lunak

NORMALISASI

Beberapa Definisi Normalisasi

Normalisasi adalah suatu proses memperbaiki / membangun dengan model data relasional, dan secara umum lebih tepat dikoneksikan dengan model data logika.

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.

WELL STRUCTURED RELATION adalah sebuah relasi yang jumlah kerangkapan datanya sedikit (Minimum Amount Of Redundancy), serta memberikan kemungkinan bagi used untuk melakukan INSERT, DELETE, MODIFY, terhadap baris-baris data pada relasi tersebut, yang tidak berakibat terjadinya ERROR atau INKONSISTENSI DATA, yang disebabkan oleh operasi-operasi tersebut.

Dekomposisi tabel dapat mengurangi redudansi yang ada dan menghilangkan anomali.

Perancangan melalui proses normalisasi mempunyai keuntungan-keuntungan sebagai berikut :

  1. Meminimalkan ukuran penyimpanan yang diperlukan untuk penyimpanan data.
  2. Meminimalkan resiko inkonsistensi data pada basis data.
  3. Meminimalkan kemungkinan anomaly pembaruan.
  4. Memaksimalkan stabilitas struktur data.

Bentuk Normal

Tujuan proses normalisasi adalah mengkonversi relasi menjadi bentuk normal lebih tinggi. Terdapat beragam tingkat bentuk normal, yaitu :

  1. Bentuk normal pertama (1NF)
  2. Bentuk normal kedua (2NF)
  3. 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



(b) Tabel MahasiswaC-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