Normalisasi
database biasanya jarang dilakukan dalam database skala kecil, dan
dianggap tidak diperlukan pada penggunaan personal. Namun seiring dengan
berkembangnya informasi yang dikandung dalam sebuah database, proses
normalisasi akan sangat membantu dalam menghemat ruang yang digunakan
oleh setiap tabel di dalamnya, sekaligus mempercepat proses permintaan
data.
- Menemukan entitas-entitas utama dalam model data.
- Menemukan hubungan antara setiap entitas.
- Menentukan atribut yang dimiliki masing-masing entitas.
Normalisasi
model data dilakukan dengan mengikuti langkah-langkah sederhana,
mengubahnya agar memenuhi apa yang disebut sebagai bentuk normal
pertama, kedua, lalu ketiga secara berturutan.
Langkah-Langkah Normalisasi
1. Bentuk Normal Pertama ( 1NF )
Sebuah
model data dikatakan memenuhi bentuk normal pertama apabila setiap
atribut yang dimilikinya memiliki satu dan hanya satu nilai. Apabila ada
atribut yang memiliki nilai lebih dari satu, atribut tersebut adalah
kandidat untuk menjadi entitas tersendiri.
2. Bentuk Normal Kedua ( 2NF )
Sebuah
model data dikatakan memenuhi bentuk normal kedua apabila ia memenuhi
bentuk normal pertama dan setiap atribut non-identifier sebuah entitas
bergantung sepenuhnya hanya pada semua identifier entitas tersebut.
3. Bentuk Normal Ketiga (3NF)
Sebuah
model data dikatakan memenuhi bentuk normal ketiga apabila ia memenuhi
bentuk normal kedua dan tidak ada satupun atribut non-identifying (bukan
pengidentifikasi unik) yang bergantung pada atribut non-identifying
lain. Apabila ada, pisahkan salah satu atribut tersebut menjadi entitas
baru, dan atribut yang bergantung padanya menjadi atribut entitas baru
tersebut.
STUDI KASUS TOKO ABC
No. Faktur :
Tanggal : Kepada :
Tanggal : Kepada :
No.
|
Nama
|
Jumlah
|
Harga
|
Total
|
Total Bayar
|
||||
Diskon
|
||||
Jumlah Bayar
|
Petugas : …………………………..
TAHAP-TAHAP NORMALISASI DATA
A. BASIS DATA BELUM TERNORMALISASI
Berdasarkan faktur di atas, maka gambaran database yang belum ternormalisasi adalah sebagai berikut :
1. Tabel yang memiliki field dengan banyak data / tidak tunggal
Tanggal
|
Nama_pelanggan
|
Daftar_Belanja
|
|
05070101
|
29/05/07
|
Pitoyo
|
Bedak, Beras, Minyak Tanah, Buku
|
05070102
|
29/05/07
|
Bowo
|
Baby Oil, Garam, Gula, Pensil
|
05070103
|
30/05/07
|
Erlina
|
Sikat gigi, Sabun, Odol, Sampo
|
06070001
|
01/06/07
|
Dayat
|
Beras
|
2, Tabel dengan field yang mengalami repeating groups
No_Faktur
|
Tanggal
|
Pelanggan
|
Belanja 1
|
Harga1
|
Belanja2
|
Harga2
|
Belanja3
|
Harga3
|
Belanja4
|
Harga4
|
05070101
|
29/05/07
|
Pitoyo
|
Bedak
|
1500
|
Beras
|
10000
|
Minyak Tanah
|
3500
|
Buku
|
2000
|
05070102
|
29/05/07
|
Bowo
|
Baby Oil
|
5600
|
Garam
|
2500
|
Gula
|
4000
|
Pensil
|
1500
|
05070103
|
30/05/07
|
Erlina
|
Sikat gigi
|
12000
|
Sabun
|
2500
|
Odol
|
13000
|
Sampo
|
16000
|
06070001
|
01/06/07
|
Dayat
|
Beras
|
25000
|
Walaupun
susunan tabel data di atas belum menampilkan keseluruhan atribut dari
bentuk faktur yang tertera pada masalahini, tetapi ia telah dapat
menggambarkan bentuk basis data yang belum ternormalisasi, karena suatu
relasi memenuhi 1-NF jika dan hanya jika setiap atribut hanya memiliki
nilai tunggal dalam satu baris / record dan tidak mengalami repeating
groups.
B. FIRST NORMAL FORM ( 1NF )
Implementasi
1-NF dari table data yang belum ternormalisasi di atas adalah dengan
cara mengeliminasi keberadaan repeating groups dan dekomposisi relasi
menjadi dua atau lebih dengan syarat “tidak boleh ada informasi yang
hilang karena proses dekomposisi” Adapun caranya adalah :
1. Membuat 3 tabel yang memiliki fungsi sebagai berikut :
- TBFaktur, berfungsi untuk menyediakan atribut-atribut yang bersifat atomic dari tiap nomor faktur (ID_Faktur), seperti : Tanggal, Nama_Pelanggan, Total_Bayar, Diskon dan Nama_Petugas
- TBProduk, berfungsi untuk menyediakan atribut-atribut yang berulang atau tidak bernilai tunggal pada tiap nomor faktur (ID_Faktur), seperti : Nama_Barang dan harga
- TBTransaksiDetail, berfungsi sebagai penghubung antara nomor faktur (ID_Faktur) dengan kode barang (ID_Barang) agar proses dekomposisi tidak menyebabkan kerusakan informasi.
2. Menentukan type data dari tiap atribut dan membuat digram relasional sebagai berikut
3. Pada table TBTransaksiDetail terdapat atribut “Harga” yang berfungsi untuk menyimpan harga per transaksi, sedangkan atribut “Harga_Default” yang terdapat pada table TBProduk adalah atribut yang berfungsi untuk menyimpan harga barang terbaru dari tiap jenis barang.Hal ini berguna untuk mengantisipasi adanya perubahan harga dari waktu ke waktu.
4. Primary key yang digunakan pada TBTransaksiDetail adalah “ID_Transaksi”.
Atribut kunci tersebut merupakan candidate key yang dibentuk dari
superkey hasil penggabungan 2 atribut yaitu : ID_Faktur dan ID_Barang
C. SECOND NORMAL FORM ( 2NF )
Suatu relasi berada dalam 2nd normal form jika dan hanya jika:
o Berada dalam bentuk first normal form (1-NF)
o Semua atribut bukan kunci memiliki dependensi sepenuhnya dengan kunci primer (Primary Key)
Jika
kita lihat kembali relasi bentuk 1-NF yang telah dibuat sebelumnya,
maka atribut bukan kunci pada table TBFaktur yang tidak memiliki
dependensi sepenuhnya dengan primary key (ID_Faktur), yaitu :
“Nama_Petugas”. Oleh sebab itu dekomposisi relasi perlu dilakukan
kembali dengan cara :
- Mengeliminasi atribut “Nama_Petugas” dari table TBFaktur
- Membuat tabel TBPetugas, menyediakan atribut-atribut yang terkait dengan identitas dan data pelanggan
THIRD NORMAL FORM ( 3NF )
Pada
Second Normal Form (2-NF) atribut yang terkait dengan “Nama_Pelanggan”
tidak didekomposisi dari table TBFaktur karena atribut tersebut masih
memiliki dependensi fungsional dengan primary key (ID_Faktur) karena
tiap nomor faktur akan berbeda untuk tiap pembeli/pelanggan. Tetapi pada
tahap 3-NF (Third Normal Form), atribut “Nama_Pelanggan” harus
didekomposisi relasi karena pada tahap ini atribut bukan kunci tidak
boleh ada yang berdependensi transitif dengan kunci primer.
Atribut “Nama_Pelanggan” dikatakan berdependensi transitif terhadap primary key (ID_Faktur) karena :
- ID_Pelanggan → Nama_Pelanggan (Nama_Pelanggan berdependensi fungsional terhadap ID_Pelanggan)
- ID_Faktur → ID_Pelanggan (ID_Pelanggan berdependensi fungsional terhadap ID_Faktur, karena tiap nomor faktur akan dikeluarkan untuk suatu ID_Pelanggan tertentu)
- Sehingga dikatakan bahwa ID_Faktur memiliki dependensi transitif terhadap atribut Nama_Pelanggan
0 comments:
Post a Comment