Normalisasi
Sebuah basis data relational dapat terdiri dari sebuah tabel atau lebih. Bila table lebih dari satu maka tabel tabel itu saling berhubungan satu sama lain, keterhubungan itu istilahnya Relationship.
Bila sebuah tabel terdiri dari attribut yang berasal dari berbagai macam entitas yang memiliki degree one-to-many atau bahkan many-to-many maka bisa dipastikan tabel tersebut belum normal.
Apa artinya itu? Artinya dalam table tersebut akan terjadi redundancy yang bisa mengakibatkan anomali insert, anomali update dan anomali delete. Apa lagi tuh?
Hmm… agak susah menerangkannya kalau tidak menggunakan contoh. Mau bikin contoh tabel pake HTML, di Lab MTI gak ada HTML editor seperti Editplus atau yang lain, terpaksa deh Notepad, besok mau minta ke Pak Ganda install Editplus boleh gak yah?
Kita ambil contoh dua buah entitas Staff dan Kantor Cabang. Berikut adalah tabel masing masing dalam keadaan normal.
| Relasi Staff | |||||||
|---|---|---|---|---|---|---|---|
| NoStaff | sName | Position | Salary | BranchNo | |||
| FA1 | Jefri | Manager | 4.000.000 | B005 | |||
| FA2 | Junanto | Asisten | 2.000.000 | B003 | |||
| FA3 | Simon | Supervisor | 3.000.000 | B003 | |||
| FA4 | Ikrar | Asisten | 2.000.000 | B007 | |||
| FA5 | David | Manager | 4.000.000 | B003 | |||
| FA6 | Wibisono | Asisten | 2.000.000 | B003 | |||
Berikut Tabel Kantor Cabang:
| Relasi Branch | |||||||
|---|---|---|---|---|---|---|---|
| BranchNo | bAddress | ||||||
| B003 | Pondok Kopi | ||||||
| B005 | Depok | ||||||
| B007 | Salemba | ||||||
Jika kedua table tersebut digabung maka akan menjadi:
| Relasi StaffBranch | |||||||
|---|---|---|---|---|---|---|---|
| NoStaff | sName | Position | Salary | BranchNo | bAddress | ||
| FA1 | Jefri | Manager | 4.000.000 | B005 | Depok | ||
| FA2 | Junanto | Asisten | 2.000.000 | B003 | Pondok Kopi | ||
| FA3 | Simon | Supervisor | 3.000.000 | B003 | Pondok Kopi | ||
| FA4 | Ikrar | Asisten | 2.000.000 | B007 | Salemba | ||
| FA5 | David | Manager | 4.000.000 | B003 | Pondok Kopi | ||
| FA6 | Wibisono | Asisten | 2.000.000 | B003 | Pondok Kopi | ||
Sekarang bisa dengan mudah dilihatkan bahwa dalam kolom bAddress terjadi redundancy. Kalau kita hanya beroperasi dengan satu table itu saja maka kalau kita hanya memasukan data Staff baru, tapi Staff tersebut belum ditugaskan di Kantor Cabang manapun maka yang terjadi record baru tanpa ada nilai untuk BranchNo dan bAddress.
Begitu juga sebaliknya kalau kita mau insert data Branch baru yang belum memiliki Staff maka kita akan harus memasukan Branch dengan kolom Staff tetap kosong atau Null.
Keadaan ini yang disebut anomali-insert.
Kemudian bila kita ingin menghapus data Branch, misalnya BranchNo: B00, maka terpaksa kita juga hartus menghapus Staff Ikrar. Atau sebaliknya bila kita ingin menghapus Staff Ikrar maka Branch B007 akan ikut terhapus.
Keadaan ini yang disebut anomali-delete.
Kemudian bila kita ingin mengupdate bAddress dari Branch B003, maka kita harus mengupdate 4 record sekaligus.
Keadaan ini yang disebut anomali-update.
Tujuan dari normalisasi adalah untuk merancang sebuah relasi yang terhindar dari ketiga anomali diatas, bila sebuah relasi sudah terbebas dari kondisi anomali maka relasi tersebut disebut dalam keadaan baik (good-form).
Bagaimana mengetahui sebuah relasi dalam keadaan baik atau tidak? Caranya kita bisa analisa apakah ada nilai attribut yang berulang atau tidak. Jika ada maka harus dilakukan dekomposisi. Sebuah relasi yang baik haruslah memenuhi dekomposisi yang Lossless-join.
Dekomposisi harus memperhatikan kaidah Functional Dependencies. Normalisasi adalah teknik formal untuk menganalisa hubungan antar attribut berdasarkan Primary Key dan Functional Dependencies.
Tahap tahap normalisasi tersebut adalah:
- Unnomarlized Relation
- Relasi masih dipenuhi oleh repeating group
- Normal Form 1 (NF1)
- Menghilangkan repeating group dengan cara dekomposisi
- Menentukan Primary Key
- Normal Form 2 (NF2)
- Menghilangkan Partial Dependencies
- Normal Form 3 (NF3)
- Menghilangkan Transitive Dependencies
- Boyce Codd Form (BCF)
- Normal Form 4 (NF4)
- Normal Form 5 (NF5)
Proses normalisasi harus dilakukan secara bertahap, tidak bisa loncat loncat.

















Komentar Terakhir