Konsep dasar normalisasi
Tanggal : Kepada :
| No. | Nama | Jumlah | Harga | Total |
| | | | | |
| | Total Bayar | | ||
| | Diskon | | ||
| | Jumlah Bayar | | ||
Basis Data Belum Ternormaliasasi
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 |
| 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
- 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.
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.
Second
<-->Berada dalam bentuk first normal form (1-NF)
<-->Semua atribut bukan kunci memiliki dependensi sepenuhnya dengan kunci primer (Primary Key)
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
- 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
PENERAPAN BAHASA SQL PADA REPORT
SQL yang Digunakan Untuk Membuat Report “Faktur Pembelian Barang”
FROM TBProduk
INNER JOIN (TBPetugas
INNER JOIN (TBPelanggan
INNER JOIN (TBFaktur
INNER JOIN TBTransaksiDetail
ON TBFaktur.ID_Faktur = TBTransaksiDetail.ID_Faktur)
ON TBPelanggan.ID_Pelanggan = TBFaktur.ID_Pelanggan)
ON TBPetugas.ID_Petugas = TBFaktur.ID_Petugas)
ON TBProduk.ID_Barang = TBTransaksiDetail.ID_Barang;
-->Total_perUnit, digunakan untuk menghitung total dari sejumlah jenis barang yang dibeli (Rumus Total_perUnit : Jumlah * Harga)
-->UangDisc, digunakan untuk menghitung besarnya potongan harga dari tiap barang yang dibeli (Rumus UangDisc : Diskon * Jumlah * Harga)
Komentar