Beranda > Kuliah > Normalisasi

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.

Kategori:Kuliah Tag:
  1. Belum ada komentar.
  1. No trackbacks yet.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: