RSS

Normalisasi

19 Jan

A.        Normalisasi

Mengapa diperlukan normalisasi dalam desain database? Struktur database yang normal, mudah untuk dilakukan query, update database tidak merepotkan, bisa mendapatkan semua informasi yang diperlukan, dan penghematan sumber daya (space harddisk keuntungan tersier). Inti dari normalisasi adalah membuat desain database yang efisien (tidak ada pengulangan data), database memuat semua sumber informasi, dan database merupakan kesatuan data. Selain itu normalisasi diperlukan untuk menghindari anomali insertion, anomali deletion, dan anomali update. Pada database yang sudah normal, anomaly insertion dapat dihindari karena pengisian data yang sama pada beberapa table hanya dilakukan cukup dengan mengisikan pada satu tabel dan yang lain akan mengikuti, begitu pula dengan perintah update dan delete. Namun pada tabel yang belum normal, pengisian data yang sama pada beberapa tabel dilakukan satu per satu. Hal ini memungkinkan terjadinya kesalahan input oleh manusia (human error) sehingga beberapa record yang seharusnya memiliki data yang sama, akan memiliki data yang berbeda. Bentuk normalisasi ada beberapa macam, mulai dari normalisasi 1, normalisasi 2, dst. Beberapa kasus yang mencapai tahap normalisasi hingga lebih dari 5. Namun ada juga kasus yang hanya mencapai tahap normalisasi 2 saja. Normalisasi tiap kasus berbedabeda.

Hal ini disesuaikan dengan kebutuhan. Apabila dengan normalisasi ke 2 database sudah mencukupi syarat di atas, maka tidak diperlukan tahap normalisasi berikutnya.

B.        Normalisasi I

Normalisasi pertama intinya adalah menghindari adanya data larik atau array pada atribut serta membuang potensi terjadinya redudancy (pengulangan) data di dalam entitas kuat (tabel yang memiliki primary key). Cara melakukan normalisasi pertama cukuplah mudah, namun harus dikerjakan dengan teliti. Bentuk normal tahap pertama terpenuhi jika sebuah table tidak memiliki atribut komposit atau lebih dari satu atribut dengan domain nilai yang sama. Misalkan terdapat atribut alamat pada suatu tabel untuk menyimpan nama jalan, kota, kode pos. Atribut alamat merupakan atribut komposit. Jika kita ingin mengakses data berdasarkan kota, jika tetap menggunakan atribut alamat tidak bisa oleh karena itu atribut alamat dipecah menjadi atribut Alamat_jalan, Kota dan Kode_pos.

NIM Nama

Jenis Kelamin

Alamat

1028 Dennis Adiswara Pria Jl  Kaliurang Km.7 N0. 177, Yogyakarta, 55283

Hasil normalisasi ke1 dari tabel di atas menjadi

NIM Nama

Jenis Kelamin

Alamat

Kota Kode Pos
1028 Dennis Adiswara Pria Jl  Kaliurang Km.7 N0. 177 Yogyakarta 55283

Dalam prakteknya normalisasi tidak selalu dilakukan. Memang dari segi penyimpanan lebih hemat dan insertion data lebih mudah (tidak berteletele). Tetapi untuk kedepannya dipikirkan juga apakah dengan normalisasi, muncul dampak pada pemrosesan query yang menjadi lambat? Jika database melibatkan data berskala besar, hendaknya dipikirkan efek normalisasi terhadap pemrosesan query. Kalau data berskala kecil (ratusan), normalisasi merupakan solusi yang efektif.

C.        Normalisasi II

Bentuk normalisasi kedua mempunyai ciri yaitu tiap entitas berada dalam

normalisasi ke1 dan tiap atribut entitas yang bukan key memiliki ketergantunganfungsional kepada primary keynya secara utuh. Sebuah tabel dikatakan tidak memenuhi bentuk normalisasi ke2 jika ketergantungannya hanya bersifat parsial (hanya tergantiung pada sebagian dari key primer). Tabel penjualan memiliki primary key dan atribut sebagai berikut.

No_nota, kode_barang Kode_pembeli, → Nama_pembeli, Alamat_pembeli, Telepon_pembeli, kode_pegawai, tanggal, total, jumlah_beli

Pada table tersebut No_nota dan Kode_barang adalah key primer. Ketergantungan Fungsional pada table tersebut dapat dijelaskan sebagai berikut

No_nota, Kode_barang → Jumlah_beli

No_nota → Kode_pembeli

No_nota → Nama_pembeli

No_nota → Alamat_pembeli

No_nota → Telepon_pembeli

No_nota → Kode_pegawai

No_nota → Tanggal

No_nota → Total

terhadap No_nota dan tidak bergantung pada kode_barang. Sehingga Tabel Penjualan tidak memenuhi bentuk normal kedua ( 2NF). Agar memenuhi bentuk normal kedua maka Tabel Penjualan dipecah menjadi dua yaitu Tbl_Detail_Penjualan dan Tbl_Penjualan

Tbl_Detail_Penjualan

No_nota, Kode_barang → Jumlah_jual

Tbl_Penjualan

No_nota → Tanggal, Total, Kode_pembeli, Nama_pembeli, Alamat_pembeli,

Telepon_pembeli, kode_pegawai

Pada Tbl_Detail_Penjualan key primer –nya adalah No_nota dan Kode_Barang sedangkan pada Tbl_Penjualan key primernya adalah No_nota.

D.        Normalisasi III

Sebuah table dikatakan berada dalam bentuk normal tahap ke tiga (3NF) jika untuk setiap KF (ketergantungan fungsional) dengan notasi X → A , dimana  A mewakili semua atribut tunggal di dalam table yang tidak ada di dalam X, maka

1. X haruslah superkey pada table tersebut

2. Atau A merupakan bagian dari key primer pada table tersebut

Pada contoh sebelumnya tabel penjualan memiliki ketergantungan fungsional sebagai berikut:

No_nota → Tanggal, Total, Kode_pembeli, Nama_pembeli, Alamat_pembeli,

Telepon_pembeli, kode_pegawai

Kode_pembeli → Nama_pembeli, Alamat_pembeli, Telepon_pembeli

Pada KF pertama, No_nota merupakan super key tabel sehingga bentuk normal ketiga dipenuhi. Pada KF kedua, Kode_ pembeli bukan merupakan superkey, dan atribut Nama_pembeli, Alamat_pembeli, Telepon_pembeli juga bukan merupakan bagian dari primary key tabel, sehingga tabel perlu dipecah menjadi Tabel Pelanggan dan Tabel Penjualan.

Tabel Pelanggan

Kode_pembeli → Nama_pembeli, Alamat_pembeli, Telepon_pembeli

Tabel Penjualan

No_nota → Tanggal, Total, Kode_pembeli, kode_pegawai

 
Tinggalkan komentar

Ditulis oleh pada Januari 19, 2010 in Uncategorized

 

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: