BAB 3
ANALISIS DAN PERANCANGAN
3.1 Latar Belakang Perusahaan 3.1.1 Sejarah Perusahaan
PT Mejisinar Kasih merupakan perusahaan yang bergerak di bidang Air Minum Dalam Kemasan (AMDK). Perusahaan ini beralamat di Jalan Raya Bogor Km. 26,6 Ciracas Jakarta 13069 dan didirikan pada tanggal 14 Juni 1990, dimana pada awalnya perusahaan ini berada di bawah manajemen PT Astra Internasional sebagai perusahaan pendukung dalam penyediaan air minum. Sejalan dengan perjalanan waktu, perusahaan mulai berkembang menjadi perusahaan menengah dengan produknya yang mulai dikenal oleh pasar dan mulai menyuplai air minum ke perusahaan dan pabrik lain. Pada tahun 1998 terjadi krisis moneter di Indonesia dan menyebabkan perusahaan ini berhenti beroperasi selama 4 tahun, sehingga pada akhir tahun 2002 perusahaan ini berganti kepemilikan dan sudah tidak di bawah manajemen PT Astra Internasional.
Perusahaan ini memproduksi Air Minum Dalam Kemasan (AMDK) dengan label produk Bonanza dan Osmosis. Air baku yang digunakan adalah sumber air dari sumur dalam yang kemudian diproses kembali dengan menggunakan metode Reverse Osmosis. Pada saat ini sesuai dengan kemampuannya perusahaan ini telah memproduksi air minum dalam kemasan galon, botol, dan gelas. Menanggapi persyaratan pasar, pihak perusahaan berkeinginan menjaga mutu produksinya secara
konsisten yang mengacu kepada persyaratan Standar Nasional Indonesia (SNI) dan tetap memperhatikan akan kesehatan, keselamatan, keamanan, dan lingkungan hidup.
3.1.2 Visi dan Misi Perusahaan
Perusahaan memiliki sebuah visi yaitu berkomitmen untuk selalu memenuhi harapan dan kepuasan pelanggan dalam hal mutu produk Air Minum Dalam Kemasan (AMDK) yang akan diberikan. Sedangkan misinya adalah bertekad untuk selalu memenuhi mutu produksi dan menjaga secara konsisten berdasarkan pada acuan Standar Nasional Indonesia (SNI) 01 – 3553 – 1996. Perusahaan ini selalu melakukan evaluasi terhadap sistem mutu yang diterapkan di perusahaannya, antara lain:
• Meningkatkan dan menjaga mutu produksi Air Minum Dalam Kemasan (AMDK) berdasarkan Standar Nasional Indonesia (SNI). • Meningkatkan kekompakan kerja seluruh karyawan untuk
Direktur Keuangan Produksi / QC Personalia Pemasaran Kasir Pembelian Keamanan Produksi Teknik / Listrik Gudang Penjualan 3.1.3 Struktur Organisasi
Berikut ini adalah struktur organisasi PT Mejisinar Kasih :
Gambar 3.1 Struktur Organisasi
3.1.4 Tugas dan Tanggung Jawab 1. Direktur
• Tugas
- Menyetujui dan mengesahkan rencana kerja untuk satu tahun anggaran.
- Mengesahkan dokumen sistem manajemen mutu.
- Memantau pelaksanaan manajemen keuangan perusahaan setiap hari kerja.
• Tanggung jawab
- Memimpin, mengkoordinasi, mengarahkan, dan mengawasi seluruh kegiatan perusahaan.
- Mengambil keputusan dan kebijakan yang telah ditetapkan oleh perusahaan.
- Memilih Wakil Manajemen untuk penerapan sistem manajemen mutu perusahaan.
- Menerima dan mengevaluasi laporan pelaksanaan kegiatan di perusahaan.
- Mengangkat dan memberhentikan karyawan tetap. 2. Personalia
• Tugas
- Menerima dan mendistribusikan surat – surat masuk ke perusahaan.
- Menyimpan dan memelihara dokumen karyawan. - mengevaluasi laporan dari keamanan.
- Menjalankan administrasi karyawan. • Tanggung jawab
- Merencanakan penerimaan karyawan. - Merencanakan pelatihan internal karyawan.
- Mengembangkan dan menetapkan peraturan karyawan yang disesuaikan dengan peraturan Pemerintah.
- Merencanakan program kerja sama dengan lingkungan masyarakat.
3. Keuangan • Tugas
- Mengeluarkan dan membayarkan uang pembelian bahan penolong serta gaji karyawan dan pembayaran – pembayaran lainnya sesuai aturan perusahaan.
- Melaporkan kegiatan keuangan triwulan kepada direktur.
- Membicarakan kegiatan arus keuangan setiap hari atau setiap saat dengan direktur.
- Mengevaluasi kegiatan penggunaan uang setiap hari. - Mencatat seluruh kegiatan keuangan setiap hari.
- Menerima laporan kegiatan keuangan dari kasir dan pembelian. • Tanggung jawab
- Menyusun kebijakan keuangan yang berhubungan dengan kegiatan akuntansi, administrasi keuangan, pengaturan sumber dana, dan penggunaan dana perusahaan.
- Mengkoordinir dan mengawasi transaksi keuangan. - Menugaskan kasir membayar gaji karyawan. - Mengawasi kelancaran keuangan perusahaan.
4. Produksi / QC • Tugas
- Mengkoordinir karyawan dalam proses produksi untuk melaksanakan tugasnya sesuai prosedur yang telah diterapkan. - Mengatur kelancaran proses produksi dari tahap bahan baku air
sampai produk jadi.
- Memeriksa dan menguji bahan baku, produksi jadi sesuai dengan Standar Nasional Indonesia (SNI).
- Menyiapkan standar mutu sebagai acuan. • Tanggung jawab
- Bertanggung jawab di dalam proses produksi. - Bertanggung jawab atas mutu bahan baku air.
- Bertanggung jawab atas kesesuaian mutu produk akhir. - Bertanggung jawab atas arus persediaan bahan penolong. 5. Distribusi / Pemasaran
• Tugas
- Mengkoordinasikan dan mengidentifikasi informasi pasar. - Melaksanakan program promosi untuk mengikatkan daya saing. - Memelihara dan menyimpan dokumen penjualan.
- Membuat dan melaporkan mekanisme pasar kepada direktur selama tiga bulan penjualan.
• Tanggung jawab
- Bertanggung jawab atas perkembangan pasar penjualan. - Bertanggung jawab atas kebijakan promosi dan penagihan. - Bertanggung jawab atas pelayanan dan hubungan baik dengan
konsumen dan distributor. 6. Keamanan
• Tugas
- Memegang dan melaksanakan absensi karyawan.
- Membuat laporan absensi dan disampaikan ke bagian personalia.
- Menjaga keamanan pabrik. 7. Kasir
• Tugas
- Menerima semua uang masuk, baik berupa tunai, giro, maupun cek.
- Membantu bagian keuangan menyetor cek atau giro ke rekening bank.
- Mengelola kas kecil untuk pengeluaran dana harian yang berjumlah kecil.
- Membayar gaji dan uang lembur karyawan. 8. Pembelian
• Tugas
- Mendata kemampuan supplier untuk memasok barang, harga barang, mutu, jumlah, dan jadwal pengiriman barang.
- Menyiapkan order pembelian untuk disetujui bagian keuangan. - Mengawasi penerimaan barang sesuai dengan order.
- Memelihara dan menyimpan seluruh catatan pembelian bahan penolong.
• Tanggung jawab
- Bertanggung jawab atas kesesuaian persyaratan mutu barang – barang yang dibeli.
9. Produksi • Tugas
- Mencatat jumlah produksi ke dalam buku induk / harian.
- Melaporkan kepada bagian produksi atas temuan ketidaksesuaian proses produksi dan mutu produksi.
- Memeriksa tingkat kebersihan galon sebelum diisi.
- Membuat laporan produksi setiap 3 bulan kepada Direktur. • Tanggung jawab
- Bertanggung jawab atas tersedia wadah di tempat produksi. - Bertanggung jawab atas kebersihan ruangan atau tempat
produksi.
- Bertanggung jawab kepada bagian produksi (QC) atas mutu produksi.
- Bertanggung jawab atas penyelesaian klaim pelanggan atau masyarakat pemakai.
10.Teknik / listrik • Tugas
- Mengajukan alternatif dan usulan pembelian suku cadang serta peralatan produksi.
- Memeriksa tingkat kebersihan alat / mesin produksi baik sebelum dan sesudah dioperasikan.
- Memelihara, merawat mesin / peralatan dan instalasi listrik. • Tanggung jawab
- Bertanggung jawab atas kesiapan operasi alat – alat produksi. - Bertanggung jawab atas pelaksanaan perawatan alat – alat
produksi. 11.Gudang
• Tugas
- Mencatat jumlah bahan penolong yang keluar masuk gudang. - Mencatat jumlah produksi akhir yang keluar masuk gudang. - Menjaga tingkat kerapian, kebersihan, dan keamanan gudang. - Memberi identifikasi barang setiap barang masuk gudang dan
melaksanakan penggunaan barang dengan sistem FIFO. • Tanggung jawab
- Bertanggung jawab atas keselamatan bahan penolong dan produksi yang tersimpan dalam gudang.
- Bertanggung jawab atas pemberian identifikasi atas bahan baku dan produk jadi yang ada dalam gudang.
12.Penjualan • Tugas
- Menganalisa dan mendata persaingan yang terjadi di pasar. - Mengusulkan program promosi untuk meningkatkan penjualan
dan memperluas pasar.
- Mengajukan anggaran biaya untuk keperluan promosi.
- Melaporkan kepada bagian pembelian kendala – kendala yang terjadi di pasar.
• Tanggung jawab
- Bertanggung jawab atas naik turunnya tingkat penjualan. - Bertanggung jawab atas pengiriman produk jadi kepada pasar.
3.2 Analisis Permasalahan
3.2.1 Sistem yang Sedang Berjalan
Berikut ini adalah prosedur sistem transaksi yang dilakukan pada PT Mejisinar Kasih :
• Prosedur pendaftaran pelanggan
Sebelum melakukan transaksi pemesanan barang, calon pelanggan harus melakukan pendaftaran terlebih dahulu kepada staf bagian distribusi / pemasaran. Pendaftaran dilakukan agar staf bagian distribusi dapat mengecek kelayakan calon pelanggan, jika calon
pelanggan dianggap layak maka staf bagian distribusi akan meneruskan pendaftaran calon pelanggan kepada staf bagian penjualan. Staf bagian penjualan kemudian akan menerbitkan Bukti Pesanan (BP) 4 rangkap.
Lembar 1 (putih) ditujukan ke bagian penjualan. Lembar 2 (merah) ditujukan ke bagian distribusi. Lembar 3 (kuning) diberikan kepada pelanggan. Lembar 4 (hijau) dijadikan sebagai arsip.
Jika pelanggan sudah tidak ingin berlangganan lagi, maka lembar 1 akan dikembalikan kepada pelanggan.
Gambar 3.2 Diagram Alir Dokumen pada Tahap Pendaftaran • Prosedur pemesanan barang
Jika pelanggan tidak melakukan perubahan pesanan, maka barang akan dikirim secara rutin sesuai dengan perjanjian yang ada di BP. Jika pelanggan ingin melakukan perubahan pesanan, maka pelanggan harus melakukannya minimal sehari sebelum jadwal pengiriman barang dan
paling lambat sampai dengan jam 12.00 siang. Staf bagian penjualan akan melihat jadwal pengiriman barang pada hari tersebut, kemudian menerbitkan Puchased Order (PO) 2 rangkap.
Lembar 1 (putih) ditujukan ke bagian distribusi. Lembar 2 (merah) ditujukan ke bagian penjualan.
• Prosedur pengeluaran barang
Setelah menerima PO dari bagian penjualan, maka staf bagian distribusi akan membuat Rencana Kerja Distribusi (RKD) 3 rangkap. RKD lembar 2 akan digunakan oleh driver sebagai panduan dalam melakukan distribusi barang.
Lembar 1 (putih) ditujukan ke bagian gudang. Lembar 2 (merah) ditujukan ke driver.
Lembar 3 (Kuning) digunakan sebagai arsip.
Kemudian staf bagian distribusi juga akan menerbitkan Bukti Pengeluaran Barang Jadi (BPBJ) 3 rangkap yang digunakan agar staf bagian gudang dapat mengeluarkan barang yang diminta dan nantinya digunakan untuk mencocokkan antara barang yang diminta, barang yang diberikan, dan barang yang dijual.
Lembar 1 (putih) ditujukan kepada bagian distribusi. Lembar 2 (merah) ditujukan kepada bagian gudang. Lembar 3 (hijau) ditujukan kepada pengambil / driver.
Staf bagian distribusi juga akan menerbitkan Surat Jalan (SJ) 4 rangkap yang berisi nama dan alamat pelanggan, nama barang dan jumlah barang yang dijual akan diisi oleh driver.
Lembar 1 (putih) dan lembar 4 (hijau) diberikan kepada pelanggan (lembar 1 diberikan apabila pembayaran telah dilakukan).
Lembar 2 (merah) ditujukan ke bagian penjualan. Lembar 3 (kuning) digunakan sebagai arsip.
Staf bagian distribusi akan menyerahkan RKD lembar 2, seluruh BPBJ, dan seluruh SJ ke staf bagian gudang.
• Prosedur pengiriman barang
Setelah menerima BPBJ dari staf bagian distribusi, maka staf bagian gudang akan memberikan barang sesuai dengan yang diminta kepada driver beserta RKD lembar 2 dan seluruh SJ. Driver akan mengirim barang sesuai dengan RKD dan akan mengisi SJ pelanggan sesuai dengan jumlah barang yang dipesan atau sesuai dengan jumlah galon kosong yang tersedia di pihak pelanggan. Untuk pengiriman produk galon, jika barang yang diminta oleh pelanggan lebih besar dari jumlah pemesanan di RKD, maka driver harus mengecek apakah jumlah barang yang tersedia masih dapat mencukupi seluruh pesanan pelanggan. Jika ternyata jumlah barang masih mencukupi, maka perubahan pesanan dapat dilakukan. Jika tidak, maka jumlah barang yang diberikan sesuai dengan jumlah yang tertera di RKD.
Gambar 3.6 Diagram Alir Dokumen pada Tahap Pengiriman (Lanjutan)
• Prosedur penagihan
Setiap akhir bulan staf bagian penjualan membuat Surat Penagihan (SP) rangkap 3 berdasarkan pada SJ pelanggan pada bulan tersebut.
Lembar 1 (putih) dan lembar 3 (kuning) diberikan kepada pelanggan (lembar 1 SP diberikan apabila pembayaran telah dilakukan beserta dengan lembar 1 SJ).
Lembar 2 (merah) digunakan sebagai arsip.
Jika tidak langsung melakukan pembayaran, maka pihak pelanggan harus memberikan tanda terima bahwa telah menerima SP dari PT Mejisinar Kasih dan akan diberikan batas waktu sesuai dengan perjanjian. Kolektor akan melakukan penagihan kembali sesuai dengan batas waktu yang telah dijanjikan.
Gambar 3.7 Diagram Alir Dokumen pada Tahap Penagihan
Untuk pelanggan dengan jenis pembayaran lunas, maka pada saat dilakukan pengiriman barang selain diterbitkan SJ, diterbitkan pula SP yang berisi nama pelanggan, alamat pelanggan, dan harga barang. Jumlah barang akan diisi sendiri oleh driver karena harus sesuai dengan SJ. Jika pembayaran telah dilakukan maka driver akan
menyerahkan SJ lembar 1 dan 4 kepada pelanggan, serta SP lembar 1 dan 3.
• Prosedur serah terima produk jadi
Setelah melakukan produksi, staf bagian produksi akan memindahkan barang ke gudang beserta Bukti Serah Terima Produk Jadi (BSTPJ) 2 rangkap.
Lembar 1 (putih) ditujukan ke bagian produksi. Lembar 2 (merah) ditujukan ke bagian gudang.
• Prosedur retur barang
Jika pelanggan ingin melakukan retur barang, maka pada saat pengiriman barang pelanggan dapat langsung mengajukan retur ke driver. Driver akan memeriksa apakah barang tersebut dapat diretur, jika dapat diretur maka barang yang ingin diretur dapat langsung ditukar dengan barang yang baru selama masih terdapat sisa barang di armada dan driver akan mengeluarkan Surat Retur (SR) 3 rangkap. Lembar 1 (putih) yang ditujukan ke bagian gudang.
Lembar 2 (merah) yang ditujukan ke bagian produksi. Lembar 3 (kuning) yang ditujukan ke bagian pelanggan.
Jika barang tidak tersedia di armada, maka retur barang akan dilakukan pada pengiriman berikutnya setelah driver mempersiapkan barang yang akan diretur.
Berikut ini adalah DFD (Data Flow Diagram) yang sedang berjalan dalam perusahaan.
• Diagram konteks
• Diagram nol
Gambar 3.11 DFD Diagram Nol 3.2.2 Permasalahan yang Dihadapi
Saat ini PT Mejisinar Kasih sudah mempunyai sekitar 500 pelanggan tetap dengan jumlah rata – rata transaksi sebesar 150 transaksi setiap harinya.
Berdasarkan gambaran sistem yang sedang berjalan dapat diketahui permasalahan – permasalahan yang dihadapi oleh perusahaan ini, antara lain:
• Prosedur pemesanan barang
Bagian penjualan mengalami kesulitan dalam membuat PO untuk pelanggan, sebab bagian penjualan harus selalu mengecek jadwal pengiriman beserta jumlah barang yang akan dikirimkan kepada setiap pelanggan berdasarkan BP yang telah disepakati antara pihak pelanggan dengan pihak perusahaan.
• Prosedur pengeluaran dan penerimaan barang
Karena data belum terintegrasi antara bagian gudang, distribusi dan penjualan, maka bagian distribusi dan penjualan harus selalu menghubungi bagian gudang terlebih dahulu untuk mendapatkan informasi mengenai sisa barang yang ada di gudang barang jadi.
• Prosedur penagihan
Perhitungan tagihan pelanggan masih dilakukan secara manual sehingga memungkinkan terjadinya kesalahan. Selain itu harga barang yang dijual untuk setiap pelanggan tidak sama, karena semua harga tergantung pada BP yang telah disepakati antara pihak pelanggan dengan pihak perusahaan. Permasalahan yang lainnya adalah bagian penjualan tidak dapat langsung mengetahui pelanggan mana yang tagihannya sudah melewati tanggal jatuh tempo karena harus melakukan pengecekan terlebih dahulu terhadap setiap tagihan yang ada.
3.2.3 Usulan Pemecahan Masalah • Prosedur pemesanan barang
Dibuat sebuah sistem yang dapat mengelompokkan pelanggan berdasarkan hari kirim beserta barang dan jumlah barang yang akan dikirimkan, sehingga dapat mempercepat proses pembuatan PO dan pengiriman barang.
• Prosedur pengeluaran dan penerimaan barang
Dibuat sebuah sistem yang terintegrasi antara bagian gudang, distribusi dan penjualan, sehingga bagian distribusi dan penjualan dapat langsung mengetahui persediaan barang yang ada saat ini dan tidak perlu menanyakan ke bagian gudang terlebih dahulu lagi.
• Prosedur penagihan
Dibuat sebuah sistem yang dapat menghitung jumlah tagihan yang harus dibayar oleh semua pelanggan berdasarkan jumlah barang yang telah diterima dan harga barang untuk masing – masing pelanggan. Selain itu sistem juga akan memberitahukan daftar pelanggan yang penagihannya sudah melewati jatuh tempo.
Berdasarkan usulan pemecahan masalah di atas, maka solusi yang baik dan bermanfaat bagi pihak perusahaan adalah dengan membuat suatu sistem basis data, sehingga segala jenis data, seperti PO, surat pengeluaran barang, surat jalan, dapat tersimpan dengan baik. Dan ketika dibutuhkan, dapat dengan cepat memperoleh data – data yang diperlukan.
3.3 Perancangan Basis Data Koseptual 3.3.1 Mengidentifikasi Tipe Entiti
Berikut ini merupakan tabel yang menjelaskan entiti – entiti yang digunakan dalam perancangan basis data.
Entiti Deskripsi Alias Kemunculan Pegawai Berhubungan dengan
semua pegawai yang bekerja pada PT Mejisinar Kasih
Staf Setiap pegawai dapat melayani banyak PO, RKD, BPBJ, SJ, retur jual, penagihan dan pembayaran.
Pelanggan Berhubungan dengan semua pelanggan yang membeli barang pada PT Mejisinar Kasih
Konsumen Setiap pelanggan dapat memesan barang dan dapat melakukan retur penjualan
Jabatan Berhubungan dengan semua jabatan yang berlaku dalam proses bisnis PT Mejisinar Kasih
Position Setiap pegawai
memiliki satu jabatan sesuai dengan tugas dan tanggung jawabnya
BP Berhubungan dengan
semua jenis barang yang dipesan oleh pelanggan, jumlah pengiriman barang, harga dari setiap barang dan jadwal pengiriman barang
Pendaftaran Setiap BP dibuat pada awal pemesanan barang milik pelanggan serta bila terjadi perubahan jadwal kirim, harga barang, jumlah pengiriman barang dan
penambahan atau pengurangan jenis barang PO Berhubungan dengan semua pemesanan barang yang dilakukan oleh pelanggan
Invoice Setiap PO dibuat berdasarkan BP, tetapi masih dimungkinkan untuk mengalami perubahan jika ada pemberitahuan
perubahan pesanan oleh pelanggan
Entiti Deskripsi Alias Kemunculan
SJ Berhubungan dengan
semua pengiriman barang terhadap pelanggan serta jumlah barang yang
diterima oleh pelanggan
Surat Jalan Informasi pengiriman barang berupa jumlah barang yang diterima oleh pelanggan ditulis kedalam SJ setiap kali melakukan pengiriman barang
Penagihan Berhubungan dengan semua penagihan penjualan terhadap pelanggan
Penagihan Penagihan dilakukan setiap hari atau setiap bulan berdasarkan pada jenis pembayaran pelanggan yang ada di BP
Barang Barang yang dijual oleh PT Mejisinar Kasih
Produk Barang dibutuhkan dalam transaksi penjualan
BPBJ Berhubungan dengan jumlah barang yang
keluar dari gudang
Pengeluaran Barang
Barang dikeluarkan dari gudang barang jadi pada saat ada pengiriman barang
BSTPJ Berhubungan dengan jumlah barang yang masuk ke gudang
Peneriman Barang
Pemasukkan barang jadi dari produksi ke gudang barang jadi ReturJual Berhubungan dengan
semua pengembalian
barang yang dilakukan pelanggan
Retur Pelanggan dapat
menukarkan barang yang dipesannya jika terjadi kerusakan pada barang yang diterima
RKD Berhubungan dengan
semua urutan jadwal pengiriman barang untuk pelanggan
Rencana Kerja Distribusi
Setiap kali melakukan pengiriman barang bagian distribusi membuat RKD untuk tiap kendaraan tertentu Kendaraan Berhubungan dengan
informasi semua kendaraan pengirim barang
Armada Kendaraan digunakan pada saat pengiriman
barang kepada pelanggan
3.3.2 Mengidentifikasi Tipe Relasi
Entiti Multiplicity Relasi Entiti Multiplicity
Pegawai 1..1 Menangani PO 0..* Pegawai 1..1 Menangani BP 0..*
Pegawai 1..1 Menangani Penagihan 0..*
Pegawai 1..1 Menangani Penagihan 0..*
Pegawai 1..1 Menangani Penagihan 0..*
Pegawai 1..1 Menangani RKD 0..* Pegawai 1..1 Menangani RKD 0..* Pegawai 1..1 Menangani RKD 0..* Pegawai 1..1 Menangani RKD 0..*
Pegawai 1..1 Menangani ReturJual 0..*
Pegawai 1..1 Menangani BPBJ 0..* Pegawai 1..1 Menangani BSTPJ 0..*
Pegawai 1..1 Menangani SJ 0..*
Jabatan 1..1 Mempunyai Pegawai 1..*
Pelanggan 1..1 Memiliki BP 1..*
Pelanggan 1..1 Memiliki ReturJual 0..*
BP 1..* Memiliki Barang 1..* PO 1..* Memiliki Barang 1..* PO 1..1 Memiliki SJ 1..1 BP 1..1 Memiliki PO 1..* BSTPJ 1..* Menambah Barang 1..* RKD 1..1 Memiliki PO 1..* RKD 1..1 Menghasilkan BPBJ 1..1 Kendaraan 1..1 Digunakan RKD 1..* Penagihan 1..1 BerdasarkanPada SJ 1..* BPBJ 1..* Mengurangi Barang 1..*
ReturJual 0..* Memiliki Barang 1..*
SJ 1..* Memiliki Barang 1..*
Gambar 3.12 Diagram ER yang menunjukkan tipe entiti dan relasi
3.3.3 Identifikasi Atribut dan Tipe Entitas
Entiti Atribut Panjang Jenis Null MultiValue Derived Pegawai kodePegawai namaPegawai alamatPegawai kota kodePos kecamatan kelurahan tglLahir jenisKelamin tglMasukKerja noTelepon noHP statusPegawai 10 30 100 30 - 30 30 8 1 8 12 12 1 Char VarChar VarChar VarChar Integer VarChar VarChar DateTime Char DateTime VarChar VarChar Boolean No No No No No No No No No No Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No
Entiti Atribut Panjang Jenis Null MultiValue Derived Pelanggan kodePelanggan namaPelanggan alamatPengiriman kotaKirim kodePosKirim kecKirim kelKirim alamatPenagihan kotaTagih kodePosTagih kecTagih kelTagih NPWP noTelepon noFax statusPelanggan 10 30 100 30 - 30 30 100 30 - 50 50 25 12 12 1 Char VarChar VarChar VarChar Integer VarChar VarChar VarChar VarChar Integer VarChar VarChar VarChar VarChar VarChar Boolean No No No No No No No No No No No No Yes No Yes No No No No No No No No No No No No No No Yes Yes No No No No No No No No No No No No No No No No No Jabatan kodeJabatan namaJabatan 6 30 Char VarChar No No No No No No BP kodeBP tgl jenisPembayaran jmlPinjamanGalon hargaPinjamanGalon hariKirim statusBP 10 8 1 - - 6 1 Char DateTime Char Integer Money VarChar Boolean No No No No No No No No No No No No Yes No No No No No No No No PO kodePO tgl 10 8 DateTimeChar No No No No No No BSTPJ kodeBSTPJ tgl 10 8 Char DateTime No No No No No No BPBJ kodeBPBJ tgl 10 8 Char DateTime No No No No No No Barang kodeBarang namaBarang merek satuan stok 6 30 30 30 - Char VarChar VarChar VarChar Integer No No No No No No No No No No No No No No No RKD kodeRKD tgl keterangan 10 8 100 Char DateTime VarChar No No Yes No No No No No No
Entiti Atribut Panjang Jenis Null MultiValue Derived Kendaraan noPolisi merekMobil tipe tahun kapasitasStd kapasitasOpt statusKendaraan keterangan 8 30 30 4 - - 1 100 VarChar VarChar VarChar Integer Integer Integer Boolean VarChar No No No No No No No Yes No No No No No No No No No No No No No No No No SJ kodeSJ tgl totalDijual 10 8 - Char DateTime Money No No Yes No No No No No Yes Penagihan kodePenagihan tglPenagihan tglJatuhTempo tglPembayaran jumlah disc ppn totalPenagihan statusTagih 10 8 8 8 - - - - 1 Char DateTime DateTime DateTime Money Float Float Money Boolean No No No No No No No No No No No No No No No No No No No No Yes No Yes No No Yes No ReturJual kodeReturJual tgl 10 8 Char DateTime No No No No No No Tabel 3.3 Menentukan Atribut dan Tipe Entitas
3.3.4 Menentukan Domain Atribut
Nama Atribut Domain Atribut
kodePegawai Terdiri dari 10 karakter dengan tipe Char, dengan cara penulisan :
• 3 karakter pertama diisi dengan kode PGW • 2 karakter selanjutnya menunjukkan tahun
masuk pegawai dengan range ( 00..99 )
• 2 karakter selanjutnya menunjukkan bulan masuk pegawai dengan range ( 01..12 )
• 3 karakter terakhir menunjukkan urutan masuk pegawai pada tahun dan bulan yang sama dengan range ( 001..999 )
Contoh kodePegawai :
PGW0601001, artinya pegawai masuk pada tahun 2006 bulan Januari dan merupakan orang ke – 1 yang masuk pada tahun dan bulan tersebut.
Nama Atribut Domain Atribut
jenisKelamin Terdiri dari 1 karakter dengan tipe Char, yang berisi nilai ‘L’ untuk pria atau ‘P’ untuk wanita.
kodePelanggan Terdiri dari 10 karakter dengan tipe Char, dengan cara penulisan :
• 3 karakter pertama diisi dengan kode PLG
• 2 karakter selanjutnya menunjukkan tahun masuk pelanggan dengan range ( 00..99 )
• 2 karakter selanjutnya menunjukkan bulan masuk pelanggan dengan range ( 01..12 )
• 3 karakter terakhir menunjukkan urutan masuk pelanggan pada tahun dan bulan yang sama dengan range ( 001..999 )
Contoh kodePelanggan :
PLG0601001, artinya pelanggan masuk pada tahun 2006 bulan Januari dan merupakan orang ke – 1 yang masuk pada tahun dan bulan tersebut.
kodeBP Terdiri dari 10 karakter dengan tipe Char, dengan cara penulisan :
• 2 karakter pertama menunjukkan jenis transaksi yaitu Pendaftaran dengan kode BP
• 2 karakter selanjutnya menunjukkan tahun dibuatnya kodeBP dengan range ( 00..99 )
• 2 karakter selanjutnya menunjukkan bulan dibuatnya kodeBP dengan range ( 01..12 )
• 4 karakter terakhir menunjukkan urutan nomor kodeBP yang dibuat pada tahun dan bulan yang sama dengan range ( 0001..9999 )
Contoh kodeBP :
BP06010001, artinya BP ini dibuat pada tahun 2006 bulan Januari dengan urutan pembuatan ke – 1 pada tahun dan bulan tersebut.
jenisPembayaran Terdiri dari 1 karakter dengan tipe Char, yang berisi nilai ‘K’ untuk kredit atau ‘L’ untuk lunas.
kodeReturJual Terdiri dari 10 karakter dengan tipe Char, dengan cara penulisan :
• 2 karakter pertama menunjukkan jenis transaksi yaitu returJual dengan kode RJ
• 2 karakter selanjutnya menunjukkan tahun dibuatnya kodeReturJual dengan range ( 00..99 )
• 2 karakter selanjutnya menunjukkan bulan dibuatnya kodeReturJual dengan range ( 01..12 )
Nama Atribut Domain Atribut
• 4 karakter terakhir menunjukkan urutan nomor kodeReturJual yang dibuat pada tahun dan bulan yang sama dengan range ( 0001..9999) Contoh kodeReturJual :
RJ06010001, artinya ReturJual ini dibuat pada tahun 2006 bulan Januari dengan urutan pembuatan ke – 1 pada tahun dan bulan tersebut.
kodePO Terdiri dari 10 karakter dengan tipe Char, dengan cara penulisan :
• 2 karakter pertama menunjukkan jenis transaksi, yaitu Penjualan dengan kode PO
• 2 karakter selanjutnya menunjukkan tahun dibuatnya kodePO dengan range ( 00..99 )
• 2 karakter selanjutnya menunjukkan bulan dibuatnya kodePO dengan range ( 01..12 )
• 4 karakter terakhir menunjukkan urutan nomor kodePO yang dibuat pada tahun dan bulan yang sama dengan range ( 0001..9999 )
Contoh kodePO :
PO06010001, artinya PO ini dibuat pada tahun 2006 bulan Januari dengan urutan pembuatan ke – 1 pada tahun dan bulan tersebut.
kodeBarang Terdiri dari 6 karakter dengan tipe Char, dengan cara penulisan :
• 3 karakter pertama diisi dengan kode BRG • 3 karakter terakhir menunjukkan urutan nomor
kodeBarang dengan range (001..999) Contoh kodeBarang :
BRG001
kodeRKD Terdiri dari 10 karakter dengan tipe Char, dengan cara penulisan :
• 2 karakter pertama menunjukkan jenis transaksi, yaitu RKD dengan kode RD
• 2 karakter selanjutnya menunjukkan tahun dibuatnya kodeRKD dengan range ( 00..99 ) • 2 karakter selanjutnya menunjukkan bulan
dibuatnya kodeRKD dengan range ( 01..12 ) • 4 karakter terakhir menunjukkan urutan nomor
kodeRKD yang dibuat pada tahun dan bulan yang sama dengan range ( 0001..9999 )
Contoh kodeRKD :
RD06010001, artinya RKD ini dibuat pada tahun 2006 bulan Januari dengan urutan pembuatan ke – 1 pada tahun dan bulan tersebut.
Nama Atribut Domain Atribut
kodeSJ Terdiri dari 10 karakter dengan tipe Char, dengan cara penulisan :
• 2 karakter pertama menunjukkan jenis transaksi yaitu SuratJalan, dengan kode SJ
• 2 karakter selanjutnya menunjukkan tahun dibuatnya kodeSJ dengan range ( 00..99 )
• 2 karakter selanjutnya menunjukkan bulan dibuatnya kodeSJ dengan range ( 01..12 )
• 4 karakter terakhir menunjukkan urutan kodeSJ yang dibuat pada tahun dan bulan yang sama dengan range ( 0001..9999 )
Contoh kodeSJ :
SJ06010001, artinya SJ ini dibuat pada tahun 2006 bulan Januari dengan urutan pembuatan ke – 1 pada tahun dan bulan tersebut.
kodePenagihan Terdiri dari 10 karakter dengan tipe Char, dengan cara penulisan :
• 2 karakter pertama menunjukkan jenis transaksi yaitu Penagihan, dengan kode PH
• 2 karakter selanjutnya menunjukkan tahun dibuatnya kodePenagihan dengan range ( 00..99 )
• 2 karakter selanjutnya menunjukkan bulan dibuatnya kodePenagihan dengan range ( 01..12 )
• 4 karakter terakhir menunjukkan urutan kodePenagihan yang dibuat pada tahun dan bulan yang sama dengan range ( 0001..9999 ) Contoh kodePenagihan :
PH06010001, artinya Penagihan ini dibuat pada tahun 2006 bulan Januari dengan urutan pembuatan ke – 1 pada tahun dan bulan tersebut
kodeBSTPJ Terdiri dari 10 karakter dengan tipe Char, dengan cara penulisan :
• 2 karakter pertama menunjukkan jenis transaksi yaitu Penerimaan Barang, dengan kode TB • 2 karakter selanjutnya menunjukkan tahun
dibuatnya kodeBSTPJ dengan range ( 00..99 ) • 2 karakter selanjutnya menunjukkan bulan
dibuatnya kodeBSTPJ dengan range ( 01..12 ) • 4 karakter terakhir menunjukkan urutan
kodeBSTPJ yang dibuat pada tahun dan bulan yang sama dengan range ( 0001..9999 )
Nama Atribut Domain Atribut Contoh kodeBSTPJ :
TB06010001, artinya BSTPJ ini dibuat pada tahun 2006 bulan Januari dengan urutan pembuatan ke – 1 pada tahun dan bulan tersebut
kodeBPBJ Terdiri dari 10 karakter dengan tipe Char, dengan cara penulisan :
• 2 karakter pertama menunjukkan jenis transaksi yaitu Pengeluaran Barang, dengan kode PB • 2 karakter selanjutnya menunjukkan tahun
dibuatnya kodeBPBJ dengan range ( 00..99 ) • 2 karakter selanjutnya menunjukkan bulan
dibuatnya kodeBPBJ dengan range ( 01..12 ) • 4 karakter terakhir menunjukkan urutan
kodeBPBJ yang dibuat pada tahun dan bulan yang sama dengan range ( 0001..9999 )
Contoh kodeBPBJ :
PB06010001, artinya BPBJ ini dibuat pada tahun 2006 bulan Januari dengan urutan pembuatan ke – 1 pada tahun dan bulan tersebut
statusTagih Terdiri dari 1 karakter dengan tipe Boolean, yang berisi nilai true (1) untuk ‘Lunas’ atau false (0) untuk ‘belumLunas’.
statusBP Terdiri dari 1 karakter dengan tipe Boolean, yang berisi nilai true (1) ‘Valid’ atau false (0) untuk ‘tidakValid’. statusPegawai Terdiri dari 1 karakter dengan tipe Boolean, yang berisi
nilai true (1) untuk ‘Aktif’ atau false (0) untuk ‘tidakAktif’
statusPelanggan Terdiri dari 1 karakter dengan tipe Boolean, yang berisi nilai true (1) untuk ‘Aktif’ atau false (0) untuk ‘tidakAktif’
statusKendaraan Terdiri dari 1 karakter dengan tipe Boolean, yang berisi nilai true (1) untuk ‘Available’ atau false (0) untuk ‘Unavailable’
kodePos kodePosKirim
kodePosTagih Terdiri dari 5 digit angka dengan tipe Integer
kodeJabatan Terdiri dari 6 karakter dengan tipe Char, dengan cara penulisan :
• 3 karakter pertama diisi dengan kode JBT • 3 karakter terakhir menunjukkan urutan nomor
kodeJabatan dengan range (001..999) Contoh kodeJabatan :
JBT001
3.3.5 Menentukan Atribut Candidate dan Primary Key
Entiti Candidate Key Primary Key
Pegawai kodePegawai noTelepon noHP kodePegawai Pelanggan kodePelanggan noTelepon noFax kodePelanggan Jabatan kodeJabatan namaJabatan kodeJabatan Barang kodeBarang namaBarang kodeBarang BSTPJ kodeBSTPJ kodeBSTPJ BPBJ kodeBPBJ kodeBPBJ BP kodeBP kodeBP PO kodePO kodePO RKD kodeRKD kodeRKD
Kendaraan noPolisi noPolisi
SJ kodeSJ kodeSJ
Penagihan kodePenagihan kodePenagihan ReturJual kodeReturJual kodeReturJual
Gambar 3.13 Diagram ER dengan Penambahan Primary Key
3.3.6 Memeriksa Model Terhadap Redundansi
Berdasarkan model yang telah dihasilkan, tidak terdapat model yang redundansi.
3.3.7 Validasi Model Konseptual Lokal Terhadap Transaksi User
Data Entry
a) Masukkan detail dari pelanggan b) Masukkan detail dari jabatan c) Masukkan detail dari pegawai d) Masukkan detail dari Penagihan e) Masukan detail dari Kendaraan f) Masukkan detail dari Barang g) Masukkan detail dari BP h) Masukkan detail dari RKD i) Masukkan detail dari BPBJ j) Masukkan detail dari BSTPJ k) Masukkan detail dari PO l) Masukkan detail dari ReturJual m) Masukkan detail dari SJ
Data Update/Deletion
a) Mengubah / menghapus detail dari pegawai b) Mengubah / menghapus detail dari jabatan c) Mengubah / menghapus detail dari pelanggan d) Mengubah detail dari RKD
e) Mengubah / menghapus detail dari barang f) Mengubah / menghapus detail dari kendaraan g) Mengubah detail dari BP
h) Mengubah detail dari SJ
i) Mengubah detail dari penagihan j) Mengubah detail dari PO
k) Mengubah detail dari retur l) Mengubah detail dari BPBJ m) Mengubah detail dari BSTPJ
Data Query
a) Tampilkan detail pegawai berdasarkan kode jabatan b) Tampilkan detail pelanggan berdasarkan hari pengiriman c) Tampilkan detail barang beserta harga untuk pelanggan tertentu
d) Tampilkan nama pelanggan dan detail dari penagihan yang belum dibayar pada bulan dan tahun tertentu
e) Tampilkan detail persediaan barang
f) Tampilkan detail PO beserta detail Barang yang dipesan berdasarkan kodeRKD tertentu
g) Tampilkan detail SJ berdasarkan bulan dan kodePelanggan tertentu dari PO
h) Tampilkan detail SJ berdasarkan kode penagihan tertentu i) Tampilkan detail barang berdasarkan kode retur tertentu j) Tampilkan detail barang berdasarkan kode BPBJ tertentu k) Tampilkan detail barang berdasarkan kode BSTPJ tertentu l) Tampilkan detail barang berdasarkan kode PO tertentu
m) Tampilkan detail kendaraan yang diurut berdasarkan kapasitas standart terbesar
Gambar 3.14 Menggunakan Pathway untuk Memeriksa Bahwa Model Konseptual Mendukung Transaksi Query Data
3.4 Perancangan Basis Data Logikal
3.4.1 Menghilangkan Fitur yang Tidak Sesuai Dengan Model Relasional 1. Menghilangkan tipe relasi binary many-to-many (*:*)
• Relasi Memiliki (BP-Barang)
Gambar 3.15 Relasi many-to-many BP-Barang
Gambar 3.16 Dekomposisi Relasi many-to-many BP-Barang
Dilakukan identifikasi entiti baru BPDetail sehingga relasi Memiliki diganti dengan dua relasi one-to-many (1:*). Relasi many-to-many (*:*) Memiliki direpresentasikan sebagai BP Memiliki BPDetail dan Barang Mempunyai BPDetail.
• Relasi Menambah (BSTPJ-Barang)
Gambar 3.18 Dekomposisi Relasi many-to-many BSTPJ-Barang
Dilakukan identifikasi entiti baru BSTPJDetail sehingga relasi Menambah diganti dengan dua relasi one-to-many (1:*). Relasi many-to-many (*:*) Menambah direpresentasikan sebagai BSTPJ Memiliki BSTPJDetail dan Barang Mempunyai BSTPJDetail.
• Relasi Memiliki (PO-Barang)
Gambar 3.19 Relasi many-to-many PO-Barang
Gambar 3.20 Dekomposisi Relasi many-to-many PO-Barang
Dilakukan identifikasi entiti baru PODetail sehingga relasi Memiliki diganti dengan dua relasi one-to-many (1:*). Relasi many-to-many (*:*) Memiliki direpresentasikan sebagai PO Memiliki PODetail dan Barang Mempunyai PODetail.
• Relasi Memiliki (ReturJual-Barang)
Gambar 3.21 Relasi many-to-many ReturJual-Barang
Gambar 3.22 Dekomposisi Relasi many-to-many ReturJual-Barang
Dilakukan identifikasi entiti baru ReturJualDetail sehingga relasi Memiliki diganti dengan dua relasi one-to-many (1:*). Relasi many-to-many (*:*) Memiliki direpresentasikan sebagai ReturJual Memiliki ReturJualDetail dan Barang Mempunyai ReturJualDetail.
• Relasi Mengurangi (BPBJ-Barang)
Gambar 3.24 Dekomposisi Relasi many-to-many BPBJ-Barang
Dilakukan identifikasi entiti baru BPBJDetail sehingga relasi Mengurangi diganti dengan dua relasi one-to-many (1:*). Relasi many-to-many (*:*) Mengurangi direpresentasikan sebagai BPBJ Memiliki BPBJDetail dan Barang Mempunyai BPBJDetail.
• Relasi Memiliki (SJ-Barang)
Gambar 3.25 Relasi many-to-many SJ-Barang
Gambar 3.26 Dekomposisi Relasi many-to-many SJ-Barang
Dilakukan identifikasi entiti baru SJDetail sehingga relasi Memiliki diganti dengan dua relasi one-to-many (1:*). Relasi many-to-many
(*:*) Memiliki direpresentasikan sebagai SJ Memiliki SJDetail dan Barang Mempunyai SJDetail.
2. Menghilangkan atribut multi-valued • Pada entiti BP
Terdapat atribut multi-valued hariKirim.
Gambar 3.27 Entiti BP dengan multi-valued
Gambar 3.28 Dekomposisi Atribut hariKirim Menjadi Entiti JadwalKirim
• Pada entiti Pelanggan
Gambar 3.29 Entiti Pelanggan dengan multi-valued
Gambar 3.30 Dekomposisi Atribut noTelepon dan noFax Menjadi Entiti TeleponPlgn dan FaxPlgn
3.4.2 Menurunkan Relasi untuk Model Data Logikal Lokal 1. Strong entity types
Jabatan (kodeJabatan, namaJabatan)
Primary Key kodeJabatan
Barang (kodeBarang, namaBarang, merek, satuan, stok)
Primary Key kodeBarang
Pegawai (kodePegawai, namaPegawai, alamatPegawai, kota, kodePos, kecamatan, kelurahan, tglLahir, jenisKelamin, tglMasukKerja, noTelepon, noHP, statusPegawai)
Primary Key kodePegawai
Pelanggan (kodePelanggan, namaPelanggan, alamatPengiriman, kotaKirim, kodePosKirim, kecKirim, kelKirim,
alamatPenagihan, kotaTagih, kodePosTagih, kecTagih, kelTagih, NPWP, statusPelanggan)
Primary Key (kodePelanggan)
TeleponPlgn (noTelepon)
Primary Key noTelepon
FaxPlgn (noFax)
Primary Key noFax
Kendaraan (noPolisi, merekMobil, tipe, tahun, kapasitasStd, kapasitasOpt, statusKendaraan, keterangan)
Primary Key noPolisi
BP (kodeBP, tgl, jenisPembayaran, jmlPinjamanGalon, hargaPinjamanGalon, statusBP)
Primary Key kodeBP
JadwalKirim (hariKirim, kodeBP)
Primary Key hariKirim, kodeBP
RKD (kodeRKD, tgl, keterangan)
Primary Key kodeRKD
PO (kodePO, tgl)
Primary Key kodePO
Penagihan (kodePenagihan, tglPenagihan, tglPembayaran, disc, ppn, statusTagih)
Primary Key kodePenagihan
Derived jumlah (∑(SJ.totalDijual),
Derived tglJatuhTempo(dateadd(day,10,tglPenagihan)),
Derived totalPenagihan ((jumlah – (jumlah * disc)) + (jumlah –
(jumlah * disc)) * ppn) SJ (kodeSJ, tgl)
Primary Key kodeSJ
Derived totalDijual (∑(SJDetail.jumlahDijual))
BPBJ (kodeBPBJ, tgl)
BSTPJ (kodeBSTPJ, tgl)
Primary Key kodeBSTPJ
ReturJual (kodeReturJual, tgl)
Primary Key kodeReturJual
Tabel 3.6 Strong Entity Types
2. Weak entity types
BPDetail (hargaBarang, jmlDefaultKirim)
Primary Key belum ada (saat ini)
BSTPJDetail (qtyMasuk)
Primary Key belum ada (saat ini)
PODetail (qtyDiminta)
Primary Key belum ada (saat ini)
ReturJualDetail (qtyRetur, keterangan)
Primary Key belum ada (saat ini)
BPBJDetail (qtyDiberikan, qtySisaBarang, keterangan)
Primary Key belum ada (saat ini)
SJDetail (qtyDijual, keterangan)
Primary Key belum ada (saat ini)
Derived jumlahDijual (qtyDijual * PODetail.hargaBarang)
Tabel 3.7 Weak Entity Types
3. One-to-many (1:*) binary relationship types
Jabatan Mempunyai Pegawai Jabatan (kodeJabatan,
namaJabatan)
Primary Key kodeJabatan
Pegawai (kodePegawai, namaPegawai, alamatPegawai, kota, kodePos, kecamatan, kelurahan, tglLahir, jenisKelamin, tglMasukKerja, noTelepon, noHP, kodeJabatan, statusPegawai)
Primary Key kodePegawai
Foreign Key kodeJabatan references
Pelanggan Memiliki BP Pegawai Menangani BP Pelanggan (kodePelanggan, namaPelanggan, alamatPengiriman, kotaKirim, kodePosKirim, kecKirim, kelKirim, alamatPenagihan, kotaTagih, kodePosTagih, kecTagih, kelTagih, NPWP, statusPelanggan)
Primary Key kodePelanggan
Pegawai (kodePegawai, namaPegawai, alamatPegawai, kota, kodePos, kecamatan, kelurahan, tglLahir, jenisKelamin, tglMasukKerja, noTelepon, noHP, kodeJabatan, statusPegawai)
Primary Key kodePegawai
Foreign Key kodeJabatan references
Jabatan(kodeJabatan)
BP (kodeBP, tgl, jenisPembayaran, jmlPinjamanGalon,
hargaPinjamanGalon, statusBP, kodePelanggan, kodePegawai)
Primary Key kodeBP
Foreign Key kodePelanggan references
Pelanggan(kodePelanggan)
Foreign Key kodePegawai references
Pegawai(kodePegawai)
Pelanggan Memiliki TeleponPlgn Pelanggan (kodePelanggan, namaPelanggan, alamatPengiriman, kotaKirim, kodePosKirim, kecKirim, kelKirim, alamatPenagihan, kotaTagih, kodePosTagih, kecTagih, kelTagih, NPWP, statusPelanggan)
Primary Key kodePelanggan
TeleponPlgn (noTelepon, kodePelanggan)
Primary Key noTelepon
Foreign Key kodePelanggan references
Pelanggan(kodePelanggan)
Pelanggan Memiliki FaxPlgn Pelanggan (kodePelanggan, namaPelanggan, alamatPengiriman, kotaKirim, kodePosKirim, kecKirim, kelKirim, alamatPenagihan, kotaTagih, kodePosTagih, kecTagih, kelTagih, NPWP, statusPelanggan)
Primary Key kodePelanggan
FaxPlgn (noFax, kodePelanggan)
Primary Key noFax
Foreign Key kodePelanggan references
BP Memiliki JadwalKirim
BP (kodeBP, tgl, jenisPembayaran, jmlPinjamanGalon,
hargaPinjamanGalon, statusBP, kodePelanggan, kodePegawai)
Primary Key kodeBP
Foreign Key kodePelanggan references
Pelanggan(kodePelanggan)
Foreign Key kodePegawai references
Pegawai(kodePegawai)
JadwalKirim (hariKirim, kodeBP)
Primary Key hariKirim, kodeBP Foreign Key kodeBP references
BP(kodeBP) Pegawai Menangani BSTPJ Pegawai (kodePegawai, namaPegawai, alamatPegawai, kota, kodePos, kecamatan, kelurahan, tglLahir, jenisKelamin, tglMasukKerja, noTelepon, noHP, kodeJabatan, statusPegawai)
Primary Key kodePegawai
Foreign Key kodeJabatan references
Jabatan(kodeJabatan)
BSTPJ (kodeBSTPJ, tgl, kodePegawai)
Primary Key kodeBSTPJ
Foreign Key kodePegawai references
Pegawai(kodePegawai) Pegawai Menangani RKD Pegawai Menangani RKD Pegawai Menangani RKD Pegawai Menangani RKD Kendaraan Digunakan RKD Pegawai (kodePegawai, namaPegawai, alamatPegawai, kota, kodePos, kecamatan, kelurahan, tglLahir, jenisKelamin, tglMasukKerja, noTelepon, noHP, kodeJabatan, statusPegawai)
Primary Key kodePegawai
Foreign Key kodeJabatan references
Jabatan(kodeJabatan)
Kendaraan (noPolisi, merekMobil, tipe, tahun, kapasitasStd,
kapasitasOpt, statusKendaraan, keterangan)
Primary Key Kendaraan
RKD (kodeRKD, tgl, keterangan, kodePegawai, kodeDriver, kodeHelper1, kodeHelper2, kodeKendaraan)
Primary Key kodeRKD
Foreign Key kodePegawai references
Pegawai(kodePegawai)
Foreign Key kodeDriver references
Pegawai(kodePegawai)
Foreign Key kodeHelper1 references
Pegawai(kodePegawai)
Foreign Key kodeHelper2 references
Pegawai(kodePegawai)
Foreign Key kodeKendaraan references
Pelanggan Memiliki ReturJual Pegawai Menangani ReturJual Pelanggan (kodePelanggan, namaPelanggan, alamatPengiriman, kotaKirim, kodePosKirim, kecKirim, kelKirim, alamatPenagihan, kotaTagih, kodePosTagih, kecTagih, kelTagih, NPWP, statusPelanggan)
Primary Key kodePelanggan
Pegawai (kodePegawai, namaPegawai, alamatPegawai, kota, kodePos, kecamatan, kelurahan, tglLahir, jenisKelamin, tglMasukKerja, noTelepon, noHP, kodeJabatan, statusPegawai)
Primary Key kodePegawai
Foreign Key kodeJabatan references
Jabatan(kodeJabatan)
ReturJual (kodeReturJual, tgl, kodePelanggan, kodePegawai)
Primary Key kodeReturJual
Foreign Key kodePelanggan references
Pelanggan(kodePelanggan)
Foreign Key kodePegawai references
Pegawai(kodePegawai)
Pegawai Menangani Penagihan Pegawai Menangani Penagihan Pegawai Menangani Penagihan Pegawai (kodePegawai, namaPegawai, alamatPegawai, kota, kodePos, kecamatan, kelurahan, tglLahir, jenisKelamin, tglMasukKerja, noTelepon, noHP, kodeJabatan, statusPegawai)
Primary Key kodePegawai
Foreign Key kodeJabatan references
Jabatan(kodeJabatan) Penagihan (kodePenagihan, tglPenagihan, tglPembayaran, disc, ppn, statusTagih, kodeKolektor, kodePegawaiByr, kodePegawaiTgh)
Primary Key kodePenagihan
Foreign Key kodeKolektor references
Pegawai(kodePegawai)
Foreign Key kodePegawaiByr references
Pegawai(kodePegawai)
Foreign Key kodePegawaiTgh references Pegawai(kodePegawai) Derived jumlah (∑(SJ.totalDijual) Derived tglJatuhTempo(dateadd( day,
10, tglPenagihan))
Derived totalPenagihan ((jumlah –
(jumlah * disc)) + (jumlah – (jumlah * disc)) * ppn)
Pegawai Menangani BPBJ Pegawai (kodePegawai, namaPegawai, alamatPegawai, kota, kodePos, kecamatan, kelurahan, tglLahir, jenisKelamin, tglMasukKerja, noTelepon, noHP, kodeJabatan, statusPegawai)
Primary Key kodePegawai
Foreign Key kodeJabatan references
Jabatan(kodeJabatan)
BPBJ (kodeBPBJ, tgl, kodePegawai)
Primary Key kodeBPBJ
Foreign Key kodePegawai references
Pegawai(kodePegawai) Pegawai Menangani PO RKD Memiliki PO BP Memiliki PO Pegawai (kodePegawai, namaPegawai, alamatPegawai, kota, kodePos, kecamatan, kelurahan, tglLahir, jenisKelamin, tglMasukKerja, noTelepon, noHP, kodeJabatan, statusPegawai)
Primary Key kodePegawai
Foreign Key kodeJabatan references
Jabatan(kodeJabatan)
RKD (kodeRKD, tgl, keterangan, kodePegawai, kodeDriver, kodeHelper1, kodeHelper2, kodeKendaraan)
Primary Key kodeRKD
Foreign Key kodePegawai references
Pegawai(kodePegawai)
Foreign Key kodeDriver references
Pegawai(kodePegawai)
Foreign Key kodeHelper1 references
Pegawai(kodePegawai)
Foreign Key kodeHelper2 references
Pegawai(kodePegawai)
Foreign Key kodeKendaraan references
Kendaraan(noPolisi) BP (kodeBP, tgl, jenisPembayaran, jmlPinjamanGalon, hargaPinjamanGalon, statusBP, PO (kodePO, tgl, kodePegawai, kodeRKD, kodeBP)
Primary Key KodePO
Foreign Key kodePegawai references
Pegawai(kodePegawai)
Foreign Key kodeRKD references
RKD(kodeRKD)
Foreign Key kodeBP references
kodePelanggan, kodePegawai)
Primary Key kodeBP
Foreign Key kodePelanggan references
Pelanggan(kodePelanggan)
Foreign Key kodePegawai references
Pegawai(kodePegawai) Pegawai Menangani SJ Penagihan BerdasarkanPada SJ Pegawai (kodePegawai, namaPegawai, alamatPegawai, kota, kodePos, kecamatan, kelurahan, tglLahir, jenisKelamin, tglMasukKerja, noTelepon, noHP, kodeJabatan, statusPegawai)
Primary Key kodePegawai
Foreign Key kodeJabatan references
Jabatan(kodeJabatan) Penagihan (kodePenagihan, tglPenagihan, tglPembayaran, disc, ppn, statusTagih, kodeKolektor, kodePegawaiByr, kodePegawaiTgh)
Primary Key kodePenagihan
Foreign Key kodeKolektor references
Pegawai(kodePegawai)
Foreign Key kodePegawaiByr references Pegawai(kodePegawai) Foreign Key kodePegawaiTgh references Pegawai(kodePegawai) Derived jumlah (∑(SJ.totalDijual) Derived tglJatuhTempo(dateadd( day,
10, tglPenagihan))
Derived totalPenagihan ((jumlah –
(jumlah * disc)) + (jumlah – (jumlah * disc)) * ppn)
SJ (kodeSJ, tgl, kodePegawai, kodePenagihan)
Primary Key kodeSJ
Foreign Key kodePegawai references
Pegawai(kodePegawai)
Foreign Key kodePenagihan references
Penagihan(kodePenagihan)
Derived totalDijual
(∑(SJDetail.jumlahDijual))
BP Memiliki BPDetail
Barang Mempunyai BPDetail
BP (kodeBP, tgl, jenisPembayaran, jmlPinjamanGalon,
hargaPinjamanGalon, statusBP, kodePelanggan, kodePegawai)
Primary Key kodeBP
BPDetail (kodeBP, kodeBarang, hargaBarang,
jmlDefaultKirim)
Primary Key kodeBP, kodeBarang Foreign Key kodeBP references
Foreign Key kodePelanggan references
Pelanggan(kodePelanggan)
Foreign Key kodePegawai references
Pegawai(kodePegawai)
Barang (kodeBarang, namaBarang, merek, satuan, stok)
Primary Key kodeBarang
BP(kodeBP)
Foreign Key kodeBarang references
Barang(kodeBarang)
BSTPJ Memiliki BSTBJDetail Barang Mempunyai BSTPJDeatail BSTPJ (kodeBSTPJ, tgl,
kodePegawai)
Primary Key kodeBSTPJ
Foreign Key kodePegawai references
Pegawai(kodePegawai)
Barang (kodeBarang, namaBarang, merek, satuan, stok)
Primary Key kodeBarang
BSTPJDetail (kodeBSTPJ, kodeBarang, qtyMasuk)
Primary Key kodeBSTPJ, kodeBarang Foreign Key kodeBSTPJ references
BSTPJ(kodeBSTPJ)
Foreign Key kodeBarang references
Barang(kodeBarang) PO Memiliki PODetail
Barang Mempunyai PODetail PO (kodePO, tgl, kodePegawai,
kodeRKD, kodeBP)
Primary Key KodePO
Foreign Key kodePegawai references
Pegawai(kodePegawai)
Foreign Key kodeRKD references
RKD(kodeRKD)
Foreign Key kodeBP references
BP(kodeBP)
Barang (kodeBarang, namaBarang, merek, satuan, stok)
Primary Key kodeBarang
PODetail (kodePO, kodeBarang, qtyDiminta)
Primary Key kodePO, kodeBarang Foreign Key kodePO references
PO(kodePO)
Foreign Key kodeBarang references
Barang(kodeBarang)
ReturJual Memiliki ReturJualDetail Barang Mempunyai ReturJualDetail ReturJual (kodeReturJual, tgl,
kodePelanggan, kodePegawai)
Primary Key kodeReturJual
Foreign Key kodePelanggan references
Pelanggan(kodePelanggan)
Foreign Key kodePegawai references
Pegawai(kodePegawai)
Barang (kodeBarang, namaBarang, merek, satuan, stok)
Primary Key kodeBarang
ReturJualDetail (kodeReturJual,
kodeBarang, qtyRetur, keterangan)
Primary Key kodeReturJual, kodeBarang Foreign Key kodeReturJual references
ReturJual(kodeReturJual)
Foreign Key kodeBarang references
BPBJ Memiliki BPBJDetail Barang Mempunyai BPBJDetail BPBJ (kodeBPBJ, tgl, kodePegawai)
Primary Key kodeBPBJ
Foreign Key kodePegawai references
Pegawai(kodePegawai)
Barang (kodeBarang, namaBarang, merek, satuan, stok)
Primary Key kodeBarang
BPBJDetail (kodeBPBJ, kodeBarang, qtyDiberikan,
qtySisaBarang, keterangan)
Primary Key kodeBPBJ, kodeBarang Foreign Key kodeBPBJ references
BPBJ(kodeBPBJ)
Foreign Key kodeBarang references
Barang(kodeBarang) SJ Memiliki SJDetail
Barang Mempunyai SJDetail SJ (kodeSJ, tgl, kodePegawai,
kodePenagihan)
Primary Key kodeSJ
Foreign Key kodePegawai references
Pegawai(kodePegawai)
Foreign Key kodePenagihan references
Penagihan(kodePenagihan)
Derived totalDijual
(∑(SJDetail.jumlahDijual))
Barang (kodeBarang, namaBarang, merek, satuan, stok)
Primary Key kodeBarang
SJDetail (kodeSJ, kodeBarang, qtyDijual, keterangan)
Primary Key kodeSJ, kodeBarang Foreign Key kodeSJ references
SJ(kodeSJ)
Foreign Key kodeBarang references
Barang(kodeBarang)
Derived jumlahDijual (qtyDijual *
PODetail.hargaBarang)
Tabel 3.8 One-to-many (1:*) binary relationship types
4. One-to-one (1:1) binary relationship types
RKD Menghasilkan BPBJ (patisipasi mandatory pada satu sisi) RKD (kodeRKD, tgl, keterangan,
kodePegawai, kodeDriver, kodeHelper1, kodeHelper2, kodeKendaraan)
Primary Key kodeRKD
Foreign Key kodePegawai references
Pegawai(kodePegawai)
Foreign Key kodeDriver references
Pegawai(kodePegawai)
Foreign Key kodeHelper1 references
Pegawai(kodePegawai)
Foreign Key kodeHelper2 references
Pegawai(kodePegawai)
Foreign Key kodeKendaraan references
Kendaraan(noPolisi)
BPBJ (kodeBPBJ, tgl, kodePegawai, kodeRKD)
Primary Key kodeBPBJ
Foreign Key kodePegawai references
Pegawai(kodePegawai)
Foreign Key kodeRKD references
PO Memiliki SJ (patisipasi mandatory pada satu sisi) PO (kodePO, tgl, kodePegawai,
kodeRKD, kodeBP)
Primary Key KodePO
Foreign Key kodePegawai references
Pegawai(kodePegawai)
Foreign Key kodeRKD references
RKD(kodeRKD)
Foreign Key kodeBP references
BP(kodeBP)
SJ (kodeSJ, tgl, kodePegawai, kodePenagihan, kodePO)
Primary Key kodeSJ
Foreign Key kodePegawai references
Pegawai(kodePegawai)
Foreign Key kodePenagihan references
Penagihan(kodePenagihan)
Foreign Key kodePO references
PO(kodePO)
Derived totalDijual
(∑(SJDetail.jumlahDijual)) Tabel 3.9 One-to-one (1:1) Binary Relationship Types
5. Dokumentasi relasi dan atribut Foreign Key Jabatan (kodeJabatan,
namaJabatan)
Primary Key kodeJabatan
Barang (kodeBarang, namaBarang, merek, satuan, stok)
Primary Key kodeBarang
Pegawai (kodePegawai, namaPegawai, alamatPegawai, kota, kodePos, kecamatan, kelurahan, tglLahir, jenisKelamin, tglMasukKerja, noTelepon, noHP, kodeJabatan, noTelepon, noHP, statusPegawai)
Primary Key kodePegawai
Foreign Key kodeJabatan references
Jabatan(kodeJabatan) Pelanggan (kodePelanggan, namaPelanggan, alamatPengiriman, kotaKirim, kodePosKirim, kecKirim, kelKirim, alamatPenagihan, kotaTagih, kodePosTagih, kecTagih, kelTagih, NPWP, statusPelanggan)
Primary Key kodePelanggan
TeleponPlgn (noTelepon, kodePelanggan)
Primary Key noTelepon
Foreign Key kodePelanggan references
Pelanggan(kodePelanggan)
FaxPlgn (noFax, kodePelanggan)
Primary Key noFax
Foreign Key kodePelanggan references
Pelanggan(kodePelanggan) Kendaraan (noPolisi, merekMobil,
tipe, tahun, kapasitasStd, kapasitasOpt,
statusKendaraan, keterangan)
Primary Key noPolisi
RKD (kodeRKD, tgl, keterangan, kodePegawai, kodeDriver, kodeHelper1, kodeHelper2, kodeKendaraan)
Primary Key kodeRKD
Pegawai(kodePegawai)
Foreign Key kodeDriver references
Pegawai(kodePegawai)
Foreign Key kodeHelper1 references
Pegawai(kodePegawai)
Foreign Key kodeHelper2 references
Pegawai(kodePegawai)
Foreign Key kodeKendaraan references
Kendaraan(noPolisi) BP (kodeBP, tgl, jenisPembayaran,
jmlPinjamanGalon,
hargaPinjamanGalon, statusBP, kodePelanggan, kodePegawai)
Primary Key kodeBP
Foreign Key kodePelanggan references
Pelanggan(kodePelanggan)
Foreign Key kodePegawai references
Pegawai(kodePegawai)
BPDetail (kodeBP, kodeBarang, hargaBarang,
jmlDefaultKirim)
Primary Key kodeBP, kodeBarang Foreign Key kodeBP references
BP(kodeBP)
Foreign Key kodeBarang references
Barang(kodeBarang) JadwalKirim (hariKirim, kodeBP)
Primary Key hariKirim, kodeBP Foreign Key kodeBP references
BP(kodeBP) Penagihan (kodePenagihan, tglPenagihan, tglPembayaran, disc, ppn, statusTagih, kodeKolektor, kodePegawaiByr, kodePegawaiTgh)
Primary Key kodePenagihan
Foreign Key kodeKolektor references
Pegawai(kodePegawai)
Foreign Key kodePegawaiByr references
Pegawai(kodePegawai)
Foreign Key kodePegawaiTgh references
Pegawai(kodePegawai)
Derived jumlah (∑(SJ.totalDijual) Derived tglJatuhTempo(dateadd( day,
10, tglPenagihan))
Derived totalPenagihan ((jumlah –
(jumlah * disc)) + (jumlah – (jumlah * disc)) * ppn)
PO (kodePO, tgl, kodePegawai, kodeRKD, kodeBP)
Primary Key KodePO
Foreign Key kodePegawai references
Pegawai(kodePegawai)
Foreign Key kodeRKD references
RKD(kodeRKD)
Foreign Key kodeBP references
BP(kodeBP)
PODetail (kodePO, kodeBarang, qtyDiminta)
Primary Key kodePO, kodeBarang Foreign Key kodePO references
PO(kodePO)
Foreign Key kodeBarang references
SJ (kodeSJ, tgl, kodePegawai, kodePenagihan, kodePO)
Primary Key kodeSJ
Foreign Key kodePegawai references
Pegawai(kodePegawai)
Foreign Key kodePenagihan references
Penagihan(kodePenagihan)
Foreign Key kodePO references
PO(kodePO)
Derived totalDijual
(∑(SJDetail.jumlahDijual))
SJDetail (kodeSJ, qtyDijual, kodeBarang, keterangan)
Primary Key kodeSJ, kodeBarang Foreign Key kodeSJ references
SJ(kodeSJ)
Foreign Key kodeBarang references
Barang(kodeBarang)
Derived jumlahDijual (qtyDijual *
PODetail.hargaBarang) BPBJ (kodeBPBJ, tgl, kodeRKD,
kodePegawai)
Primary Key kodeBPBJ
Foreign Key kodePegawai references
Pegawai(kodePegawai)
Foreign Key kodeRKD references
RKD(kodeRKD)
BPBJDetail (kodeBPBJ, kodeBarang, qtyDiberikan, qtySisaBarang, keterangan)
Primary Key kodeBPBJ, kodeBarang Foreign Key kodeBPBJ references
BPBJ(kodeBPBJ)
Foreign Key kodeBarang references
Barang(kodeBarang) BSTPJ (kodeBSTPJ, tgl,
kodePegawai)
Primary Key kodeBSTPJ
Foreign Key kodePegawai references
Pegawai(kodePegawai)
BSTPJDetail (kodeBSTPJ, kodeBarang, qtyMasuk)
Primary Key kodeBSTPJ, kodeBarang Foreign Key kodeBSTPJ references
BSTPJ(kodeBSTPJ)
Foreign Key kodeBarang references
Barang(kodeBarang) ReturJual (kodeReturJual, tgl,
kodePelanggan, kodePegawai)
Primary Key kodeReturJual
Foreign Key kodePelanggan references
Pelanggan(kodePelanggan)
Foreign Key kodePegawai references
Pegawai(kodePegawai)
ReturJualDetail (kodeReturJual,
kodeBarang, qtyRetur, keterangan)
Primary Key kodeReturJual, kodeBarang Foreign Key kodeReturJual references
ReturJual(kodeReturJual)
Foreign Key kodeBarang references
Barang(kodeBarang)
3.4.3 Validasi Relasi Menggunakan Normalisasi • Pegawai
UNF :
Pegawai = kodePegawai + namaPegawai + alamatPegawai + kota + kodePos + namaKec + namaKel + tglLahir + jenisKelamin + tglMasukKerja + kodeJabatan + noTelepon + noHP + statusPegawai
1NF :
Pegawai = @kodePegawai + namaPegawai + alamatPegawai + kota + kodePos + kecamatan + kelurahan + tglLahir + jenisKelamin + tglMasukKerja + kodeJabatan + noTelepon + noHP + statusPegawai
Primary Key kodePegawai
2NF :
Pegawai = @kodePegawai + namaPegawai + alamatPegawai + kota + kodePos + kecamatan + kelurahan + tglLahir + jenisKelamin + tglMasukKerja + kodeJabatan + noTelepon + noHP + statusPegawai
3NF :
Pegawai = @kodePegawai + namaPegawai + alamatPegawai + kodeKel + tglLahir + jenisKelamin + tglMasukKerja + kodeJabatan + noTelepon + noHP + statusPegawai
Primary Key kodePegawai
Foreign Key kodeKel references Kelurahan(kodeKel)
Kelurahan = @kodeKel + namaKel + kodeKec + kodeKota + kodePos
Primary Key kodeKel
Foreign Key kodeKec references Kecamatan(kodeKec) Foreign Key kodeKota references Kota(kodeKota) Foreign Key kodePos references Pos(kodePos)
Kecamatan = @kodeKec + namaKec
Primary Key kodeKec
Kota = @kodeKota + namaKota
Primary Key kodeKota
Pos = @kodePos
• Pelanggan : UNF
Pelanggan = kodePelanggan + namaPelanggan + alamatPengiriman + kotaKirim + kodePosKirim + kecKirim + kelKirim + alamatPenagihan + kotaTagih + kodePosTagih + kecTagih + kelTagih + NPWP + statusPelanggan
1NF
Pelanggan = kodePelanggan + namaPelanggan + alamatPengiriman + kotaKirim + kodePosKirim + kecKirim + kelKirim + alamatPenagihan + kotaTagih + kodePosTagih + kecTagih + kelTagih + NPWP + statusPelanggan
Primary Key kodePelanggan
2NF
Pelanggan = kodePelanggan + namaPelanggan + alamatPengiriman + kotaKirim + kodePosKirim + kecKirim + kelKirim + alamatPenagihan + kotaTagih + kodePosTagih + kecTagih + kelTagih + NPWP + statusPelanggan
3NF
Pelanggan = kodePelanggan + namaPelanggan + alamatPengiriman + kodeKelKirim + alamatPenagihan + kodeKelTagih + NPWP + statusPelanggan
Primary Key kodePelanggan
Foreign Key kodeKelKirim references Kelurahan(kodeKel) Foreign Key kodeKelTagih references Kelurahan(kodeKel)
Kelurahan = @kodeKel + namaKel + kodeKec + kodeKota + kodePos
Primary Key kodeKel
Foreign Key kodeKec references Kecamatan(kodeKec) Foreign Key kodeKota references Kota(kodeKota) Foreign Key kodePos references Pos(kodePos)
Kecamatan = @kodeKec + namaKec
Primary Key kodeKec
Kota = @kodeKota + namaKota
Primary Key kodeKota
Pos = @kodePos