CONTOH KASUS NORMALISASI
- 1. STUDI KASUS TOKO ABC
No. Faktur :
Tanggal :
Kepada :
No. | Nama | Jumlah | Harga | Total |
Total Bayar | ||||
Diskon | ||||
Jumlah Bayar |
2. Data Dictionary
- No.Faktur - Jumlah - Diskon
- Tanggal - Harga - Jumlah Bayar
- Kepada - Total
- Nama - Total bayar
3. Tahap Normalisasi
TAHAP-TAHAP NORMALISASI DATA
Mendasar pada faktur yang tertera di atas, maka gambaran database yang belum ternormalisasi adalah sebagai berikut :- Tabel yang memiliki field dengan banyak data / tidak tungga
No_Faktur | 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 | Nama_pelanggan | Belanja1 | 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 |
First Normal form (1-NF)
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.
- Menentukan type data dari tiap atribut dan membuat digram relasional sebagai berikut
Id_Transaksi | Id_Faktur | Id_Barang | Harga | Jumlah |
01 | 05070101 | A01 | 1.500 | 1 |
01 | 05070101 | A02 | 10.000 | 1 |
01 | 05070101 | S02 | 3.500 | 1 |
01 | 05070101 | B01 | 2.000 | 1 |
02 | 05070102 | S01 | 5.600 | 1 |
02 | 05070102 | S03 | 2.500 | 1 |
02 | 05070102 | B02 | 4.000 | 1 |
02 | 05070102 | B03 | 1.500 | 1 |
03 | 05070103 | C01 | 12.000 | 1 |
03 | 05070103 | C02 | 2.500 | 1 |
03 | 05070103 | C03 | 13.000 | 1 |
03 | 05070103 | D02 | 16.000 | 1 |
04 | 06070001 | D03 | 25.000 | 1 |
Tabel Produk
Id_Barang | Nama_Barang | Harga_default |
A01 | Bedak | 1.500 |
A02 | Beras | 10.000 |
S01 | Baby Oil | 5.600 |
S02 | Minyak tanah | 3.500 |
S03 | Garam | 2.500 |
B01 | Buku | 2.000 |
B02 | Gula | 4.000 |
B03 | Pensil | 1.500 |
C01 | Sikat Gigi | 12.000 |
C02 | Sabun | 2.500 |
C03 | Odol | 13.000 |
D02 | Sampo | 16.000 |
D03 | Beras01 | 25.000 |
Table Faktur
Id_faktur | Tanggal | Id_Pelanggan | Nama_Pelanggan | Total_Bayar | Diskon | Id_Petugas | Nama_Petugas |
05070101 | 29/05/07 | P01 | Pitoyo | 20.600 | 0% | K01 | Didin |
05070102 | 29/05/07 | B01 | Bowo | 11.000 | 0% | J01 | Rina |
05070103 | 30/05/07 | E01 | Erlina | 41.500 | 0% | L02 | Rudi |
06070001 | 01/06/07 | D01 | Dayat | 25.000 | 0% | X02 | Amelia |
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 barang 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
Second Normal form (2-NF)
Suatu relasi berada dalam 2nd normal form jika dan hanya jika :
<–>Berada dalam bentuk first normal form (1-NF)
<–>Semua atribut bukan kunci memiliki dependensi sepenuhnya dengan kunci primer (Primary Key)
Jika ditelaah 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
Id_Faktur | Id_Barang | Harga | Jumlah |
05070101 | A01 | 1.500 | 1 |
05070101 | A02 | 10.000 | 1 |
05070101 | S02 | 3.500 | 1 |
05070101 | B01 | 2.000 | 1 |
05070102 | S01 | 5.600 | 1 |
05070102 | S03 | 2.500 | 1 |
05070102 | B02 | 4.000 | 1 |
05070102 | B03 | 1.500 | 1 |
05070103 | C01 | 12.000 | 1 |
05070103 | C02 | 2.500 | 1 |
05070103 | C03 | 13.000 | 1 |
05070103 | D02 | 16.000 | 1 |
06070001 | D03 | 25.000 | 1 |
Table Faktur
Id_faktur | Id_pelanggan | Nama_pelanggan | Id_petugas | tanggal | Total_bayar | Diskon |
05070101 | P01 | Pitoyo | K01 | 29/05/07 | 20.600 | 0% |
05070102 | B01 | Bowo | J01 | 29/05/07 | 11.000 | 0% |
05070103 | E01 | Erlina | L02 | 30/05/07 | 41.500 | 0% |
06070001 | D01 | Dayat | X02 | 01/06/07 | 25.000 | 0% |
Table Petugas
Id_petugas | Nama_petugas | Alamat | Telp |
K01 | Didin | Jl.aceh 12bandung | 0853335555 |
L02 | Rudi | Jl.Kiircon 23bandung | 0816334466 |
J01 | Rina | Jl.Buah batu 04 bandung | 022778652 |
X02 | Amelia | Jl.Jakarta 45bandung | 022998776 |
Tabel Produk
Id_Barang | Nama_Barang | Harga_default |
A01 | Bedak | 1.500 |
A02 | Beras | 10.000 |
S01 | Baby Oil | 5.600 |
S02 | Minyak tanah | 3.500 |
S03 | Garam | 2.500 |
B01 | Buku | 2.000 |
B02 | Gula | 4.000 |
B03 | Pensil | 1.500 |
C01 | Sikat Gigi | 12.000 |
C02 | Sabun | 2.500 |
C03 | Odol | 13.000 |
D02 | Sampo | 16.000 |
D03 | Beras01 | 25.000 |
Third Normal form (3-NF)
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
Tabel Transaksi Detail
Id_Faktur | Id_Barang | Harga | Jumlah |
05070101 | A01 | 1.500 | 1 |
05070101 | A02 | 10.000 | 1 |
05070101 | S02 | 3.500 | 1 |
05070101 | B01 | 2.000 | 1 |
05070102 | S01 | 5.600 | 1 |
05070102 | S03 | 2.500 | 1 |
05070102 | B02 | 4.000 | 1 |
05070102 | B03 | 1.500 | 1 |
05070103 | C01 | 12.000 | 1 |
05070103 | C02 | 2.500 | 1 |
05070103 | C03 | 13.000 | 1 |
05070103 | D02 | 16.000 | 1 |
06070001 | D03 | 25.000 | 1 |
Table Faktur
Id_faktur | Id_pelanggan | Id_petugas | tanggal | Total_bayar | Diskon |
05070101 | P01 | K01 | 29/05/07 | 20.600 | 0% |
05070102 | B01 | J01 | 29/05/07 | 11.000 | 0% |
05070103 | E01 | L02 | 30/05/07 | 41.500 | 0% |
06070001 | D01 | X02 | 01/06/07 | 25.000 | 0% |
Table petugas
Id_petugas | Nama_petugas | Alamat | Telp |
K01 | Didin | Jl.aceh 12bandung | 0853335555 |
L02 | Rudi | Jl.Kiircon 23bandung | 0816334466 |
J01 | Rina | Jl.Buah batu 04 bandung | 022778652 |
X02 | Amelia | Jl.Jakarta 45bandung | 022998776 |
Tabel produk
Id_Barang | Nama_Barang | Harga_default |
A01 | Bedak | 1.500 |
A02 | Beras | 10.000 |
S01 | Baby Oil | 5.600 |
S02 | Minyak tanah | 3.500 |
S03 | Garam | 2.500 |
B01 | Buku | 2.000 |
B02 | Gula | 4.000 |
B03 | Pensil | 1.500 |
C01 | Sikat Gigi | 12.000 |
C02 | Sabun | 2.500 |
C03 | Odol | 13.000 |
D02 | Sampo | 16.000 |
D03 | Beras01 | 25.000 |
Tabel pelanggan
Id_pelanggan | Nama_pelanggan | Alamat | Telp |
P01 | Pitoyo | Jl.Cibiru 12bandung | 0852222702382 |
B01 | Bowo | Jl.Ciwastra 02bandung | 081395210395 |
E01 | Erlina | Jl.Stasiun lama kircon 03bandung | 085722028127 |
D01 | Dayat | Jl.suci 24bandung | 02233445 |
- 2. STUDI KASUS NORMALISASI PENJUALAN BARANG PT. ALAMANDA
Membuat Bentuk Tidak Ternormalisasi
Bentuk tidak ternormalisasi dari kasus mengenai faktur penjualan barang, adalah sebagai berikut:
Nomor Faktur | Kode Pelanggan | Nama Pelanggan | Nama Barang | Kode Barang | Tanggal | Pelunasan | Jml | Harga | Total | Total Faktur |
F101 | P002 | Ir. Anjani | B001 B002 | Kulkas JVC TV Sony | 06/10/07 | 20/10/07 | 3 5 | 1.500.000 1.000.000 | 4.500.000 5.000.000 | 9.500.000 |
F106 | P004 | Ir. Adi Susanto | B001 B004 | Kulkas JVC TV Sharp | 08/10/07 | 22/10/07 | 4 5 | 1.500.000 800.000 | 6.000.000 4.000.000 | 10.000.000 |
Yaitu suatu tabel dikatakan dalam bentuk normal pertama hanya jika setiap kolom bernilai tunggal untuk setiap baris (Abdul kadir, 2003).
Bentuk normal pertama mempunyai cirri bahwa setiap data dibentuk dalam flat tabel (tabel datar/rata). Data dibentuk dalam satu record demi satu record dan nilai dari field-field.
Bentuk Normal Pertama dari kasus mengenai faktur penjualan barang, adalah sebagai berikut :
Nomor Faktur | Kode Pelanggan | Nama Pelanggan | Nama Barang | Kode Barang | Tanggal | Pelunasan | Jml | Harga | Total | Total Faktur |
F101 | P002 | Ir. Anjani | B001 | Kulkas JVC | 06/10/07 | 20/10/07 | 3 | 1.500.000 | 4.500.000 | 9.500.000 |
F101 | P002 | Ir. Anjani | B002 | TV Sony | 06/10/07 | 20/10/07 | 5 | 1.000.000 | 4.500.000 | 9.500.000 |
F106 | P004 | Ir. Adi Susanto | B001 | Kulkas JVC | 08/10/07 | 22/10/07 | 4 | 1.500.000 | 5.000.000 | 10.000.000 |
F106 | P004 | Ir. Adi Susanto | B004 | TV Sharp | 08/10/07 | 22/10/07 | 5 | 800.000 | 4.000.000 | 10.000.000 |
Bentuk Normal Kedua
Suatu tabel berada dalam bentuk normal kedua jika :
- Tabel berada dalam bentuk normal pertama
- Semua kolom bukan-kunci-primer tergantung sepenuhnya terhadap kunci primer.
Bentuk Normal Kedua dari kasus mengenai faktur penjualan barang, adalah sebagai berikut :
Tabel Barang
Kode_Barang(*) | Nama_Barang |
B001 | Kulkas JVC |
B002 | TV Sony |
B004 | TV Sharp |
Kode_Pelaggan(*) | Nama_Pelanggan |
P002 | Ir. Anjani |
P004 | Ir. Adi Sumanto |
Nomor Faktur(*) | Kode Pelanggan(**) | Tanggal | Pelunasan | Jml | Harga | Total Faktur |
F101 | P001 | 06/10/07 | 20/10/07 | 3 | 1.500.000 | 9.500.000 |
F101 | P001 | 06/10/07 | 20/10/07 | 5 | 1.000.000 | 9.500.000 |
F106 | P004 | 08/10/07 | 22/10/07 | 4 | 1.500.000 | 10.000.000 |
F106 | P004 | 08/10/07 | 22/10/07 | 5 | 800.000 | 10.000.000 |
*: kunci Primer dari tabel
**:kunci tamu/foreign key
Bentuk Normal Ketiga
Suatu tabel dikatakan dalam bentuk normal ketiga, apabila :
ü Berada dalam bentuk normal kedua,
ü Setiap kolom bukan kunci primer yang tidak memiliki ketergantungan secara transitif terhadap kunci primer
Bentuk Normal Ketiga dari kasus mengenai faktur penjualan barang, adalah sebagai berikut :
Tabel Barang
Kode_Barang(*) | Nama_Barang |
B001 | Kulkas JVC |
B002 | TV Sony |
B004 | TV Sharp |
Kode_Pelaggan(*) | Nama_Pelanggan |
P002 | Ir. Anjani |
P004 | Ir. Adi Sumanto |
Nomor Faktur(*) | Kode Pelanggan(**) | Tanggal | Pelunasan | Total Faktur |
F101 | P001 | 06/10/07 | 20/10/07 | 9.500.000 |
F101 | P001 | 06/10/07 | 20/10/07 | 9.500.000 |
F106 | P004 | 08/10/07 | 22/10/07 | 10.000.000 |
F106 | P004 | 08/10/07 | 22/10/07 | 10.000.000 |
Nomor Faktur(*) | Kode Barang(**) | Jml | Harga |
F101 | B001 | 3 | 1.500.000 |
F101 | B002 | 5 | 1.000.000 |
F106 | B001 | 4 | 1.500.000 |
F106 | B004 | 5 | 800.000 |
Keterangan :
*:kunci Primer dari tabel
**:kunci tamu/foreign keyilmu92.blogspot.com
Tidak ada komentar:
Posting Komentar