Advanced Database Programming
Java Programming
Dosen : Berliano Ruska, M. Kom. 61
Diketahui sebuah Faktur Pembelian Barang seperti dibawah ini :
FAKTUR PEMBELIAN BARANG
No Faktur : 999 Kode Supplier : S-01 Tgl Faktur : 07-03-2003 Nama Supplier : Geovani
KODE NAMA JUMLAH HARGA JUMLAH
BARANG BARANG BELI BARANG BAYAR
B-01 Sepatu 10 175.000 1.750.000
B-02 Baju 9 75.000 675.000
Total Rp 2.425.000
Terbilang : dua juta empat ratus dua puluh lima ribu rupiah
Hormat kami,
Kasir
Dari contoh faktur diatas, kita akan mencoba melakukan proses normalisasi sesuai dengan tahapan-tahapannya. Dari faktur diatas kita akan mencoba menyusunnya menjadi sebuah tabel UNF (bentuk tidak normal). Adapun cara perancangan tabel UNF ini adalah sebagai berikut.
1. Menyusun semua data yang diketahui kedalam sebuah tabel
2. Kelompokkan / Urutkan data-data yang anda anggap saling berkaitan
dengan berpedoman pada 2 cara diatas, maka akan didapatkan hasil perancangan tabel UNF sebagai berikut:
NO KODE NAMA KODE NAMA TANGGAL JML HARGA JUMLAH
FAKTUR SUPPLIER SUPPLIER BARANG BARANG BELI BELI BELI BAYAR
999 S-01 Geovani B-01 Sepatu 07-03-03 10 175.000 1.750.000
999 S-01 Geovani B-02 Baju 07-03-03 9 75.000 675.000
Advanced Database Programming
Java Programming
Dosen : Berliano Ruska, M. Kom. 62
Setelah tabel unf selesai kita buat, maka kita telah menyelesaikan tahapan awal dari proses normalisasi. Selanjutnya adalah membentuk tabel 1NF (Bentuk Normal Pertama). Bentuk normal pertama ini tidak jauh berbeda bahkan mungkin saja sama dengan bentuk tidak normal. Adapun cara-caranya adalah sebagai berikut.
1. Kelompokkan / urutkan data data yang menurut anda saling berhubungan / berkaitan. 2. Lengkapi semua data-datanya.
3. Buang / singkirkan setiap item data yang merupakan hasil proses matematika.
Hasil perancangan tabel 1NF berbentuk Flat File.
NO KODE NAMA KODE NAMA TANGGAL JML HARGA
FAKTUR SUPPLIER SUPPLIER BARANG BARANG BELI BELI BELI
999 S-01 Memet B-01 Sepatu 07-03-03 10 175.000
999 S-01 Memet B-02 Baju 07-03-03 9 75.000
1000 S-02 Jeffry B-01 Sepatu 10-03-03 5 185.000
Sampai pada tahap ini kita telah memiliki satu file dengan sembilan field, yang tentu saja masih memiliki banyak kelemahan yaitu :
1. Inserting / Penyisipan
Kita tidak bisa memasukkan data supplier saja, karena dengan hanya menyisipkan data supplier saja maka banyak field yang tidak lengkap, dengan kata lain data supplier hanya bisa ditambahkan jika terjadi transaksi pembelian.
2. Updating / Pengubahan
Dengan adanya penulisan kode dan nama supplier berulang-ulang, maka, jika suatu waktu terjadi perubahan pada nama supplier kita harus merubah semua data yang mengandung hal tersebut. Hal ini sangat mempengaruhi kinerja dan konsistensi database yang kita rancang.
3. Deleting / Penghapusan
Jika kita melakukan penghapusan data barang B-01, maka seluruh data yang berkaitan dengan B-01 akan ikut terhapus.
4. Redundancy data
Perekaman data yang sama secara berulang-ulang.
Setelah kita mendapatkan tabel 1NF dengan segala karakteristik dan kelemahan-kelemahannya, maka langkah kita selanjutnya adalah membentuk tabel bentuk normal ke dua (2NF). Tabel 2NF ini dibentuk dengan cara mencari kunci-kunci field yang dapat dipakai sebagai patokan dalam pencarian data dan bersifat unik (tidak sama). Dari bentuk 1NF diatas kita dapat menentukan kunci kandidat yaitu :
Advanced Database Programming
Java Programming
Dosen : Berliano Ruska, M. Kom. 63
Nomor Faktur Kode Supplier Kode Barang
Dengan ketiga kunci diatas, buatlah tiga buah tabel, pisahkan semua elemen data yang berkaitan dengan nomor faktur, kode supplier, dan kode barang, lalu kelompokkan ke tabel-tabel yang telah ditentukan. Hasil perancangan 2NF adalah sebagai berikut.
TABEL BARANG
KODE NAMA
BARANG BARANG
B-01 Sepatu
B-02 Baju
Aturan lain pada proses normalisasi adalah : diperbolehkannya menambah item data yang dibutuhkan dan berhubungan dengan data tersebut, untuk saat ini kita menambahkan item harga barang, satuan barang dan stok barang (anda boleh menambahkan yang lainnya jika dianggap perlu). Sehingga akan didapat hasil sebagai berikut
KODE NAMA HARGA SATUAN STOK
BARANG BARANG BARANG BARANG BARANG
B-01 Sepatu 175000 Pasang 15 B-02 Baju 75000 Helai 7 TABEL SUPPLIER KODE NAMA SUPPLIER SUPPLIER S-01 Geovani S-02 Jeffry TABEL BARANG Kode Barang Nama Barang TABEL SUPPLIER Kode Supplier Nama Supplier TABEL BARANG Kode Barang * Nama Barang Harga Barang Satuan Barang Stok Barang
Advanced Database Programming
Java Programming
Dosen : Berliano Ruska, M. Kom. 64
Pada file supplier ini kita menambahkan item data Nomor Telpon dan Alamat Supplier, sehingga akan didapat hasil sebagai berikut
KODE NAMA NOMOR ALAMAT
SUPPLIER SUPPLIER TELEPON SUPPLIER
S-01 Geovani 856850 Jl. Paus S-02 Jeffry 856860 Jl. Belimbing
TABEL PEMBELIAN
NO TANGGAL KODE KODE JML HARGA
FAKTUR BELI SUPPLIER BARANG BELI BELI
999 07-03-03 S-01 B-01 10 180000
999 07-03-03 S-01 B-02 9 80000
1000 10-03-03 S-02 B-01 5 185000
Setelah kita melakukan pemecahan tabel seperti diatas maka sebagian dari pertanyaan atau kondisi yang harus dipenuhi telah terjawab. Tapi ada satu PERMASALAHAN lagi..!!! pada tabel pembelian, field jumlah beli dan harga tidak hanya tergantung pada nomor faktur, tetapi tergantung juga pada kode supplier, tanggal beli, dan kode barang. Hal ini disebut dengan ketergantungan transitif dan harus dipisahkan dalam dua tabel atau lebih. dan yang tidak kalah pentingnya adalah masih adanya data yang sama untuk jenis yang sama ditulis berulang-ulang.
Berdasarkan permasalahan yang masih terjadi, maka dilakukan proses normalisasi tahap selanjutnya, yakni pembentukan tabel 3NF. Tabel 3NF ini mempunyai syarat tidak boleh ada ketergantungan transitif dan harus bergantung sepenuhnya pada kunci utama. Hasil perancangannya sebagai berikut.
TABEL SUPPLIER Kode Supplier * Nama Supplier Nomor Telepon Alamat Supplier TABEL PEMBELIAN Nomor Faktur Tanggal Beli Kode Supplier Kode Barang Jml Beli Harga Beli
Advanced Database Programming
Java Programming
Dosen : Berliano Ruska, M. Kom. 65
FILE MASTER PEMBELIAN
NO TANGGAL KODE
FAKTUR BELI SUPPLIER
999 07-03-03 S-01
1000 10-03-03 S-02
FILE DETAIL PEMBELIAN
NOMOR KODE JML HARGA
FAKTUR BARANG BELI BELI
999 B-01 10 175.000 999 B-02 9 80.000 1000 B-01 5 185.000 TABEL MASTER PEMBELIAN Nomor Faktur * Tanggal Beli Kode Supplier TABEL DETAIL PEMBELIAN Nomor Faktur * Kode Barang ** Jml Beli Harga Beli
Advanced Database Programming
Java Programming
Dosen : Berliano Ruska, M. Kom. 66
Diketahui sebuah Daftar Penjualan Barang seperti dibawah ini :
DAFTAR PENJUALAN BARANG
BULAN MARET 2003
NO KODE NAMA KODE NAMA TANGGAL JML HARGA TOTAL
FAKTUR PELANGGAN PELANGGAN BARANG BARANG JUAL JUAL JUAL BAYAR
999 P-01 Andi B-01 Sepatu 07-03-03 10 180.000 1.800.000 999 P-01 Andi B-02 Baju 07-03-03 9 80.000 720.000 1000 P-02 Rudi B-01 Sepatu 10-03-03 5 185.000 925.000 TABEL PELANGGAN KODE NAMA PELANGGAN PELANGGAN P-01 Andi P-02 Rudi
Pada file pelanggan ini kita menambahkan item data Nomor Telpon dan Alamat pelanggan, sehingga akan didapat hasil sebagai berikut
KODE NAMA NOMOR ALAMAT
PELANGGAN PELANGGAN TELEPON PELANGGAN
P-01 Andi 856850 Jl. Nangka P-02 Rudi 856860 Jl. Manggis TABEL PELANGGAN Kode pelanggan Nama pelanggan TABEL PELANGGAN Kode pelanggan * Nama pelanggan Nomor Telepon Alamat pelanggan
Advanced Database Programming
Java Programming
Dosen : Berliano Ruska, M. Kom. 67
TABEL PENJUALAN
NO TANGGAL KODE KODE JML HARGA
FAKTUR JUAL PELANGGAN BARANG JUAL JUAL
999 07-03-03 P-01 B-01 10 180.000
999 07-03-03 P-01 B-02 9 80.000
1000 10-03-03 P-02 B-01 5 185.000
FILE MASTER PENJUALAN
NO TANGGAL KODE
FAKTUR JUAL PELANGGAN
999 07-03-03 P-01
1000 10-03-03 P-02
FILE DETAIL PENJUALAN
NOMOR KODE JML HARGA
FAKTUR BARANG JUAL JUAL
999 B-01 10 180000
999 B-02 9 80000
1000 B-01 5 185000
Setelah Tabel 3NF selesai, maka langkah selanjutnya adalah pengujian terhadap hasil rancangan database, dilakukan dengan cara mengecek hubungan / relationship antar tabel. Jika tidak terdapat hubungan / relasi antar database, maka perancangan database yang saudara lakukan GAGAL TOTAL !!!. Berikut ini adalah hasil penghubungan / relasional antar file.
TABEL MASTER PENJUALAN Nomor Faktur * Tanggal Jual Kode Pelanggan TABEL PENJUALAN Nomor Faktur Tanggal Jual Kode Pelanggan Kode Barang Jml Jual Harga Jual TABEL DETAIL PENJUALAN Nomor Faktur * Kode Barang ** Jml Jual Harga Jual
Advanced Database Programming
Java Programming
Dosen : Berliano Ruska, M. Kom. 68
Dengan memanfaatkan hasil normalisasi untuk transaksi tunai diatas, tugas anda :
1. Untuk No. BP ganjil buat program untuk penjualan 2. Untuk No. BP genap buat program untuk pembelian 3. 1 kelompok maksimal 3 orang
TABEL BARANG Kode Barang * Nama Barang Harga Barang Satuan Barang Stok Barang TABEL MASTER PEMBELIAN Nomor Faktur * Tanggal Beli Kode Supplier ** TABEL DETAIL PEMBELIAN Nomor Faktur * Kode Barang ** Jml Beli Harga Beli TABEL SUPPLIER Kode Supplier * Nama Supplier Nomor Telepon Alamat Supplier TABEL DETAIL PENJUALAN Nomor Faktur * Kode Barang ** Jml Jual Harga Jual TABEL MASTER PENJUALAN Nomor Faktur * Tanggal Jual Kode Pelanggan ** TABEL PELANGGAN Kode pelanggan * Nama pelanggan Nomor Telepon Alamat pelanggan