48 3.1 Analisis
Berikut ini adalah proses analisis untuk mendapatkan informasi-infomasi yang dibutuhkan terkait perancangan basis data PT. Mulia Multi Mandiri.
3.1.1 Sejarah Organisasi
PT. Mulia Multi Mandiri didirikan pada tanggal 14 Mei 1980, berdasarkan Akta Notaris nomor 26. Dibuat oleh Notaris Ny. Budiarti Karnadi di Jakarta dengan nama PT. Mulia Marketing. Di penghujung tahun 1981 namanya berubah menjadi PT. Mulia Multi Mandiri.
Pada tahun 1995, Bintang Sidoraya Group mengakuisisi kepemilikan saham PT. Mulia Multi Mandiri hingga mencapai 91%. Berlokasi di Kawasan Industri Pulo Gadung, PT. Mulia Multi Mandiri merupakan distributor PT. Mulia Multi Bintang Indonesia Tbk dengan produk Bir Bintang dan Green Sand Shandy untuk area Jakarta dan Jawa Barat.
Seiring dengan semakin berkembangnya usaha, PT. Mulia Multi Mandiri mulai melebarkan sayap usahanya. Dari awalnya hanya mendistribusikan Bir Bintang dan Green Sand, PT. Mulia Multi Mandiri mulai mendistribusikan berbagai produk Aqua, seperti Aqua galon dan Aqua botol. Sejalan dengan perkembangan usahanya dan kondisi ekonomi serta meningkatnya permintaan
konsumen, membuat usaha pendistribusian produk Aqua menjadi usaha utama dari PT. M ulia M ulti M andiri.
Untuk menunjang pendistribusian produk, PT. M ulia M ulti M andiri memiliki beberapa cabang yang tersebar di DKI Jakarta dan Jawa Barat.
3.1.2 Visi dan Misi
Visi dari PT. M ulia M ulti M andiri yaitu :
• M endorong tumbuh kembangnya kegiatan usaha perdagangan berbasis distribusi
• M emelihara hubungan yang kuat dengan principal dan pelanggan sebagai mitra usaha
• M embangun kesinambungan jaringan usaha distribusi sesuai perkembangan gaya hidup, peraturan perdagangan serta manfaat kemajuan teknologi.
M isi dari PT. Mulia M ulti M andiri yaitu :
• M emadukan strategi keunggulan usaha dengan sumber dana sesuai dengan tingkat kebutuhan karakteristik usaha distribusi melalui penerapan strategi pemasaran dan kontribusi pengembangannya berdasarkan analisa pasar, pengamatan area serta meningkatkan sumber daya manusia
• M engupayakan terbaik dan dapat memberikan informasi yang mendukung nilai tambah usaha dalam upaya meningkatkan jumlah pelanggan dengan azas yang saling menguntungkan
• M embuat lingkungan kerja yang kondusif dan menciptakan remunerasi yang kompetitif serta meningkatkan pelatihan, pendidikan informal dalam upaya meningkatkan produktifitas kerja
3.1.3 S truktur Organisasi PT. Mulia Multi Mandiri
Gambar 3.1a S truktur Organisasi PT. Mulia Multi Mandiri
Gambar 3.1b S truktur Organisasi di Tiap Cabang Presiden Direktur
Dir. Keuangan
Dir. Operasional Personalia & Umum Internal Audit
Sales M anager
Corporate Sales Admin
Supervisor Supervisor Supervisor Supervisor
Supervisor
Sales Supervisor
Sales Admin
Salesman Salesman Salesman Salesman Salesman Admin Gudang
Helper Helper Helper Helper Helper Helper Gudang
Office Boy
3.1.4 Wewenang dan Tanggung Jawab
Adapun uraian pembagian wewenang dan tanggung jawab dari masing-masing bagian adalah sebagai berikut :
1. Direktur Utama
• M erencanakan sasaran dan tujuan perusahaan, baik jangka pendek maupun jangka panjang.
• M enerapkan berbagai kebijakan perusahaan.
• M engawasi seluruh aktivitas direktur operasional dan jajarannya. • M emimpin dan mengendalikan perusahaan.
2. Direktur Operasional
• Bertanggung jawab atas seluruh kegiatan operasional perusahaan.
• M enyusun strategi yang terkait dengan kelangsungan operasional perusahaan.
• Bertanggung jawab untuk mengembangkan wilayah perusahaan. 3. Direktur Keuangan
• Bertanggung jawab dalam menangani pembayaran pembelian dan penggajian karyawan.
4. Personalia dan Umum
• M enyeleksi, merekrut dan melatih karyawan yang akan diterima. • M encatat data absensi, lembur dan cuti karyawan.
• M enerapkan sistem penggajian dan tunjangan sosial karyawan. 5. Internal Audit
6. Sales Manager
• M embawahi Supervisor dan mencatat setiap pemesanan pembelian dari masing-masing Supervisor.
7. Corporate Sales Admin
• M embantu atasan dalam menyiapakan laporan dan melakukan administrasi penjualan.
• M elakukan komunikasi dengan setiap gudang untuk kelengkapan data terkait atau menyampaikan informasi yang dikeluarkan sales manager sehubungan dengan kepentingan penjualan.
8. Supervisor
• M embantu sales manager dengan memimpin sales team secara efektif dan efisien dalam pencapaian sales target.
• M embuat budget biaya operasional yang dibutuhkan di areanya.
• M elakukan perencanaan, tindakan, koordinasi dan kontrol terhadap aktivitas sales team guna kelancaran distribusi produk perusahaan.
9. Sales Supervisor
• M embuat rencana kerja mingguan.
• M emimpin beberapa sales dan sales helper.
• Bertanggung jawab terhadap laporan administrasi depo.
10. Sales Admin
• M embantu sales supervisor dalam membuat laporan administrasi.
• M elakukan komunikasi dengan setiap sales untuk kelengkapan data dan persediaan barang.
11. Salesman
• M embantu sales supervisor dalam pencapaian target sales, call dan efektif call, pengembangan outlet, pelayanan pelanggan.
12. Admin Gudang
• Bertanggung jawab dalam mengawasi persediaan barang di gudang. • Bertanggung jawab dalam mengawasi keluar masuk barang di gudang.
13. Helper Salesman
• M embantu salesman bongkar muat barang baik dari gudang ke outlet/ pelanggan.
14. Helper Gudang
• M embantu admin gudang bongkar muat barang ke gudang dan pengecekan stok.
15. Office Boy
• Bertanggung jawab terhadap kebersihan di gudang. 16. Satpam
• Bertanggung jawab terhadap keamanan gudang.
3.1.5 Sistem yang Sedang Berjalan 3.1.5.1 Proses Bisnis
3.1.5.1.1 Prosedur Pembelian Barang
Bagian gudang mengecek persediaan barang di gudang berdasarkan data stok barang apabila stok mencukupi maka bagian gudang tidak melakukan apa-apa, tetapi jika tidak mencukupi bagian gudang membuat surat ke bagian logistik
yang memberitahukan ke bagian logistik bahwa persediaan barang di gudang sudah mencapai batas minimum. Bagian logistik membuat CRO (Customer
Replacement Order) rangkap 3:
• Rangkap 1 disimpan kepada logistik • Rangkap 2 diberikan di bagian supplier • Rangkap 3 diberikan ke bagian inventory
CRO tersebut yang akan dikirimkan ke supplier. Supplier akan mengecek CRO yang dibuat, apakah kapasitas produksi di supplier mencukupi atau tidak. Jika mencukupi, supplier akan membuat CO (Collection Order) rangkap 3 : • Rangkap 1 disimpan di supplier
• Rangkap 2 dikirim ke bagian finance • Rangkap 3 dikirim ke bagian inventory
Jika tidak mencukupi, supplier akan membuat konfirmasi bahwa kapasitas produksi tidak mencukupi dan supplier akan membuat dokumen konfirmasi kapasitas produksi rangkap 2 untuk supplier dan logisitik.
• Rangkap 1 disimpan di supplier • Rangkap 2 dikirim ke bagian logistik
Setelah dokumen konfirmasi dikirim bagian logistik, bagian logistik akan membuat CRO baru, CRO baru dikirim ke supplier, setelah itu supplier akan
3.1.5.1.2 Prosedur Persediaan Barang
Setelah CO dibuat, supplier membuat surat jalan, dan mengirim barang beserta dengan surat jalan (rangkap 2) ke bagian gudang.
Setelah barang dikirim dan masuk ke dalam gudang, bagian gudang memeriksa barang yang diterima ada yang cacat atau tidak. Jika cacat maka bagian inventory akan membuat CN (Credit Nota) dan membuat dokumen rangkap 2:
• Rangkap 1 disimpan di bagian inventory • Rangkap 2 dikirim ke supplier
Supplier menerima CN dari bagian inventory lalu supplier akan mengirim
barang sesuai CN dalam waktu maksimal 1 minggu ke bagian inventory dan bagian inventory melakukan tukar barang dan dicatat di proses penerimaan barang.
Jika tidak cacat bagian inventory akan tanda tangan surat jalan, yang asli akan dikirimkan ke supplier dan copynya disimpan di bagian inventory sebagai arsip, setelah menandatangani surat jalan bagian inventory akan melakukan proses mencatat penerimaan barang, setelah itu bagian inventory membuat laporan penerimaan barang dan membuat dokumennya lalu membuat laporan stok barang beserta arsip rangkap 2:
• Rangkap 1 disimpan di inventory • Rangkap 2 dikirim ke bagian logistik
Setelah surat jalan yang asli dikirim ke supplier, supplier membuat surat tagihan dan dokumen surat tagihan rangkap 2:
• Rangkap 1 disimpan di supplier • Rangkap 2 dikirim ke bagian finance
Setelah surat tagihan diterima oleh bagian finance, bagian finance melakukan proses pembayaran, supplier menerima pembayaran dari bagian
finance. Setelah menerima pembayaran supplier membuat bukti pembayaran dan
dokumennya rangkap 2:
• Rangkap 1 disimpan di supplier • Rangkap 2 dikirim ke bagian finance
3.1.5.1.3 Prosedur Penjualan Barang
Bagian penjualan membuat loading slip (bukti muat barang) ke bagian gudang, bagian gudang cek barang. Jika barang tidak cukup maka, bagian penjualan meminta kebijaksanaan customer, kalau cukup bagian gudang membuat loading slip (bukti keluar barang) ke bagian penjualan, lalu bagian penjualan membuat surat jalan. Surat jalan rangkap ke-3 dikirim ke bagian
finance, lalu bagian finance membuat bukti pembayaran. Bukti pembayaran
beserta surat jalan rangkap ke-2 dikirin ke customer, dan surat jalan rangkap ke-1 dikirim ke bagian transportir, lalu bagian transportir mengirim barang ke
customer. Customer menerima barang dan menandatangani surat jalan.
Kemudian cus tomer membayar sesuai dengan harga kepada bagian transpotir. Setelah menerima pembayaran dari customer, transportir melakukan penyetoran pembayaran ke bagian finance.
3.1.5.2 Diagram Aliran Dokumen
3.1.5.2.1 Diagram Aliran Dokumen Pembelian Barang
INVENTORY LOGISTIK SUPPLIER FINANCE
M ulai Sto k m encukupi Membuat CO 3 3 ya Mem buat CRO 2 1 CRO 2 CRO Selesai ya 2 2 CO
Gambar 3.2a D AD Pembelian Barang
1 CRO
3 CRO
Data stok gudang
tidak Mengecek ke- cukupan kapa- sitas produksi 1 CO 3 CO tidak Konfirmasi kapasitas produksi 1 2 Kapasitas produksi 1 Kapasitas produksi Membuat CRO
3.1.5.2.2 Diagram Aliran Dokumen Persediaan Barang
INVENTORY LOGISTIK SUPPLIER FINANCE
Gambar 3.2b DAD Persediaan Barang
Mulai 2 1 2 2 Surat Tagihan 2 Surat jalan 1 Surat Tagihan Dikirim sesuai CO Laporan penerimaan barang Terima barang Cek barang cacat ya tidak Tanda tangan surat jalan Membuat CN Membuat surat jalan 2 Surat jalan
Mencatat pen eri maan barang 2 1 CN Membuat lapor an peneri maan barang Membuat lapor an stok barang 1 Arsip 2 Arsip 2 CN Mengirim barang sesuai CN 1 Surat j alan Membuat surat tagihan Menerima pembayaran Melakukan pembayaran Membuat bukti pembayaran 2 1 Bukti pem bay aran
2 Bukti pem bay aran
Selesai
Tukar barang
Dikirim sesuai CN
3.1.5.2.3 Diagram Aliran Dokumen Penjualan Barang
CUST OMER PENJUALAN GUDAN G T RANSPORT IR FINANCE
Gambar 3.2c DAD Penjualan Barang
Buat loading slip tidak Mulai Mem buat PO PO
Mem buat loading slip (bukt i m uat
barang) 2 1 Loading slip Loading slip 1 Sto k m encukupi N N Minta kebij aksanaan custom er y a Loading Slip (bukti m uat barang)
Mem buat surat j alan 3 2 1 Surat j alan 3 Surat j alan N
Mem buat bukti pem bay aran
2 1 Bukti pem bay aran 1
Bukti pem bay aran N
Terima barang Tanda tangan surat jalan Melakukan pembayaran 1 Surat j alan 2 Surat j alan N N Mengirim barang Menerima pembayaran Melakukan penyetoran pem bay aran
Menerima penyetoran pembayaran
2 1 Bukti peny etoran pem bay aran
N
1 Bukti peny etoran pem bay aran
3.1.5.3 Kebutuhan pengguna 3.1.5.3.1 Kebutuhan Informasi
Laporan yang dibutuhkan oleh PT. M ulia M ulti M andiri dalam aplikasi ini adalah:
1. Informasi tentang persediaan barang
Dibutuhkan informasi yang akurat mengenai persediaan, misalnya barang apa saja yang ada dan berapa jumlah barang yang masuk dan keluar. Informasi ini dibutuhkan oleh bagian penjualan setiap waktu dan bagian pembelian setiap minggu.
2. Informasi tentang pembelian
Dibutuhkan informasi mengenai transaksi-transaksi pembelian yang telah dilakukan, misalnya kapan transaksi pembelian dilakukan dan siapa pemasoknya. Dibutuhkan oleh bagian inventory untuk mengetahui jumlah barang yang dibeli setiap minggu, dan bagian finance untuk membayar tagihan setiap dua minggu. 3. Informasi tentang penjualan
Dibutuhkan informasi mengenai transaksi penjualan, misalnya kapan transaksi penjualan dilakukan dan siapa pelanggannya. Dibutuhkan oleh bagian inventory untuk mengetahui stok barang terakhir setiap waktu dan bagian finance untuk mengetahui jumlah barang dan jumlah pemasukan dari barang yang dijual setiap waktu.
4. Informasi tentang karyawan
Dibutuhkan informasi mengenai siapa saja karyawan dalam perusahaan, kapan mulai bekerja, dan jabatannya. Dibutuhkan oleh bagian personalia setiap bulan.
5. Informasi tentang pelanggan
Dibutuhkan informasi mengenai nama pelanggan, alamat dan nomor telepon. Dibutuhkan oleh bagian penjualan dan bagian transportir setiap waktu.
6. Informasi tentang pemasok
Dibutuhkan informasi mengenai nama pemasok, alamat, nomor telepon, dan nomor fax. Dibutuhkan oleh bagian pembelian setiap minggu.
7. Informasi tentang barang
Dibutuhkan informasi mengenai harga jual, harga beli, dan tanggal terakhir
update. Dibutuhkan oleh bagian inventory, penjualan, pembelian dan finance
setiap waktu.
3.1.5.3.2 Kebutuhan Keamanan Data
Keamanan data merupakan hal yang sangat penting yang diharapkan ada nantinya untuk keamanan rahasia perusahaan dan juga untuk menghindari terjadinya kehilangan data dari berbagai hal yang tidak diinginkan. Selain itu masalah kewenangan dalam mengakses suatu data juga sangat penting dan diharapkan ada suatu sistem yang dapat menangani masalah otoritas ini sehingga hanya orang yang berkepentingan saja yang dapat mengakses data tersebut. 3.1.5.3.3 Kebutuhan Integrasi Data
Perusahaan membutuhkan suatu aplikasi dengan database yang terintegrasi yang dapat memenuhi kebutuhan data yang sebelumnya tersebar di berbagai sistem informasi konvensional yang belum terkoordinasi dan terintegrasi dengan baik, sehingga mempemudah dalam mendapatkan data dan informasi yang dibutuhkan.
Integrasi data juga merupakan hal yang penting untuk menghasilkan dokumen-dokumen yang dibutuhkan perusahaan seperti faktur penjualan, PO, laporan penjualan, laporan pembelian, dan laporan persediaan barang.
3.1.5.3.4 Kebutuhan Kecepatan Akses Data
Semua bagian pada PT. M ulti M ulia M andiri memerlukan informasi dan data yang dapat diakses secara cepat dan akurat. Bagian-bagian tersebut juga diharapkan untuk dapat membuat suatu arsip data dalam bentuk ringkas dan mudah dicari sehingga tidak perlu bergelut dengan tumpukan kertas yang ada. 3.1.5.3.5 Kebutuhan Transaksi
Perusahaan membutuhkan suatu aplikasi basis data yang dapat mendukung transaksi untuk memasukkan, mengubah, menghapus, memperoleh data dan informasi dengan praktis dan efisien, dan menyajikan kebutuhan informasi untuk mendukung kegiatan operasional perusahaan.
3.1.6 Permasalahan yang Dihadapi
Setelah melakukan analisis melalui wawancara kepada kepala bagian logistik PT M ulia M ulti M andiri, Bapak Herman, penulis menemukan beberapa permasalahan yang dihadapi oleh perusahaan tersebut dalam menjalankan bisnisnya. Permasalahan yang dihadapi diantaranya:
1. Sering terjadi ketidaksesuaian antara jumlah barang yang ada di gudang dengan jumlah barang pada data persediaan.
2. Pencetakan dan pencatatan laporan pembelian, persediaan dan penjualan masih dilakukan secara manual, sehingga membutuhkan waktu lama dan kurang akurat.
3. Kesulitan dalam penyimpanan berkas karena transaksi yang terjadi cukup banyak.
4. Belum adanya sistem keamanan data, sehingga data perusahaan dapat dilihat dan diambil oleh siapa saja.
5. Kemungkinan terjadinya kehilangan data.
3.1.7 Usulan Pemecahan Masalah
Berdasarkan hasil analisis terhadap permasalahan yang dihadapi perusahaan tersebut, maka diusulkan untuk menerapkan logikal basis data sebagai pengganti logikal manual dalam menjalankan bisnisnya. Sistem basis data disini dimaksudkan adalah logikal basis data yang mendukung pembelian, persediaan dan penjualan.
Di samping itu, akan dikembangkan sebuah aplikasi program yang dapat mengakses logikal basis data tersebut dan dapat digunakan oleh beberapa bagian perusahaan terutama di bagian yang berhubungan dengan pembelian, persediaan dan penjualan. Perancangan aplikasi ini dimaksudkan agar memperoleh informasi yang cepat dan akurat oleh beberapa divisi yang membutuhkannya. Di dalam program aplikasi ini akan meng-update stok barang secara otomatis sesuai
dengan transaksi yang terjadi. Dengan demikian, perancangan basis data ini dapat membantu kinerja perusahaan.
3.2 Perancangan Basis Data
Perancangan basis data dilakukan berdasarkan kebutuhan informasi yang telah diidentifikasi pada PT. M ulia M ulti M andiri dan terbagi dalam tiga tahap, yaitu :
• Perancangan basis data konseptual • Perancangan basis data logikal • Perancangan basis data fisikal
3.2.1 Perancangan Basis Data Konseptual
Perancangan basis data konseptual merupakan suatu proses pembuatan model dengan menggunakan informasi yang diperoleh dari perusahaan. Perancangan basis data secara konseptual merupakan tahap pertama dari perancangan sebuah sistem basis data. Langkah-langkah penting dalam merancang sebuah basis data secara konseptual adalah :
1. Identifikasi tipe entitas 2. Identifikasi tipe relasional
3. Identifikasi dan asosiasi atribut suatu entitas
3.2.1.1 Identifikasi Tipe Entitas
Tujuan dari mengidentifikasi tipe entitas adalah untuk menentukan entitas utama yang dibutuhkan.
Tabel 3.1 Identifikasi Tipe Entitas
Nama Entitas Deskripsi Entitas Alias Kejadian Karyawan M erupakan entitas yang
berisi informasi
karyawan yang bekerja di PT M ulia M ulti M andiri.
Staff Karyawan
melakukan aktifitas kerja yang di perusahaan
Divisi M enunjukkan divisi atau bagian dari pegawai yang
ada
bagian Setiap bagian
memiliki satu atau lebih pegawai Status_Karyawan M enunjukkan status
posisi atau kedudukan dari pegawai
Setiap pegawai memiliki satu posisi
Supplier M erupakan entitas yang berisi informasi tentang pemasok barang-barang perusahaan Pemasok Pemasok melakukan kerja yang berhubungan dengan pengiriman dan penyediaan barang-barang
Nama Entitas Deskripsi Entitas Alias Kejadian Customer M erupakan entitas yang
berisi informasi tentang pelanggan perusahaan.
Pelanggan Pelanggan
melakukan
pemesanan barang pembelian
Produk M erupakan entitas yang
berisi informasi mengenai barang.
Barang Setiap barang yang
dijual, dibeli dan disimpan pada perusahaan.
PO M erupakan entitas yang berisi tentang informasi tentang pemesanan barang kepada supplier
Purchase_O rder Proses pemesanan yang dilakukan perusahaan ke supplier, jika persedian barang mencapai batas minimum.
PP M erupakan entitas yang berisi informasi tentang rincian pembayaran kepada supplier Purchase_P ayment Transaksi pembayaran yang dilakukan perusahaan kepada supplier berdasarkan
Nama Entitas Deskripsi Entitas Alias Kejadian tagihan yang
dikirimkan.
RO Entitas yang berisi
informasi barang yang diterima dari supplier
Receiving_ Order
Barang yang dibeli dari supplier
diterima oleh bagian penerimaan barang.
SO M erupakan entitas yang berisi informasi tentang pemesanan barang dari pelanggan
Sales_Order Proses pemesanan
barang yang dilakukan
pelanggan kepada perusahaan.
SP M erupakan entitas yang berisi informasi tentang penerimaan pembayaran dari pelanggan Sales_Paym ent Transaksi pembayaran yang dilakukan pelanggan kepada perusahaan berdasarkan Nomor DO.
Nama Entitas Deskripsi Entitas Alias Kejadian
DO M erupakan entitas yang
berisi informasi tentang pengiriman barang pesanan pelanggan Delivery_Or der Proses pengiriman barang kepada pelanggan.
CN M erupakan entitas yang
berisi informasi tentang barang yang cacat
Credit_Nota Setiap ada barang
yang cacat akan dibuat Credit Nota
3.2.1.2 Identifikasi Tipe Relationship
Tujuan dari tahap ini adalah untuk mengidentifikasikan relationship penting yang ada diantara entity tipe yang telah diidentifikasi. Terdapat dua langkah penting yang dilakukan yaitu :
a. M embuat Entity-Relationship Diagram
b. M enentukan batasan multiplicity dari relationship type
Membuat Batasan Multiplicity dari Relationship Type Tabel 3.2 Batasan Multiplicity dan Relationship
Entity Name Multiplicity Relationship Entity Name Multiplicity
Customer 1..1 M elakukan SO 1..*
Karyawan 1..1 M elakukan PO 1..*
Entity Name Multiplicity Relationship Entity Name Multiplicity 1..1 M enangani RO 1..* 1..1 M elakukan PP 1..* 1..1 M enangani SO 1..* 1..1 M elakukan DO 1..* 1..1 M enerima SP 1..* Supplier 1..1 M enangani PO 1..* 1..1 M enangani CN 0..*
Divisi 1..1 M emiliki Karyawan 1..*
Status_Karyawan 1..1 M emiliki Karyawan 1..*
PO 1..1 M emiliki RO 1..1 Produk 1..* Terhadap PO 1..* 1..* Terhadap SO 1..* 1..* Terhadap CN 0..* RO 1..1 M elakukan CN 0..* 1..1 M emiliki PP 1..1 SO 1..1 M emiliki DO 1..1 DO 1..1 M emiliki SP 1..1
Entity-Relationship Diagram
Gambar 3.3 ER Diagram Konseptual
3.2.1.3Mengidentifikasi dan Mengasosiasikan Atribut dan Domain Atribut dengan
Entity atau Relationship Type
Tahap ini bertujuan untuk mengasosiasikan atribut dengan Entity atau
Relationship Type yang cocok dan juga menentukan domain bagi atribut-atribut
dalam model data konseptual. Atribut-atribut entity yang diidentifikasikan adalah sebagai berikut :
Nama Entitas : Customer Tabel 3.3 Entitas Customer
Attribute Description Data Types
and Length
Nulls Multi Valued
Kd_Customer M engidentifikasi setiap pembeli secara unik
Char (6) No No
Nama_Customer Nama dari customer Varchar (30) No No Alamat_Customer Alamat dari customer Varchar (50) No No Telpcust Nomor telepon dari
customer
Varchar (15) No Yes
Nama Entitas : S upplier Tabel 3.4 Entitas Supplier
Attribute Description Data Types
and Length
Nulls Multi Valued
Kd_Supplier M engidentifikasikan setiap
supplier secara unik
Char (5) No No
Nama_Supplier Nama dari supplier Varchar (30) No No Alamat_Supplier Alamat dari supplier Varchar (50) No No Telpsupp Nomor telepon supplier Varchar (15) No Yes Faxsupp Nomor fax dari supplier Varchar (15) No Yes
Nama entitas : Produk Tabel 3.5 Entitas Produk
Attribute Description Data Types
and Length
Nulls Multi Valued
Kd_Produk M engidentifikasikan setiap produk secara unik
Char (5) No No
Nama_Produk Nama dari produk Varchar (20) No No Qty Jumlah produk yang
tersedia
Integer No No
Harga_Beli M engidentifikasikan harga produk pada saat
pembelian
Float No No
Harga_Jual M engidentifikasikan harga produk pada saat dijual
Float No No
Tgl_Update M engidentifikasikan tanggal update dari harga beli dan harga jual
Datetime No No
Nama entitas : Karyawan Tabel 3.6 Entitas Karyawan
Attribute Description Data Types
and Length
Nulls Multi Valued
Kd_Karyawan M engidentifikasikan karyawan yang bekerja
Nama_Karyawan Nama dari karyawan Varchar (30) No No Alamat_Karyawan Alamat dari karyawan Varchar (50) No No Telpkary Nomor telepon dari
karyawan
Varchar (15) No Yes
Faxkary Nomor fax dari karyawan Varchar (15) No Yes Nama_Divisi Nama dari divisi Varchar (30) No No Nama_Status Nama dari Status Varchar (30) No No
Nama entitas : Status_Karyawan Tabel 3.7 Entitas Jabatan
Attribute Description Data Types
and Length
Nulls Multi Valued
Kd_Status M engidentifikasikan jabatan yang ada pada
perusahaan secara unik
Char (5) No No
Nama_Status Nama dari Status Varchar (30) No No
Nama entitas : Divisi Tabel 3.8 Entitas Divisi
Attribute Description Data Types
and Length
Nulls Multi Valued
Kd_Divisi M engidentifikasikan divisi yang ada di perusahaan
secara unik
Nama_Divisi Nama dari divisi Varchar (30) No No
Nama entitas : PO Tabel 3.9 Entitas PO
Attribute Description Data Types
and Length Nulls Multi Valued No_PO M engidentifikasikan pemesanan pembelian secara unik Char (8) No No
Tgl_PO Tanggal pemesanan
pembelian
Datetime No No
Nama_Supplier Nama dari supplier Varchar (30) No No Nama_Produk Nama dari produk Varchar (20) No No Qty_Beli Jumlah produk yang dibeli Integer No No
Harga_Beli M engidentifikasikan harga dari produk
Float No No
Nama_Karyawan Nama dari karyawan Varchar (30) No No
Nama Entitas : RO Tabel 3.10 Entitas RO
Attribute Description Data Types
and Length Nulls Multi Valued No_RO M engidentifikasikan penerimaan barang Char (8) No No
pembelian secara unik
Tgl_RO Tanggal penerimaan
barang pembelian
Datetime No No
Nama_Karyawan Nama dari karyawan Varchar (30) No No
Nama Entitas : PP Tabel 3.11 Entitas PP
Attribute Description Data Types
and Length Nulls Multi Valued No_PP M engidentifikasikan pembayaran pembelian secara unik Char (8) No No Tgl_PP Tanggal pembayaran pembelian Datetime No No
Nama_Karyawan Nama dari karyawan Varchar (30) No No
Nama Entitas : SO Tabel 3.12 Entitas SO
Attribute Description Data Types
and Length Nulls Multi Valued No_SO M engidentifikasikan pemesanan penjualan secara unik Char (8) No No
penjualan
Nama_Customer Nama dari customer Varchar (30) No No Nama_Produk Nama dari produk Varchar (30) No No Qty_Jual Jumlah produk yang dijual Integer No No
Harga_Jual M engidentifikasikan harga produk
Float No No
Nama_Karyawan Nama dari karyawan Varchar (30) No No
Nama Entitas : DO Tabel 3.13 Entitas DO
Attribute Description Data Types
and Length
Nulls Multi Valued
No_DO M engidentifikasikan surat jalan secara unik
Char (8) No No
Tgl_DO Tanggal surat jalan Datetime No No Nama_Karyawan Nama dari karyawan Varchar (30) No No
Nama Entitas : S P Tabel 3.14 Entitas S P
Attribute Description Data Types
and Length Nulls Multi Valued No_SP M engidentifikasikan pembayaran penjualan secara unik Char (8) No No
Tgl_SP Tanggal pembayaran penjualan
Datetime No No
Nama_Karyawan Nama dari karyawan Varchar (30) No No
Nama Entitas : CN Tabel 3.15 Entitas CN
Attribute Description Data Types
and Length
Nulls Multi Valued
No_CN M engidentifikasikan credit nota secara unik
Char (8) No No
Tgl_CN Tanggal credit nota Datetime No No Nama_Supplier Nama dari supplier Varchar (30) No No Nama_Produk Nama dari produk Varchar (20) No No Qty_CN Jumlah produk yang
ditukar
Integer No No
Nama_Karyawan Nama dari karyawan Varchar (30) No No
Dari kamus data relationship dapat ditemukan domain atribut seperti terlihat pada tabel berikut :
Tabel 3.16 Domain Atribut
Tipe Data dan Panjang Data Keterangan
Kd_Customer Char(6) Digit 1 dan 2 diisi dengan KC dan digit lainnya diisi dengan angka.
Tipe Data dan Panjang Data Keterangan
Kd_Supplier Char(5) Digit 1 dan 2 diisi dengan K S dan digit lainnya diisi dengan angka.
Kd_Produk Char (5) Digit 1 dan 2 diisi dengan KP dan digit lainnya diisi dengan angka.
Kd_Karyawan Char(5) Digit 1 dan 2 diisi dengan KK dan digit lainnya diisi dengan angka.
Kd_Divisi Char(5) Digit 1 dan 2 diisi dengan KD dan digit lainnya diisi dengan angka.
Kd_Status Char(5) Digit 1 dan 2 diisi dengan KJ dan digit lainnya diisi dengan angka.
No_PO Char(8) Digit 1 sampai 3 diisi dengan NPO digit lainnya diisi dengan angka.
No_RO Char(8) Digit 1 sampai 3 diisi dengan NRO digit lainnya diisi dengan angka.
No_PP Char(8) Digit 1 sampai 3 diisi dengan NPP digit lainnya diisi dengan angka.
No_SO Char(8) Digit 1 sampai 3 diisi dengan NSO digit lainnya diisi dengan angka.
No_DO Char(8) Digit 1 sampai 3 diisi dengan NDO digit lainnya diisi dengan angka.
M engidentifikasi candidate key dan primary key dapat dilihat pada tabel sebagai berikut: Tabel 3.17 Identifikasi Candidate dan Primary Key
Nama Entitas Candidate Key Primary Key
Customer Kd_Customer Kd_Customer Supplier Kd_Supplier Kd_Supplier Produk Kd_Produk Nama_Produk Kd_Produk Karyawan Kd_Karyawan Telpkary Faxkary Kd_Karyawan Status_Karyawan Kd_Status Nama_Status Kd_Status Divisi Kd_Divisi Nama_Divisi Kd_Divisi PO No_PO No_PO RO No_RO No_RO PP No_PP No_PP SO No_SO No_SO Tipe Data dan Panjang Data Keterangan
lainnya diisi dengan angka.
No_CN Char(8) Digit 1 sampai 3 diisi dengan NCN digit lainnya diisi dengan angka.
Nama Entitas Candidate Key Primary Key
DO No_DO No_DO
SP No_SP No_SP CN No_CN No_CN
ER Diagram Konseptual dengan Penambahan Primary Key
m e la ku ka n m enang a ni me la k u ka n m enang a ni m e la ku ka n me n er ima m e na ngan i m e m ilik i m em ilik i
3.2.1.4 Memvalidasi Model Konseptual Lokal dengan Transaksi Pengguna me la ku k a n m e na ngan i m e na ngan i m el a ku ka n me ne ri ma m e m ilik i me mi li ki
Gambar 3.5 ER Diagram Konseptual dengan Penambahan Transaksi Keterangan : A. Karyawan melakukan PO B. Karyawan menangani RO C. Karyawan melakukan CN D. Karyawan melakukan PP E. Karyawan membuat SO F. Karyawan melakukan DO G. Karyawan menerima SP
Query yang dibutuhkan :
- M embuat Laporan Pembelian - M embuat Laporan Penjualan - M embuat Laporan Persediaan
- M embuat informasi mengenai Karyawan - M embuat informasi mengenai Supplier - M embuat informasi mengenai Pelanggan - M embuat informasi mengenai Produk
3.2.2 Pemilihan DBMS (Database Management System)
Sesuai dengan permintaan pengguna, DBM S yang menjadi pertimbangan adalah SQL Server 2000, Oracle 9i, dan M ySQL.
Tabel 3.18 Perbandingan DBMS
Keterangan SQL Server 2000 Oracle 9i MySQL Platform SQL Server 2000 hanya bisa dijalankan dalam platform yang berbasis Windows- based, seperti Windows 9x, Windows NT, Windows 2000
Oracle 9i bisa bekerja pada semua platform, termasuk platform yang berbasis Windows-based, Sistem berbasis AIX, Compaq Tru 64 UNIX, HP9000 series HP-UX sistem,
MySQL bisa dijalankan pada semua platform, termasuk platform berbasis Windows- based, Sistem berbasis AIX, Sistem HP-UX, Linux Intel, Sun-Solaris
Keterangan SQL Server 2000 Oracle 9i MySQL Linux Intel,
Sun-Solaris Hardware - Processor Pentium 1,66M hz atau lebih - M emory 64M B RAM - Hard disk 380M B Hard disk space - Processor Pentium 1,66M hz atau lebih - M emory 128M B RAM - Hard disk 4,7GB Hard disk Space ( untuk Oracle Home Drive, FAT)
- Processor Pentium 1,66M hz atau lebih - M emory 32M B RAM - Hard disk
80M B Hard disk space
Software Untuk Enteprise Edition membutuhkan Windows 2000 Server, Windows NT 4.0 service pack 5 Untuk Platform Berbasis Windows, menggunakan Windows 2000 / Windows NT 4.0 service pack 5 / Windows XP
Untuk Platform berbasis Windows dapat M enggunakan Windows 95/98/NT/2000/XP/2003 Fitur M endukung SQL, di mana T-SQL tersebut M endukung PL SQL, di mana PL SQL meliputi fitur : M endukung MySQL Dialect. Fiturnya : Indexes : tidak
Keterangan SQL Server 2000 Oracle 9i MySQL meliputi : Indexes : B Tree Indexes Table : Relational Table, Temporary table Trigger : AFTER trigger, INSTEAD OF triggers Procedure : T-SQL Statement Array : Tidak M endukung Indexes : B Tree Indexes, bitmap indexes, partitioned indexes, function based indexes, domain indexes Table : Relational Table, Object
table, temporary table Trigger : BEFORE triggers, AFTER triggers, INSTEAD OF Procedures : PL/SQL Statement, Java methods, third Generation Language(3GL) routines Array : mendukung mendukung Triggers : tidak mendukung Trigger : tidak mendukung Array : M endukung
Keterangan SQL Server 2000 Oracle 9i MySQL Harga $4.999 - $19.999 $15.000 - $40.000 Open Source/ Free
Software, dibawah persetujuan GNU (
General Public License)
Ketiga DBM S di atas memiliki kelebihan dan kekurangan masing-masing. Dan dapat digunakan untuk membangun sistem yang efisien. Penulis memilih menggunakan MySQL, karena kemudahan dalam proses install dan penggunaannya, serta merupakan Free Software.
3.2.3 Perancangan Basis Data Logikal
Perancangan basis data logikal adalah proses membangun suatu model informasi yang digunakan dalam suatu perusahaan berdasarkan suatu model khusus, tapi tidak tergantung kepada suatu DBM S tertentu dengan pertimbangan fisik lain. Tahapan utama fase ini adalah membangun suatu model data logikal dari sebuah model data konseptual lokal yang merepresentasikan view tertentu dari perusahaan dan kemudian memvalidasikan model ini untuk meyakinkan bahwa model tersebut secara struktural benar dan model tersebut mendukung semua transaksi yang dibutuhkan.
Langkah-langkah dalam merancang basis data logikal yaitu:
1. M enghilangkan fitur-fitur yang tidak sesuai dengan model data relational. 2. M embuat relasi tabel untuk model data logikal.
3. M emvalidasi relasi menggunakan teknik normalisasi. 4. M emvalidasi relasi terhadap transaksi user.
5. M endefinisikan batasan integritas (integrity constraint).
3.2.3.1Menghilangkan fitur-fitur yang tidak sesuai dengan model data relational. a. Menghilangkan many-to-many ( *:* ) Binary Relationship
Di bawah ini terdiri dari beberapa tabel yang perlu untuk menghilangkan tipe relasi many-to-many diantaranya sebagai berikut :
• Relasi biner many-to-many antara entitas PO dan Produk
Setelah dihilangkan menjadi :
Gambar 3.6a Menghilangkan tipe relasi binary many-to-many (*:*) • Relasi biner many-to-many antara entitas SO dan Produk
Setelah dihilangkan menjadi :
• Relasi biner many-to-many antara entitas CN dan Produk
Setelah dihilangkan menjadi :
Gambar 3.6c Menghilangkan tipe relasi binary many-to-many (*:*) b. Menghilangkan Multi-Valued Atribut
Atribut-atribut yang multi-valued dapat dihilangkan dengan cara memisahkannya menjadi entitas tersendiri, contoh : Telpcust, Telpsupp, Telpkary.
• Atribut Telpcust pada entity Customer dapat dipisahkan menjadi sebuah entitas baru yaitu entitas Telpcust yang mempunyai relasi dengan Customer.
Gambar 3.7a Menghilangkan Multi-Valued Atribut
• Atribut Telpsupp dan Faxsupp pada entitas Supplier dapat dipisahkan menjadi sebuah entitas baru yaitu entitas Telp_Supplier dan Fax_Supplier yang mempunyai relasi dengan Supplier.
Gambar 3.7b Menghilangkan Multi-Valued Atribut
• Atribut Telpkary dan Faxkary pada entitas Karyawan dapat dipisahkan menjadi sebuah entitas baru yaitu entitas Telp_Karyawan dan Fax_Karyawan yang mempunyai relasi dengan Karyawan.
Gambar 3.7c Menghilangkan Multi-Valued Atribut
3.2.3.2Membuat Relasi untuk Model Data Logikal
a. Tipe strong entity
- Customer (Kd_Customer, Nama_Customer, Alamat_Customer) Primary Key Kd_Customer
- Supplier (Kd_Supplier, Nama_Supplier, Alamat_Supplier) Primary Key Kd_Supplier
- Karyawan (Kd_Karyawan, Nama_Karyawan, Alamat_Karyawan, Nama_Divisi, Nama_Jabatan)
- S tatus_Karyawan (Kd_Status, Nama_Status) Primary Key Kd_Status
- Divisi (Kd_Divisi, Nama_Divisi) Primary Key Kd_Divisi
- Produk (Kd_Produk, Nama_Produk, Qty, Harga_Beli, Harga_Jual, T gl_Update) Primary Key Kd_Produk
- PO_H (No_PO, Tgl_PO, Nama_Supplier, Nama_Karyawan) Primary Key No_PO
- RO (No_RO, Tgl_RO, Nama_Karyawan) Primary Key No_RO
- PP (No_PP, Tgl_PP, Nama_Karyawan) Primary Key No_PP
- SO_H (No_SO, Tgl_SO, Nama_Customer, Nama_Karyawan) Primary Key No_SO
- DO (No_DO, Tgl_DO, Nama_Karyawan) Primary Key No_DO
- S P (No_SP, Tgl_SP, Nama_Karyawan) Primary Key No_SP
- CN_H (No_CN, Tgl_CN, Nama_Supplier, Nama_Karyawan) Primary Key No_CN
b. Tipe Weak Entity
- Telp_Customer (Telpcust)
Primary Key belum ada (untuk saat ini)
- Telp_S upplier (Telpsupp)
Primary Key belum ada (untuk saat ini)
- Fax_S upplier (Faxsupp)
Primary Key belum ada (untuk saat ini)
- Telp_Karyawan (Telpkary)
Primary Key belum ada (untuk saat ini)
- Fax_Karyawan (Faxkary)
Primary Key belum ada (untuk saat ini)
- PO_D (Qty_Beli, Harga_Beli)
Primary Key belum ada (untuk saat ini) - SO_D (Qty_Jual, Harga_Jual)
Primary Key belum ada (untuk saat ini)
- CN_D (Qty_CN)
c. Tipe relasi binary one-to-many (1:*)
- Hubungan Divisi dengan Karyawan
Gambar 3.8a Relasi Binary one-to-many (1:*)
- Hubungan Jabatan dengan Karyawan
Gambar 3.8b Relasi Binary one-to-many (1:*)
- Hubungan Supplier dengan PO_H
- Hubungan Karyawan dengan PO_H
Gambar 3.8d Relasi Binary one-to-many (1:*)
- Hubungan PO_H dengan PO_D
Gambar 3.8e Relasi Binary one-to-many (1:*) - Hubungan Produk dengan PO_D
- Hubungan Karyawan dengan SO_H
Gambar 3.8g Relasi Binary one-to-many (1:*)
- Hubungan Customer dengan SO_H
Gambar 3.8h Relasi Binary one-to-many (1:*)
- Hubungan SO_H dengan SO_D
- Hubungan Produk dengan SO_D
Gambar 3.8j Relasi Binary one-to-many (1:*) - Hubungan Supplier dengan CN_H
Gambar 3.8k Relasi Binary one-to-many (1:*)
- Hubungan Karyawan dengan CN_H
Gambar 3.8l Relasi Binary one-to-many (1:*) - Hubungan CN_H dengan CN_D
- Hubungan Produk dengan CN_D
Gambar 3.8n Relasi Binary one-to-many (1:*)
- Hubungan Karyawan dengan RO
Gambar 3.8o Relasi Binary one-to-many (1:*)
- Hubungan RO dengan CN_H
Gambar 3.8p Relasi Binary one-to-many (1:*)
- Hubungan Karyawan dengan PP
- Hubungan Karyawan dengan DO
Gambar 3.8r Relasi Binary one-to-many (1:*) - Hubungan Karyawan dengan SP
Gambar 3.8s Relasi Binary one-to-many (1:*)
- Hubungan Customer dengan Telp_Customer
Gambar 3.8t Relasi Binary one-to-many (1:*)
- Hubungan Karyawan dengan Telp_Karyawan
Gambar 3.8u Relasi Binary one-to-many (1:*) - Hubungan Karyawan dengan Fax_Karyawan
Gambar 3.8v Relasi Binary one-to-many (1:*)
- Hubungan Supplier dengan Telp_Supplier
Gambar 3.8w Relasi Binary one-to-many (1:*) - Hubungan Supplier dengan Fax_Supplier
d. Tipe relasi binary one-to-one (1:1)
- Hubungan RO dengan PP
Gambar 3.9a Relasi Binary one-to-many (1:1) - Hubungan PO_H dengan RO
Gambar 3.9b Relasi Binary one-to-many (1:1) - Hubungan SO_H dengan DO
- Hubungan DO dengan SP
Gambar 3.9d Relasi Binary one-to-many (1:*)
3.2.3.3Memvalidasi Relasi Menggunakan Teknik Normalisasi
1 NF :
Semua relasi telah memenuhi 1NF karena telah memiliki Primary Key dan tidak ditemukan repeating groups, sebab tiap baris dan kolom dalam sebuah relasi telah mengandung hanya satu nilai.
2 NF:
Semua relasi telah memenuhi 2 NF karena tidak ditemukan ketergantungan parsial karena setiap atribut non-Primary Key telah bersifat tergantung penuh dengan Primary Key.
3 NF:
Semua tabel telah memenuhi 3 NF karena tidak ditemukan ketergantungan transitive.
Entity Relationship Diagram Setelah Normalisasi te rh adap te rh ad ap m em ilik i m em ilik i m el a ku ka n M ena nga ni m em ilik i m e la ku k a n m e la ku ka n m e m ilik i Me ne rima m e la ku ka n M e na ng ani te rh ada p
3.2.3.4Memvalidasi Relasi terhadap Transaksi User
Validasi relasi melalui transaksi pengguna dilakukan berdasarkan validasi relasi transaksi pengguna pada tahap konseptual dengan spesifikasi input dan
output sebagai berikut :
(a) M embuat PP
Ambil Nama_Karyawan dari Karyawan berdasarkan Kd_Karyawan Ambil Nama_Status dari Status_Karyawan berdasarkan Kd_Status Ambil Nama_Divisi dari Divisi berdasarkan Kd_Divisi
Ambil Kd_Supplier dari RO berdasarkan No_RO
Ambil Nama_Supplier dari Supplier berdasarkan Kd_Supplier Ambil Kd_Produk dari RO berdasarkan No_RO
Ambil Nama_Produk dari Produk berdasarkan Kd_Produk
Tulis No_PP, Tgl_PP, No_RO, Kd_Karyawan, Kd_Jabatan, Kd_Divisi ke PP
(b) M embuat CN
Ambil Nama_Karyawan dari Karyawan berdasarkan Kd_Karyawan Ambil Nama_Status dari Status_Karyawan berdasarkan Kd_Status Ambil Nama_Divisi dari Divisi berdasarkan Kd_Divisi
Ambil Kd_Supplier dari RO berdasarkan No_RO
Ambil Nama_Supplier, Alamat_Supplier dari Supplier berdasarkan Kd_Supplier
Ambil Kd_Produk dari RO berdasarkan No_RO
Ambil Nama_Produk dari Produk berdasarkan Kd_Produk Tulis No_CN, Tgl_CN, No_RO, Kd_Karyawan, Kd_Jabatan, Kd_Divisi ke CN
(c) M asukan data RO
Ambil Nama_Karyawan dari Karyawan berdasarkan Kd_Karyawan Ambil Nama_Status dari Status_Karyawan berdasarkan Kd_Status Ambil Nama_Divisi dari Divisi berdasarkan Kd_Divisi
Ambil Kd_Supplier dari PO_H berdasarkan No_PO
Ambil Nama_Supplier dari Supplier berdasarkan Kd_Supplier Ambil Kd_Produk dari PO_D berdasarkan No_PO
Ambil Nama_Produk dari Produk berdasarkan Kd_Produk Tulis No_RO, Tgl_RO, No_PO, Kd_Karyawan, Kd_Jabatan, Kd_Divisi ke RO
(d) M embuat PO
Ambil Nama_Karyawan dari Karyawan berdasarkan Kd_Karyawan Ambil Nama_Status dari Status_Karyawan berdasarkan Kd_Status Ambil Nama_Divisi dari Divisi berdasarkan Kd_Divisi
Ambil Nama_Supplier, Alamat_Supplier dari Supplier berdasarkan Kd_Supplier
Tulis No_PO, Tgl_PO, Kd_Supplier, Kd_Karyawan, Kd_Jabatan, Kd_Divisi ke PO_H
Ambil Nama_Produk, Harga_Beli dari Produk berdasarkan Kd_Produk
Tulis No_PO, Kd_Produk, Qty_Beli ke PO_D
(e) M embuat SO
Ambil Nama_Karyawan dari Karyawan berdasarkan Kd_Karyawan Ambil Nama_Status dari Status_Karyawan berdasarkan Kd_Status Ambil Nama_Divisi dari Divisi berdasarkan Kd_Divisi
Ambil Nama_Customer, Alamat_Customer dari Customer berdasarkan Kd_Customer
Tulis No_SO, Tgl_SO, Kd_Customer, Kd_Karyawan, Kd_Jabatan, Kd_Divisi ke SO_H
Ambil Nama_Produk, Harga_Jual dari Produk berdasarkan Kd_Produk
Tulis No_SO, Kd_Produk, Qty_Jual ke SO_D
(f) M elakukan DO
Ambil Nama_Karyawan dari Karyawan berdasarkan Kd_Karyawan Ambil Nama_Status dari Status_Karyawan berdasarkan Kd_Status Ambil Nama_Divisi dari Divisi berdasarkan Kd_Divisi
Ambil Nama_Customer, Alamat_Customer dari Customer berdasarkan Kd_Customer
Ambil Kd_Produk dari SO_D berdasarkan No_SO
Ambil Nama_Produk dari Produk berdasarkan Kd_Produk Tulis No_DO, Tgl_DO, No_SO, Kd_Karyawan, Kd_Jabatan, Kd_Divisi ke DO
(g) M embuat SP
Ambil Nama_Karyawan dari Karyawan berdasarkan Kd_Karyawan Ambil Nama_Status dari Status_Karyawan berdasarkan Kd_Status Ambil Nama_Divisi dari Divisi berdasarkan Kd_Divisi
Ambil Kd_Customer dari DO berdasarkan No_DO
Ambil Nama_Customer, Alamat_Customer dari Customer berdasarkan Kd_Customer
Ambil Kd_Produk dari DO berdasarkan No_DO
Ambil Nama_Produk dari Produk berdasarkan Kd_Produk Tulis No_SP, Tgl_SP, No_DO, Kd_Karyawan, Kd_Jabatan, Kd_Divisi ke SP
Query yang dibutuhkan:
Ambil No_PO, Kd_Produk, Qty_Beli, Harga_Beli, (jumlah dari Harga_Beli dikali Qty_Beli) dari PO digabungkan dengan TotalPembelian berdasarkan No_PO
Tulis ke Laporan Pembelian
- M embuat laporan penjualan
Ambil Tgl_SO, Kd_Produk, Qty_Jual, Harga_Jual, (jumlah dari Harga_Jual dikali Qty_Jual) dari SO digabungkan dengan TotalPenjualan berdasarkan No_SO
Tulis ke Laporan Penjualan
- M embuat laporan persediaan
Ambil Tgl_Penerimaan_Barang, Kd_Produk dari Penerimaan_Barang Ambil Nama_Produk, Qty dari Produk berdasarkan Kd_Produk Tulis ke Laporan Persediaan
- M embuat informasi mengenai karyawan
Ambil Kd_Karyawan, Nama_Karyawan, Alamat_Karyawan dari Karyawan Ambil Telpkary dari Telp_Karyawan berdasarkan Kd_Karyawan
Ambil Faxkary dari Fax_Karyawan berdasarkan Kd_Karyawan Tulis ke View Karyawan
Ambil Kd_Supplier, Nama_Supplier, Alamat_Supplier dari Supplier Ambil Telpsupp dari Telp_Supplier berdasarkan Kd_Supplier Ambil Faxsupp dari Fax_Supplier berdasarkan Kd_Supplier Tulis ke View Supplier
- M embuat informasi mengenai customer
Ambil Kd_Customer, Nama_Customer, Alamat_Customer dari Customer Ambil Telpcust dari Telp_Customer berdasarkan Kd_Customer
Tulis ke View Customer
- M embuat informasi mengenai produk
Ambil Kd_Produk, Nama_Produk, Harga_Beli, Harga_Jual, Qty dari Produk Tulis ke View Produk
3.2.3.5Mendefinisikan Integrity Constraint
• Required data
Beberapa atribut harus selalu berisi data yang sah sehingga atribut tersebut tidak diperbolehkan menerima null. Batasan seperti ini telah diidentifikasikan dalam kamus data atribut.
• Attribute domain constrains
Setiap atribut mempunyai domain yang merupakan sekumpulan nilai yang sah. Batasan ini telah diidentifiikasikan pada saat menentukan
• Entity integrity
Primary key dari sebuah entity tidak dapat menerima null. Batasan
ini telah dipertimbangkan pada saat mengidentifikasi primary key pada kamus data entitas.
• Referential integrity
Tabel 3.19 Referential Integrity
Customer (Kd_Customer, Nama_Customer, Alamat_Customer) Primary Key Kd_Customer
Telp_Customer (Telpcust, Kd_Customer) Primary Key Telp_Cust
Foreign Key Kd_Customer references Customer (Kd_Customer) Supplier (Kd_Supplier, Nama_Supplier, Alamat_Supplier) Primary Key Kd_Supplier
Telp_S upplier (Telpsupp, Kd_Supplier) Primary Key Telpsupp
Foreign Key Kd_Supplier references Supplier (Kd_Supplier) Fax_S upplier (Faxsupp, Kd_Supplier)
Primary Key Faxsupp
Foreign Key Kd_Supplier references Supplier (Kd_Supplier)
Karyawan (Kd_Karyawan, Nama_Karyawan, Alamat_Karyawan, Kd_Divisi, Kd_Jabatan)
Foreign Key Kd_Divisi references Divisi (Kd_Divisi) Foreign Key Kd_Jabatan references Jabatan (Kd_Jabatan) Telp_Karyawan (Telpkary, Kd_Karyawan)
Primary Key Telpkary
Foreign Key Kd_Karyawan references Karyawan (Kd_Karyawan) Fax_Karyawan (Faxkary, Kd_Karyawan)
Primary Key Faxkary
Foreign Key Kd_Karyawan references Karyawan (Kd_Karyawan) Divisi (Kd_Divisi, Nama_Divisi)
Primary Key Kd_Divisi
S tatus_Karyawan (Kd_Status, Nama_Status) Primary Key Kd_Status
Produk (Kd_Produk, Nama_Produk, Qty, Harga_Beli, Harga_Jual, T gl_Update) Primary Key Kd_Produk
PO_H (No_PO, Tgl_PO, Kd_Supplier, Kd_Karyawan ) Primary Key No_PO
Foreign Key Kd_Supplier references Supplier (Kd_Supplier) Foreign Key Kd_Karyawan references Karyawan (Kd_Karyawan) PO_D (No_PO, Kd_Produk, Harga_Beli, Qty_Beli)
Primary Key No_PO, Kd_Produk
Foreign Key No_PO references PO_H (No_PO)
RO (No_RO, Tgl_RO, No_PO, Kd_Karyawan) Primary Key No_RO
Foreign Key No_PO references PO_H (No_PO)
Foreign Key Kd_Karyawan references Karyawan (Kd_Karyawan) PP (No_PP, Tgl_PP, No_RO, Kd_Karyawan)
Primary Key No_PP
Foreign Key No_RO references RO (No_RO)
Foreign Key Kd_Karyawan references Karyawan (Kd_Karyawan) SO_H (No_SO, Tgl_SO, Kd_Customer, Kd_Karyawan)
Primary Key No_SO
Foreign Key Kd_Customer references Customer (Kd_Customer) Foreign Key Kd_Karyawan references Karyawan (Kd_Karyawan) SO_D (No_SO, Kd_Produk, Harga_Jual, Qty_Jual)
Primary Key No_SO, Kd_Produk
Foreign Key No_SO references SO_H (No_SO)
Foreign Key Kd_Produk references Produk (Kd_Produk) DO (No_DO, Tgl_DO, No_SO, Kd_Karyawan)
Primary Key No_DO
Foreign Key No_SO references SO_H (No_SO)
Foreign Key Kd_Karyawan references Karyawan (Kd_Karyawan) S P (No_SP, Tgl_SP, No_DO, Kd_Karyawan)
Foreign Key No_DO references DO (No_DO)
Foreign Key Kd_Karyawan references Karyawan (Kd_Karyawan) CN_H (No_CN, No_RO, Tgl_CN, Kd_Supplier, Kd_Karyawan) Primary Key No_CN
Foreign Key No_RO references RO (No_RO)
Foreign Key Kd_Supplier references Supplier (Kd_Supplier) Foreign Key Kd_Karyawan references Karyawan (Kd_Karyawan) CN_D (No_CN, Kd_Produk, Qty_CN)
Primary Key No_CN, Kd_Produk
Foreign Key No_CN references CN_H (No_CN)
Foreign Key Kd_Produk references Produk (Kd_Produk)
3.2.4 Perancangan Basis Data Fisikal
3.2.4.1Penerjemahan Model Data Logikal Sesuai DBMS
Tujuan dari tahap ini adalah untuk mengidentifikasikan basis data relasional dalam model data logikal global yang digunakan dalam DBM S dengan menggunakan DBDL (DataBase Design Language), DBDL yang digunakan adalah sebagai berikut:
3.2.4.1.1 Perancangan Relasi Dasar
1. Customer
Domain Kd_Customer variable length character string, length 6 Domain Nama_Customer variable length character string, length 30
Domain Alamat_Customer variable length character string, length 50
Customer (
Kd_Customer Kode Customer NOT NULL, Nama_Customer Nama Customer NOT NULL, Alamat_Customer Alamat Customer NOT NULL,
Primary Key (Kd_Customer) ); 2. Telp_Customer
Domain Telpcust variable length character string, length 15 Domain Kd_Customer variable length character string, length 6
Telp_Customer (
Telpcust Telepon Customer NOT NULL,
Kd_Customer Kode Customer NOT NULL,
Primary Key (Telpcust),
Foreign Key Kd_Customer references Customer (Kd_Customer) ON UPDATE CASCADE ON DELETE NO ACTION);
3. Supplier
Domain Kd_Supplier variable length character string, length 5 Domain Nama_Supplier variable length character string, length 30 Domain Alamat_Supplier variable length character string, length 50
Supplier (
Kd_Suppplier Kode Supplier NOT NULL, Nama_Supplier Nama Supplier NOT NULL, Alamat_Supplier Alamat Supplier NOT NULL,
Primary Key (Kd_Supplier) ); 4. Telp_S upplier
Domain Telpsupp variable length character string, length 15 Domain Kd_Supplier variable length character string, length 5 Telp_Supplier (
Telpsupp Telepon Supplier NOT NULL, Kd_Supplier Kode Supplier NOT NULL, Primary Key (Telpsupp),
Foreign Key Kd_Supplier references Supplier (Kd_Supplier) ON UPDATE CASCADE ON DELETE NO ACTION);
5. Fax_S upplier
Domain Faxsupp variable length character string, length 15 Domain Kd_Supplier variable length character string, length 5
Fax_Supplier (
Faxsupp Fax Supplier NOT NULL,
Kd_Supplier Kode Supplier NOT NULL, Primary Key (Faxsupp),
Foreign Key Kd_Supplier referencesSupplier (Kd_Suppplier) ON UPDATE CASCADE ON DELETE NO ACTION);
6. Karyawan
Domain Kd_Karyawan variable length character string, length 5 Domain Nama_Karyawan variable length character string, length 30 Domain Alamat_Karyawan variable length character string, length 50
Domain Kd_Divisi variable length character string, length 5 Domain Kd_Jabatan variable length character string, length 5
Karyawan (
Kd_Karyawan Kode Karyawan NOT NULL, Nama_Karyawan Nama Karyawan NOT NULL,
Alamat_Karyawan Alamat Karyawan NOT NULL, Kd_Divisi Kode Divisi NOT NULL, Kd_Jabatan Kode Jabatan NOT NULL,
Primary Key (Kd_Karyawan)
Foreign Key Kd_Divisi references Divisi (Kd_Divisi) ON UPDATE CASCADE ON DELETE NO ACTION,
Foreign Key Kd_Jabatan references Jabatan (Kd_Jabatan) ON UPDATE CASCADE ON DELETE NO ACTION);
7. Telp_Karyawan
Domain Telpkary variable length character string, length 15 Domain Kd_Karyawan variable length character string, length 5
Telp_Karyawan (
Telpkary Telepon Karyawan NOT NULL, Kd_Karyawan Kode Karyawan NOT NULL, Primary Key (Telpkary),
Foreign Key Kd_Karyawan references Karyawan (Kd_Karyawan) ON UPDATE CASCADE ON DELETE NO ACTION);
8. Fax_Karyawan
Domain Faxkary variable length character string, length 15 Domain Kd_Karyawan variable length character string, length 5
Fax_Karyawan (
Faxkary Fax Karyawan NOT NULL,
Kd_Karyawan Kode Karyawan NOT NULL, Primary Key (Faxkary),
Foreign Key Kd_Karyawan references Karyawan (Kd_Karyawan) ON UPDATE CASCADE ON DELETE NO ACTION);
9. Divisi
Domain Kd_Divisi variable length character string, length 5 Domain Nama_Divisi variable length character string, length 30
Divisi (
Kd_Divisi Kode Divisi NOT NULL, Nama_Divisi Nama Divisi NOT NULL,
Primary Key (Kd_Divisi) ); 10. S tatus_Karyawan
Domain Kd_Status variable length character string, length 5 Domain Nama_Status variable length character string, length 30
Jabatan (
Kd_Status Kode Status NOT NULL, Nama_Status Nama Status NOT NULL,
11. Produk
Domain Kd_Produk variable length character string, length 5 Domain Nama_Produk variable length character string, length 20
Domain Qty int
Domain Harga_Beli float Domain Harga_Jual float
Domain Tgl_Update variable length character length datename
Produk (
Kd_Produk Kode Produk NOT NULL, Nama_Produk Nama Produk NOT NULL,
Qty Qty NOT NULL,
Harga_Beli Harga Beli NOT NULL,
Harga_Jual Harga Jual NOT NULL,
Tgl_Update Tanggal Update NOT NULL, Primary Key (Kd_Produk) );
12. PO_H
Domain No_PO variable length character string, length 8 Domain Tgl_PO variable length character datename Domain Kd_Supplier variable length character string, length 5 Domain Kd_Karyawan variable length character string, length 5
PO_H (
No_PO Nomor PO NOT NULL,
Kd_Supplier Kode Supplier NOT NULL, Kd_Karyawan Kode Karyawan NOT NULL,
Primary Key (No_PO),
Foreign Key Kd_Supplier references Supplier (Kd_Supplier) ON UPDATE CASCADE ON DELELTE NO ACTION,
Foreign Key Kd_Karyawan references Jabatan (Kd_Jabatan) ON UPDATE CASCADE ON DELELTE NO ACTION);
13. PO_D
Domain No_PO variable length character string, length 8 Domain Kd_Produk variable length character string, length 5 Domain Harga_Beli float
Domain Qty_Beli int
PO_D (
No_PO Nomor PO NOT NULL,
Kd_Produk Kode Produk NOT NULL,
Harga_Beli Harga Beli NOT NULL,
Qty_Beli Qty Beli NOT NULL,
Primary Key (No_PO, Kd_Produk);
Foreign Key No_PO references PO_H (No_PO) ON UPDATE CASCADE ON DELETE NO ACTION,
Foreign Key Kd_Produk references Produk (Kd_Produk) ON UPDATE CASCADE ON DELETE NO ACTION);
14. RO
Domain No_RO variable length character string, length 8 Domain Tgl_RO variable length character datename Domain No_PO variable length character string, length 8 Domain Kd_Karyawan variable length character string, length 5
RO (
No_RO Nomor RO NOT NULL,
Tgl_RO Tanggal RO NOT NULL,
No_PO Nomor PO NOT NULL,
Kd_Karyawan Kode Karyawan NOT NULL, Primary Key (No_RO),
Foreign Key No_PO references PO_H (No_PO) ON UPDATE CASCADE ON DELETE NO ACTION,
Foreign Key Kd_Karyawan references Karyawan (Kd_Karyawan) ON UPDATE CASCADE ON DELETE NO ACTION);
15. PP
Domain No_PP variable length character string, length 8 Domain Tgl_PP variable length character datename Domain No_RO variable length character string, length 8 Domain Kd_Karyawan variable length character string, length 5
PP (
No_PP Nomor PP NOT NULL,
No_RO Nomor RO NOT NULL, Kd_Karyawan Kode Karyawan NOT NULL, Primary Key (No_PP),
Foreign Key No_RO references RO (No_RO) ON UPDATE CASCADE ON DELETE NO ACTION,
Foreign Key Kd_Karyawan references Karyawan (Kd_Karyawan) ON UPDATE CASCADE ON DELETE NO ACTION);
16. SO_H
Domain No_SO variable length character string, length 8 Domain Tgl_SO variable length character datename Domain Kd_Customer variable length character string, length 6 Domain Kd_Karyawan variable length character string, length 5
SO_H (
No_SO Nomor SO NOT NULL,
Tgl_SO Tanggal SO NOT NULL,
Kd_Customer Kode Customer NOT NULL, Kd_Karyawan Kode Karyawan NOT NULL, Primary Key (No_SO),
Foreign Key Kd_Customer references Customer (Kd_Customer) ON UPDATE CASCADE ON DELETE NO ACTION,
Foreign Key Kd_Karyawan references Karyawan (Kd_Karyawan) ON UPDATE CASCADE ON DELETE NO ACTION);
17. SO_D
Domain No_SO variable length character string, length 8 Domain Kd_Produk variable length character string, length 5 Domain Harga_Jual float
Domain Qty_Jual int
SO_D (
No_SO Nomor SO NOT NULL,
Kd_Produk Kode Produk NOT NULL, Harga_Jual Harga Jual NOT NULL, Qty_Jual Qty Jual NOT NULL,
Primary Key (No_SO, Kd_Produk),
Foreign Key No_SO references SO_H (No_SO) ON UPDATE CASCADE ON DELETE NO ACTION,
Foreign Key Kd_Produk references Produk (Kd_Produk) ON UPDATE CASCADE ON DELETE NO ACTION);
18. DO
Domain No_DO variable length character string, length 8 Domain No_SO variable length character string, length 8 Domain Tgl_DO variable length character datename Domain Kd_Karyawan variable length character string, length 5
DO (
No_DO Nomor DO NOT NULL,
Tgl_DO Tanggal DO NOT NULL, Kd_Karyawan Kode Karyawan NOT NULL, Primary Key (No_DO),
Foreign Key No_SO references SO_H (No_SO) ON UPDATE CASCADE ON DELETE NO ACTION,
Foreign Key Kd_Karyawan references Karyawan (Kd_Karyawan) ON UPDATE CASCADE ON DELETE NO ACTION);
19. S P
Domain No_SP variable length character string, length 8 Domain Tgl_SP variable length character datename Domain No_DO variable length character string, length 8 Domain Kd_Karyawan variable length character string, length 5
SP (
No_SP Nomor SP NOT NULL,
Tgl_SP Tanggal SP NOT NULL,
No_DO Nomor DO NOT NULL,
Kd_Karyawan Kode Karyawan NOT NULL, Primary Key (No_SP),
Foreign Key No_DO references DO (No_DO) ON UPDATE CASCADE ON DELETE NO ACTION,
Foreign Key Kd_Karyawan references Karyawan (Kd_Karyawan) ON UPDATE CASCADE ON DELETE NO ACTION);
20. CN_H
Domain No_CN variable length character string, length 8 Domain Tgl_CN variable length character datename Domain No_RO variable length character string, length 8 Domain Kd_Supplier variable length character string, length 5 Domain Kd_Karyawan variable length character string, length 5
CN (
No_CN Nomor CN NOT NULL,
Tgl_CN Tanggal CN NOT NULL,
No_RO Nomor RO NOT NULL,
Kd_Supplier Kode Supplier NOT NULL, Kd_Karyawan Kode Karyawan NOT NULL, Primary Key (No_CN),
Foreign Key No_RO references RO (No_RO) ON UPDATE CASCADE ON DELETE NO ACTION,
Foreign Key Kd_Karyawan references Karyawan (Kd_Karyawan) ON UPDATE CASCADE ON DELETE NO ACTION);
21. CN_D
Domain No_CN variable length character string, length 8 Domain Kd_Produk variable length character string, length 5
Domain Qty_CN int
CN_D (
Kd_Produk Kode Produk NOT NULL,
Qty_CN Qty CN NOT NULL,
Primary Key (No_CN, Kd_Produk),
Foreign Key No_CN references CN_H (No_CN) ON UPDATE CASCADE ON DELETE NO ACTION,
Foreign Key Kd_Produk references Produk (Kd_Produk) ON UPDATE CASCADE ON DELETE NO ACTION);
3.2.4.1.2 Perancangan Representasi dari Data yang Diturunkan
Setelah dilakukan analisa, tidak terdapat data yang diturunkan.
3.2.4.1.3 Perancangan Enteprise Constraint
Setelah dilakukan analisa, tidak terdapat enterprise constraint.
3.2.4.2 Perancangan Representasi Fisikal
3.2.4.2.1 Analisa Transaksi
Tabel 3.20 Cross-referencing transactions and relations (A) – (D)
Transaksi/Relasi (A) (B) (C) (D)
I R U D I R U D I R U D I R U D Customer
Transaksi/Relasi (A) (B) (C) (D) I R U D I R U D I R U D I R U D Karyawan x x x x Divisi x x x x Status_Karyawan x x x x Produk x x PO_H x x x x x PO_D x x x x x RO x x x x x x PP x x x x SO_H SO_D DO SP CN_H x x x x CN_D x x x x
I = Insert, R = Read, U = Update, D = Delete
Tabel 3.21 Cross-referencing transactions and relations (E) – (G)
Transaksi/Relasi (E) (F) (G)
I R U D I R U D I R U D
Customer x x x
Transaksi/Relasi (E) (F) (G) I R U D I R U D I R U D Karyawan x x x Divisi x x x Status_Karyawan x x x PO_H PO_D RO PP SO_H x x x x x SO_D x x x x x DO x x x x x SP x x x X CN
I = Insert, R = Read, U = Update, D = Delete Keterangan : A. Karyawan melakukan PO B. Karyawan menangani RO C. Karyawan melakukan CN D. Karyawan melakukan PP E. Karyawan membuat SO F. Karyawan melakukan DO G. Karyawan menerima SP