66
ANALISIS DAN PERANCANGAN SISTEM BASIS DATA
3.1 Riwayat Perusahaan
PT. Istana Argo Kencana merupakan perusahaan perdagangan (Trading Company) yang menjadi distributor sekaligus agen tunggal pemegang merk dari produk Sanken yang diproduksi oleh PT. Sanken Argadwija.
PT. Istana Argo Kencana yang berlokasi di Jln. Pluit Raya No. 19, Jakarta Barat didirikan pada akhir tahun 1997 yang dikepalai oleh 3 orang yang sekaligus pemegang saham terbesar, yaitu Mr. Markus Seah, Bp. Leo Zahar, dan Ibu Magdalena Ongko Wijaya. Saat itu, mereka membawahi sekitar 100 orang karyawan.
Sebagai pemain baru dalam memasarkan produknya waktu itu, PT. Istana Argo Kencana harus bersaing dengan pemain-pemain lama yang telah lama menguasai pasar, sebut saja merk Toshiba atau National yang sudah tidak asing lagi di telinga orang Indonesia.
Pada awalnya untuk membuat produk Sanken, PT. Istana Argo Kencana menjalin hubungan dengan beberapa manufaktur baik yang ada di dalam negeri maupun di luar negeri dan bila selesai, produk tersebut akan dikirim ke PT. Sanken Argadwija yang berada di Curug, Tangerang untuk registrasi dan pelabelan, baru selanjutnya dipasarkan oleh PT. Istana Argo Kencana.
Produk yang dipasarkan terbagi atas:
1. Produk Home Appliance dan Small Home Appliance seperti kulkas, mesin cuci, kompor gas, juicer, rice cooker, air conditioner, dan sebagainya.
2. Produk Audio Video seperti TV, VCD dan home theater.
Dari produk-produk yang dipasarkan tersebut ada yang masih belum dapat diproduksi di dalam negeri dan masih harus diimpor dalam bentuk Completely Built Up (CBU) dari Taiwan dan Malaysia, yaitu terdiri dari:
1. Lemari es besar 3 pintu 2. Mesin cuci Full Automatic 3. Small Appliances
4. Air Conditioner dengan kompresor dari Mitsubishi
PT. Istana Argo Kencana yang saat ini memiliki jumlah karyawan sekitar 256 orang yang berada di kantor pusat dan 14 kantor cabang yang tersebar di wilayah kota besar di Indonesia, yaitu: Tangerang, Bandung, Malang, Palembang, Samarinda, Banjarmasin, Ujung Pandang, Bali, Yogyakarta, Semarang, Surabaya, dan Lampung.
3.2 Struktur Organisasi Perusahaan dan Pembagian Tugas, Tanggung Jawab, Wewenang dan hal-hal lain yang menyangkut perusahaan
Berikut ini adalah struktur organisasi PT. Istana Argo Kencana.
Berdasarkan struktur organisasi yang ada, maka pembagian tugas, wewenang, dan tanggung jawab perusahaan adalah sebagai berikut:
1. BOD (Board of Directors)
Tugas dari BOD (Board of Directors) adalah menerima semua laporan penjualan yang dilakukan Perusahaan.
2. Sales & Marketing
Tugas dari bagian Sales & Marketing adalah membuat konsep-konsep promosi yang dapat mendukung penjualan produk.
3. Customer Service
Tugas dari bagian Customer Service adalah menangani dan melayani kebutuhan customer dengan baik.
4. IT
Tugas dari bagian IT adalah menjaga sistem tetap berjalan, melakukan pengembangan sistem baru, dan juga mengatasi permasalahan yang ada pada sistem.
5. Admin
Tugas dari bagian Admin adalah melakukan input data yang berkaitan terhadap sistem informasi di perusahaan dan melakukan update atau delete terhadap data yang bermasalah.
6. Finance
Tugas dari bagian Finance adalah membuat kas bank dan laporan keuangan perusahaan.
7. Sales Admin
Tugas dari Sales Admin adalah melakukan input data penjualan yang diberikan oleh sales dan retur barang.
8. Inventory Control
Tugas dari Inventory Control adalah memeriksa apakah barang yang keluar dari gudang telah sesuai dengan barang yang diterima oleh customer.
9. Acccount Receivable
Tugas dari Account Receivable adalah membuat faktur berdasarkan barang yang telah dipesan oleh customer dan juga memastikan customer membayar dengan jumlah yang sesuai dan tepat pada waktunya.
10. Internal Audit
Tugas dari Internal Audit adalah melakukan pemeriksaan terhadap keberadaan barang baik secara fisik maupun data dan juga mempelajari alur keberadaan barang untuk barang yang hilang.
11. Gudang
Tugas dari bagian Gudang adalah menyiapkan barang pesanan sesuai delivery order, membuat surat jalan sesuai dengan barang keluar, dan menerima barang yang masuk ke gudang.
3.3 Tata Laksana/Prosedur yang Sedang Berjalan
Proses pemesanan dimulai dari Customer memesan barang kepada Sales perusahaan. Sales kemudian membuat Sales Order dua rangkap. Satu lembar diberikan kepada Sales Admin secara langsung, melalui fax, atau telepon. Sales Admin membuat Delivery Order dua rangkap, selembar diberikan kepada bagian Inventory Control untuk diperiksa apakah stok barang yang dipesan mencukupi. Inventory Control mencetak stok barang yang ada di gudang, dan memberikan kembali ke Sales Admin. Sales Admin membandingkan ketersediaan barang dengan jumlah pesanan. Jika pesanan terpenuhi, maka Delivery Order direvisi bila perlu dan diinput ke dalam basis data, serta diberikan kepada bagian Kepala Gudang. Jika tidak terpenuhi, maka Sales Admin menunda pesanan, membuat purchase order ke pabrik dan transaksi berakhir.
Proses Pengiriman dimulai dari Kepala Gudang menerima kertas Delivery Order. Jika barang tidak dikirim saat itu, maka barang yang dipesan disimpan dahulu. Jika barang dikirim saat itu juga, Kepala Gudang menyiapkan barang-barang pesanan, lalu memasukkan data barang keluar ke sistem. Dari data barang keluar di basis data, Admin Gudang membuat Surat Jalan dua rangkap lalu diberikan kembali ke Kepala Gudang untuk ditandatangani. Admin Gudang juga meng-input Surat Jalan tersebut ke basis data. Surat Delivery Order diberikan ke bagian Inventory Control dan Surat Jalan diberikan ke Kurir untuk diantar.
Gambar 3.4 Proses Pengiriman (lanjutan) Sistem yang Sedang Berjalan
Kurir mengantarkan barang beserta Surat Jalan kepada Customer. Customer mengecek barang kiriman. Jika ada yang kondisinya kurang bagus, barang tersebut diretur. Lalu Customer menandatangani Surat Jalan dan memberikannya kembali kepada Kurir. Surat Jalan kemudian diberikan ke bagian Inventory Control. Bagian Inventory Control memeriksa apakah pesanan yang tertulis di Delivery Order sama dengan barang yang diantar. Jika sama, kurangi stok barang di basis data. Jika berbeda, setelah mengurangi stok barang, Inventory Control mengubah data pada surat Delivery Order, lalu memberikannya kepada Sales Admin untuk di-update di basis data, serta mendata barang retur.
Gambar 3.5 Proses Barang Masuk Sistem yang Sedang Berjalan
Pada proses ketersediaan barang, barang yang dikirim oleh kurir dari pabrik akan diterima oleh Kepala Gudang. Kepala Gudang akan memeriksa kualitas dari barang tersebut. Apabila barang tersebut kurang bagus, maka barang tersebut akan dikembalikan ke pabrik. Sebaliknya, barang yang bagus akan
dimasukkan ke dalam gudang. Kemudian, kepala Gudang menandatangani Surat Jalan yang diberikan dan meng-input barang yang masuk tersebut ke dalam basis data.
Pada proses penjualan, bagian Account Receiveable membuat faktur tiga rangkap lalu meng-input faktur tersebut ke basis data. Faktur diberikan kepada Customer sebagai tanda penagihan. Customer dapat membayar secara cash atau transfer. Jika pembayaran sudah benar, maka uang dan faktur diberikan ke bagian Finance untuk dibukukan. Pemasukan perusahaan dimasukkan ke dalam basis data kasbank. Sampai tahap ini, proses transaksi selesai.
3.4 Data Flow Diagram 3.4.1 Diagram Context
Gambar 3.7 DFD level Context Sistem yang Sedang Berjalan
3.4.2 Diagram level 0
3.5 Permasalahan yang Dihadapi
Setelah melihat sistem yang ada dan data-data yang didapat dari hasil wawancara, maka didapatkan beberapa masalah yang dihadapi PT. Istana Argo Kencana adalah sebagai berikut:
1. Basis data pada sistem pemesanan, pengiriman, dan penjualan belum terintegrasi, sehingga aliran data pada perusahaan menjadi lambat, barang tidak tersedia saat ada pemesanan, dan sulitnya komunikasi informasi antar unit.
2. Belum online-nya sistem yang sedang berjalan antar cabang, sehingga staff IT harus mengirim data setiap dua minggu sekali secara rutin ke pusat untuk meng-update data pemesanan, pengiriman, dan penjualan pada setiap cabang tersebut.
3. Pada proses keluar-masuknya barang, masih menggunakan proses input data secara manual sehingga banyak terjadi kesalahan pada pendataan barang, jumlah barang yang tidak seusai, dan lambatnya aliran informasi mengenai barang.
3.6 Alternatif Pemecahan Masalah
Alternatif pemecahan untuk permasalahan yang dihadapi adalah:
1. Membuat suatu basis data pemesanan, pengiriman, dan penjualan berbasis web yang dapat mengintegrasikan seluruh informasi-informasi yang berkaitan dengan aktivitas pemesanan, pengiriman, dan penjualan barang. 2. Membuat suatu basis data yang dapat menyimpan informasi pemesanan,
pengiriman, dan penjualan dari setiap cabang.
3. Menggunakan barcode pada proses keluar-masuknya barang sehingga mengurangi kesalahan pendataan barang.
3.7 Usulan Prosedur yang Baru
Gambar 3.9 Proses Pemesanan Sistem yang Diusulkan
Proses pemesanan dimulai dari Customer memesan barang kepada Sales perusahaan. Sales kemudian membuat Sales Order dua rangkap. Satu lembar
diberikan kepada Sales Admin secara langsung, melalui fax, atau telepon. Sales Admin membandingkan ketersediaan barang dengan jumlah pesanan. Jika pesanan terpenuhi, maka Sales Admin membuat Delivery Order dan menyimpannya ke dalam basis data, serta diberikan kepada bagian Kepala Gudang. Jika tidak terpenuhi, maka Sales Admin menunda pesanan, membuat purchase order ke pabrik dan transaksi berakhir.
Proses Pengiriman dimulai dari Kepala Gudang melihat Delivery Order yang baru pada sistem, lalu mencetaknya. Kepala Gudang menyiapkan pesanan, scan barang keluar, dan menyimpan data ke basis data. Stok barang di gudang akan otomatis berkurang. Jika barang sudah saatnya untuk dikirim, Admin Gudang membuat Surat Jalan baru dan menyimpannya ke dalam basis data, lalu dicetak. Surat Jalan ditandatangani oleh Kepala Gudang, lalu diberikan ke Kurir.
Gambar 3.11 Proses Pengiriman (Lanjutan) Sistem yang Diusulkan
Kurir mengantarkan barang beserta Surat Jalan kepada Customer. Customer mengecek barang kiriman. Jika ada yang kondisinya kurang bagus, barang tersebut diretur. Lalu Customer menandatangani Surat Jalan dan memberikannya kembali kepada Kurir. Surat Jalan kemudian diberikan ke bagian Inventory Control. Bagian Inventory Control memeriksa apakah pesanan yang tertulis di Delivery Order sama dengan barang yang diantar. Jika berbeda,
Inventory Control mengubah data pada Delivery Order di basis data, lalu memberikan informasi retur kepada Sales Admin. Sales Admin kemudian memasukkan data retur ke basis data.
Pada proses ketersediaan barang, barang yang dikirim oleh kurir dari pabrik akan diterima oleh Kepala Gudang. Kepala Gudang akan memeriksa kualitas dari barang tersebut. Apabila barang tersebut kurang bagus, maka barang tersebut akan dikembalikan ke pabrik. Sebaliknya, barang yang bagus akan dimasukkan ke dalam gudang. Kemudian, kepala Gudang menandatangani Surat Jalan yang diberikan dan meng-input barang yang masuk tersebut ke dalam basis data.
Gambar 3.13 Proses Penjualan Sistem yang Diusulkan
Pada proses penjualan, bagian Account Receiveable membuat faktur dan menyimpannya ke basis data, lalu mencetaknya sebanyak dua rangkap. Faktur
diberikan kepada Customer sebagai tanda penagihan. Customer dapat membayar secara cash atau transfer. Jika pembayaran sudah benar, maka uang dan faktur diberikan ke bagian Finance untuk dibukukan. Pemasukan perusahaan dimasukkan ke dalam basis data kas bank. Sampai tahap ini, proses transaksi selesai.
3.8 Data Flow Diagram untuk Prosedur yang Baru 3.8.1 Diagram Context
3.8.2 Diagram Level 0
3.9 Perancangan Basis Data Konseptual 3.9.1 Mengidentifikasi Tipe Entitas
Entitas yang didapat dari DFD adalah entitas Gudang, Orders, Customer, Kendaraan, Barang, Retur, BarangMasuk, BarangKeluar, Faktur, SuratJalan, dan KasBank.
Entitas lain yang diperlukan adalah:
1. Entitas Cabang, untuk menjelaskan entitas Gudang
2. Entitas Staff, untuk menjelaskan aktor dari setiap kegiatan 3. Entitas Divisi, untuk menjelaskan entitas Staff
4. Entitas Users, untuk menjelaskan pengguna system
5. Entitas JenisKendaraan, untuk menjelaskan entitas Kendaraan 6. Entitas JenisBarang, untuk menjelaskan entitas Barang
Tabel 3.1 Identifikasi Tipe Entitas
Nama Entitas Deskripsi Alias Kejadian (Occurrence) Cabang Semua cabang yang
dimiliki perusahaan.
- Setiap cabang
memiliki gudang dan staff.
Divisi Semua divisi yang ada di perusahaan.
- Setiap divisi
memiliki staff. Staff Semua staff yang Karyawan Setiap staff
me-bekerja di perusahaan. nangani customer, order, barang ma-suk, barang keluar, surat jalan, retur, faktur, dan kas bank. Setiap staff memiliki nol atau satu user.
Users Semua pengguna
sistem basis data
User Setiap user dimiliki oleh satu staff
Customer Semua pembeli barang.
Pelanggan Setiap customer dapat melakukan order.
Setiap customer memiliki staff yang melayani order. Gudang Semua gudang yang
digunakan untuk me-nyimpan barang.
- Setiap gudang
menjelaskan barang masuk dan barang keluar. Setiap gudang memiliki barang.
untuk mengantar barang.
menyertai nol atau banyak surat jalan. JenisKendaraan Semua jenis
kendara-an ykendara-ang dimiliki ken-daraan.
- Setiap jenis ken-daraan menjelaskan satu atau banyak kendaraan.
Barang Semua barang jadi yang berasal dari pabrik.
Produk Setiap barang dapat di order. Setiap barang menjelaskan barang masuk dan barang keluar.
JenisBarang Semua jenis barang yang dimiliki barang
- Setiap jenis barang menjelaskan satu atau banyak barang.
Orders Semua pemesanan
barang oleh customer
Pemesanan Setiap order memi-liki surat jalan, faktur, dan kas bank. Setiap order membuktikan retur. BarangMasuk Semua barang yang
masuk ke gudang.
- Setiap barang
masuk dijelaskan oleh gudang dan barang.
BarangKeluar Semua barang yang keluar dari gudang.
- Setiap barang keluar mempengaruhi surat jalan.
SuratJalan Sebagai surat ijin untuk mengeluarkan barang dari gudang.
- Setiap surat jalan dimiliki order dan dipengaruhi oleh barang keluar.
Retur Semua barang yang dikembalikan oleh customer.
- Setiap retur mem-pengaruhi barang.
Faktur Sebagai surat tagihan kepada customer untuk barang yang
telah dikirim kepadanya.
- Setiap faktur
dimiliki order.
KasBank Sebagai laporan
pemasukan kas bagi perusahaan.
- Setiap kas bank
3.9.2 Mengidentifikasi Tipe Relationship
a. Membuat Entity Relationship (ER) Diagram
b. Tipe Relationship
Tabel 3.2 Identifikasi Tipe Relationship Nama Entitas
Multi-plicity Relationship Multi-plicity Nama Entitas Staff 1..1 1..1 1..* 1..1 1..1 1..1 1..1 1..1 1..1 melayani memiliki menangani membuat menangani menangani mendata mendata membuat 0..* 0..1 0..* 0..* 0..* 0..* 0..* 0,,* 0..* Customer Users Orders SuratJalan Faktur Retur BarangMasuk BarangKeluar KasBank
Divisi 1..1 memiliki 1..* Staff
Customer 1..1 melakukan 1..* Orders
Barang 1..* menjelaskan 1..* BarangMasuk
1..* menjelaskan 1..* BarangKeluar 1..* melengkapi 0..* Orders Gudang 1..1 1..1 1..1 1..1 menjelaskan menjelaskan memiliki menjelaskan 1..* 1..* 1..* 1..* BarangMasuk BarangKeluar Kendaraan Orders
1..* memiliki 1..* Barang Orders 1..1 1..1 1..1 1..1 memiliki memiliki memiliki membuktikan 1..1 1..1 1..1 0..1 KasBank BarangKeluar Faktur Retur
BarangKeluar 1..1 mempengaruhi 1..1 SuratJalan Kendaraan 1..1 melengkapi 0..* SuratJalan Cabang 1..1 1..1 memiliki menjelaskan 1..* 1..* Staff Gudang JenisBarang 1..1 menjelaskan 1..* Barang JenisKendaraan 1..1 menjelaskan 1..* Kendaraan
3.9.3 Mengidentifikasi dan Mengasosiasikan Atribut dengan Tipe Entitas atau Relationship
Tabel 3.3 Identifikasi Atribut dengan Tipe Entitas Nama
Entitas
Atribut Deskripsi Tipe Data & Panjang
Null Multi-valued Cabang kdCabang kode cabang char(3) tidak tidak
namaCabang nama cabang varchar(40) tidak tidak alamatCabang alamat cabang varchar(50) tidak tidak
kdPosCabang kode pos
cabang
char(5) tidak tidak
kotaCabang kota cabang varchar(15) tidak tidak
noTelpCabang nomor telepon
cabang
varchar(12) tidak ya
noFaxCabang nomor fax
cabang
varchar(12) tidak ya
emailCabang email cabang varchar(30) tidak tidak
noRekCabang nomor
rekening cabang
varchar(15) tidak ya
namaBank nama bank varchar(30) tidak ya Divisi kdDivisi kode divisi char(2) tidak tidak namaDivisi nama divisi varchar(20) tidak tidak
Staff kdStaff kode staff char(5) tidak tidak namaStaff nama staff varchar(40) tidak tidak
alamatStaff alamat staff varchar(50) tidak tidak kdPosStaff kode pos staff char(5) tidak tidak kotaStaff kota staff varchar(15) tidak tidak
noTelpStaff telepon staff varchar(15) tidak ya
tanggalLahir tanggal lahir
staff
date tidak tidak
emailStaff email staff varchar(30) ya tidak
jenisKelamin jenis kelamin
staff
character (L atau P)
tidak tidak
jabatan jabatan staff varchar(20) tidak tidak tanggalMulai
Kerja
tanggal staff mulai bekerja
date tidak tidak
Users username username varchar(10) tidak tidak password password varchar(20) tidak tidak privilege hak akses varchar(10) tidak tidak
lastLogin waktu terakhir
login
datetime tidak tidak
Customer kdCust kode customer char(5) tidak tidak
namaCust nama customer varchar(40) tidak tidak
alamatCust alamat
customer
kdPosCust kode pos customer
char(5) tidak tidak
kotaCust kota customer varchar(15) tidak tidak
noTelpCust nomor telepon
customer
varchar(12) tidak ya
noFaxCust nomor fax
customer
varchar(12) tidak ya
emailCust email customer varchar(30) ya tidak
noRekCust nomor
rekening customer
varchar(15) tidak ya
namaBank nama bank varchar(30) tidak ya Gudang kdGudang kode gudang char(3) tidak tidak namaGudang nama gudang varchar(30) tidak tidak alamatGudang alamat gudang varchar(50) tidak tidak
kdPosGudang kode pos
gudang
char(5) tidak tidak
kotaGudang kota gudang varchar(15) tidak tidak Kendaraan kdKend kode
kendaraan
char(4) tidak tidak
noPolisi nomor polisi varchar(10) tidak tidak JenisKenda
raan
kdJenisKend kode jenis kendaraan
jenisKend jenis kendaraan
varchar(20) tidak tidak
Barang kdBarang kode barang char(8) tidak tidak
namaBarang nama barang varchar(50) tidak tidak
qtyBarang jumlah barang int tidak tidak
harga harga barang int tidak tidak
JenisBarang kdJenisBarang jenis barang varchar(3) tidak tidak
deskripsi deskripsi
barang
varchar(80) tidak tidak
Orders kdDO kode delivery
order
char(10) tidak tidak
tanggalKirimDO tanggal kirim
delivery order
date tidak tidak
totalHarga total harga
delivery order
int tidak tidak
qtyDO quantity
barang pada delivery order
int tidak ya
tanggalInput tanggal input
delivery order
datetime tidak tidak
tanggalPrint tanggal cetak delivery order
datetime tidak tidak
mencetak delivery order kdStaffInput kode staff yang
meng-input delivery order
varchar(5) tidak tidak
BarangMa suk
kdBarangMasuk kode barang masuk
char(12) tidak tidak
tanggalMasuk tanggal barang
masuk
datetime tidak tidak
qtyBarang quantity
barang masuk
int tidak tidak
BarangKelu ar
kdBarangKeluar kode barang keluar
char(12) tidak tidak
tanggalKeluar tanggal barang keluar
datetime tidak tidak
qtyBarang quantity
barang keluar
int tidak tidak
SuratJalan kdSuratJalan kode surat jalan
char(12) tidak tidak
tglSuratJalan tanggal
pembuatan surat jalan
date tidak tidak
tanggalRetur tanggal retur date tidak tidak
qtyRetur quantity
barang retur
int tidak tidak
keteranganRetur keterangan
retur
varchar(80) tidak tidak
Faktur kdFaktur kode faktur char(12) tidak tidak
tanggalFaktur tanggal
pembuatan faktur
date tidak tidak
jatuhTempo tanggal jatuh
tempo
date tidak tidak
KasBank kdKasBank kode kas bank char(12) tidak tidak tanggalPembaya
ran
tanggal pembayaran
date tidak tidak
totalPembayaran total
pembayaran
3.9.4 Menentukan Domain Atribut
Tabel 3.4 Identifikasi Domain dari Tiap Atribut
Nama Entitas Atribut Domain
Cabang kdCabang 3 karakter dengan format xxx, dimana tiga karakter ini merupakan nomor urut cabang berupa angka.
namaCabang Variasi karakter dengan maksimal jumlah 40 karakter.
alamatCabang Variasi karakter dengan maksimal jumlah 50 karakter.
kdPosCabang 5 karakter berupa angka.
kotaCabang Variasi karakter dengan maksimal jumlah 15 karakter.
noTelpCabang Variasi angka dengan maksimal jumlah 12 digit.
noFaxCabang Variasi angka dengan maksimal jumlah 12 digit.
emailCabang Variasi karakter dengan maksimal jumlah 30 karakter, harus mengandung karakter ‘@’ dan ‘.’, dan karakter ‘@’ dan ‘.’ tidak boleh bersebelahan.
digit. namaBank Variasi karakter dengan maksimal jumlah
30 karakter.
Divisi kdDivisi 2 karakter dengan format xx, dimana dua karakter ini merupakan nomor urut divisi berupa angka.
namaDivisi Variasi karakter dengan maksimal jumlah 20 karakter.
Staff kdStaff 5 karakter dengan format aaxxx, dimana dua karakter awal berupa huruf dan tiga karakter selanjutnya merupakan nomor urut staff berupa angka.
namaStaff Variasi karakter dengan maksimal jumlah 40 karakter.
alamatStaff Variasi karakter dengan maksimal jumlah 50 karakter.
kdPosStaff 5 karakter berupa angka.
kotaStaff Variasi karakter dengan maksimal jumlah 15 karakter.
noTelpStaff Variasi angka dengan maksimal jumlah 15 digit.
tanggalLahir Tanggal dengan format dd-mm-yyyy. emailStaff Variasi karakter dengan maksimal jumlah
30 karakter, harus mengandung karakter ‘@’ dan ‘.’, dan karakter ‘@’ dan ‘.’ tidak boleh bersebelahan.
jenisKelamin Sebuah karakter ‘L’ untuk jenis kelamin laki-laki atau ‘P’ untuk jenis kelamin perempuan.
jabatan Variasi karakter dengan maksimal jumlah 20 karakter.
tanggalMulaiKerja Tanggal dengan format dd-mm-yyyy. Users username Variasi karakter dengan maksimal jumlah
10 karakter.
password Variasi karakter dengan maksimal jumlah 20 karakter.
privilege Variasi karakter dengan maksimal jumlah 10 karakter.
lastLogin Tanggal dan waktu dengan format dd-mm-yyyy hh:mi:ss
Customer kdCust 5 karakter dengan format xxxxx, dimana lima karakter ini merupakan nomor urut customer berupa angka.
namaCust Variasi karakter dengan maksimal jumlah 40 karakter.
50 karakter. kdPosCust 5 karakter berupa angka.
kotaCust Variasi karakter dengan maksimal jumlah 15 karakter.
noTelpCust Variasi angka dengan maksimal jumlah 12 digit.
noFaxCust Variasi angka dengan maksimal jumlah 12 angka.
emailCust Variasi karakter dengan maksimal jumlah 30 karakter, harus mengandung karakter ‘@’ dan ‘.’, dan karakter ‘@’ dan ‘.’ tidak boleh bersebelahan.
noRekCust Variasi angka dengan maksimal jumlah 15 digit.
namaBank Variasi karakter dengan maksimal jumlah 30 karakter.
Gudang kdGudang 3 karakter dengan format xxx, dimana tiga karakter ini merupakan nomor urut gudang berupa angka.
namaGudang Variasi karakter dengan maksimal jumlah 30 karakter.
alamatGudang Variasi karakter dengan maksimal jumlah 50 karakter.
kdPosGudang 5 karakter berupa angka.
kotaGudang Variasi karakter dengan maksimal jumlah 15 karakter.
Kendaraan kdKend 4 karakter dengan format xxxx, dimana empat karakter ini merupakan nomor urut kendaraan berupa angka
noPolisi Variasi karakter dengan maksimal jumlah 10 karakter.
JenisKendaraan kdJenisKend Variasi karakter dengan maksimal jumlah 2 karakter.
jenisKend Variasi karakter dengan maksimal jumlah 20 karakter.
Barang kdBarang 8 karakter dengan format xxxxxxxx.
namaBarang Variasi karakter dengan maksimal jumlah 50 karakter.
qtyBarang Angka non-desimal
harga Angka non-desimal
JenisBarang kdJenisBarang Variasi karakter dengan maksimal jumlah 2 karakter.
deskripsi Variasi karakter dengan maksimal jumlah 80 karakter.
Orders kdDO 10 karakter dengan format DOxxxxaaaa, dimana dua karakter awal harus berupa
karakter ‘DO’, empat karakter selanjutnya adalah nomor DO yang diinput, dan empat karakter terakhir merupakan nomor urut DO.
tanggalKirimDO Tanggal dengan format dd-mm-yyyy. totalHarga Angka non-desimal
qtyDO Angka non-desimal
tanggalInput Tanggal dan waktu dengan format dd-mm-yyyy hh:mi:ss
tanggalPrint Tanggal dan waktu dengan format dd-mm-yyyy hh:mi:ss
kdStaffPrint 5 karakter dengan format aaxxx, dimana dua karakter awal berupa huruf dan tiga karakter selanjutnya merupakan nomor urut staff berupa angka.
kdStaffInput 5 karakter dengan format aaxxx, dimana dua karakter awal berupa huruf dan tiga karakter selanjutnya merupakan nomor urut staff berupa angka.
BarangMasuk kdBarangMasuk 12 karakter dengan format yyyymmddxxxx, dimana empat karakter awal berupa tahun, dua karakter berikutnya berupa bulan, dua karakter berikutnya
berupa tanggal, dan empat karakter terakhir merupakan nomor urut barang masuk pada tanggal tersebut.
tanggalMasuk Tanggal dan waktu dengan format dd-mm-yyyy hh:mi:ss.
qtyBarang Angka non-desimal
BarangKeluar kdBarangKeluar 12 karakter dengan format yyyymmddxxxx, dimana empat karakter awal berupa tahun, dua karakter berikutnya berupa bulan, dua karakter berikutnya berupa tanggal, dan empat karakter terakhir merupakan nomor urut barang keluar pada tanggal tersebut.
tanggalKeluar Tanggal dan waktu dengan format dd-mm-yyyy hh:mi:ss.
qtyBarang Angka non-desimal
SuratJalan kdSuratJalan 12 karakter dengan format yyyymmddxxxx, dimana empat karakter awal berupa tahun, dua karakter berikutnya berupa bulan, dua karakter berikutnya berupa tanggal, dan empat karakter terakhir merupakan nomor urut surat jalan pada tanggal tersebut.
tglSuratJalan Tanggal dengan format dd-mm-yyyy.
Retur kdRetur 12 karakter dengan format
yyyymmddxxxx, dimana empat karakter awal berupa tahun, dua karakter berikutnya berupa bulan, dua karakter berikutnya berupa tanggal, dan empat karakter terakhir merupakan nomor urut retur pada tanggal tersebut.
tanggalRetur Tanggal dengan format dd-mm-yyyy.
qtyRetur Angka non-desimal
keteranganRetur Variasi karakter dengan maksimal jumlah 80 karakter.
Faktur kdFaktur 12 karakter dengan format
yyyymmddxxxx, dimana empat karakter awal berupa tahun, dua karakter berikutnya berupa bulan, dua karakter berikutnya berupa tanggal, dan empat karakter terakhir merupakan nomor urut faktur pada tanggal tersebut.
tanggalFaktur Tanggal dengan format dd-mm-yyyy. jatuhTempo Tanggal dengan format dd-mm-yyyy.
KasBank kdKasBank 12 karakter dengan format
awal berupa tahun, dua karakter berikutnya berupa bulan, dua karakter berikutnya berupa tanggal, dan empat karakter terakhir merupakan nomor urut kas bank pada tanggal tersebut.
tanggalPembayaran Tanggal dengan format dd-mm-yyyy.
totalPembayaran Angka non-desimal
3.9.5 Menentukan Atribut Candidate, Primary, dan Alternate Key
Tabel 3.5 Identifikasi Candidate dan Primary Key untuk Tiap Entitas
Nama Entitas Candidate Key Primary Key
Cabang kdCabang alamatCabang noTelpCabang noFaxCabang emailCabang noRekCabang kdCabang Divisi kdDivisi namaDivisi kdDivisi Staff kdStaff alamatStaff kdStaff
noTelpStaff emailStaff
Users username username
Customer kdCust alamatCust noTelpCust noFaxCust emailCust noRekCust kdCust Gudang kdGudang alamatGudang kdGudang Kendaraan kdKend noPolisi kdKend
JenisKendaraan kdJenisKend kdJenisKendaraan
Barang kdBarang kdBarang
Jenisbarang kdJenisBarang kdJenisBarang
Orders kdDO tanggalInput tanggalPrint kdDO BarangMasuk kdBarangMasuk tanggalMasuk kdBarangMasuk
BarangKeluar kdBarangKeluar tanggalKeluar
kdBarangKeluar
SuratJalan kdSuratJalan kdSuratJalan
Retur kdRetur kdRetur
Faktur kdFaktur kdFaktur
3.9.6 Memeriksa Model untuk Redundansi a. Memeriksa Hubungan One to One
Gambar 3.18 Hubungan Staff dengan Users
Entitas Staff dan Users tidak redundan dan keduanya tidak dapat digabungkan menjadi satu entitas, karena tidak semua staff memiliki users.
Gambar 3.19 Hubungan Orders dengan KasBank
Entitas Orders dan KasBank tidak redundan dan keduanya tidak dapat digabungkan menjadi satu entitas, karena merupakan objek yang berbeda.
Entitas BarangKeluar dan Orders tidak redundan dan keduanya tidak bisa digabungkan menjadi satu entitas, karena merupakan objek yang berbeda.
Gambar 3.21 Hubungan Faktur dengan Orders
Entitas Faktur dan Orders tidak redundan dan keduanya tidak dapat digabungkan menjadi satu entitas karena merupakan objek yang berbeda.
Gambar 3.22 Hubungan Retur dengan Orders
Entitas Retur dan Orders tidak redundan dan keduanya tidak dapat digabungkan menjadi satu entitas karena merupakan objek yang berbeda.
Gambar 3.23 Hubungan BarangKeluar dengan SuratJalan
Entitas BarangKeluar dan SuratJalan tidak redundan dan keduanya tidak dapat digabungkan menjadi satu entitas karena merupakan objek yang berbeda.
b. Menghilangkan hubungan redundansi
Hubungan antar entitas tidak menunjukkan adanya redudansi.
3.9.7 Memvalidasi Model Konseptual dengan Transaksi Pengguna Tinjauan Sales Admin (SA)
a. Melihat rincian data pesanan yang dilakukan oleh pelanggan tertentu.
b. Melihat rincian data retur yang dilakukan oleh pelanggan tertentu. c. Melihat rincian data retur yang mengacu pada delivery order
tertentu.
d. Melihat daftar customer.
e. Melihat daftar sales yang melayani customer tertentu. f. Melihat daftar gudang yang memiliki barang tertentu. g. Melihat staff yang bertanggung jawab menangani retur. h. Melihat nama barang yang diretur pada tanggal tertentu. i. Melihat Delivery Order berdasarkan gudang tertentu.
Tinjauan Kepala Gudang
j. Melihat informasi pesanan dengan detail barang yang dipesan. k. Melihat staff yang menginput informasi pesanan tertentu. l. Melihat daftar staff yang bekerja di cabang tertentu. m. Melihat barang apa saja yang keluar di gudang tertentu. n. Melihat nama barang yang keluar pada tanggal tertentu.
o. Melihat staff yang bertanggung jawab dengan barang keluar tertentu.
p. Melihat barang keluar yang sesuai dengan surat jalan tertentu. q. Melihat barang apa saja yang masuk pada tanggal tertentu. r. Melihat barang masuk di gudang tertentu.
s. Melihat staff yang bertanggung jawab dengan barang masuk tertentu.
Tinjauan Admin Gudang
t. Melihat kendaraan yang dicantumkan pada Surat Jalan tertentu. u. Melihat alamat customer pada Delivery Order tertentu.
v. Melihat staff yang bertanggung jawab membuat Surat Jalan. w. Melihat cabang beserta gudang-gudangnya.
x. Melihat surat jalan yang mengacu kepada Delivery Order tertentu. y. Melihat kendaraan yang terdapat pada gudang tertentu.
Tinjauan Inventory Control
z. Melihat stok barang yang dipesan pada Delivery Order oleh customer tertentu.
Tinjauan Account Recieveable
aa. Melihat faktur untuk customer tertentu.
bb. Melihat faktur yang mengacu pada Delivery Order tertentu. cc. Melihat staff yang bertanggung jawab membuat faktur tertentu.
dd. Melihat jatuh tempo pembayaran seorang customer. ee. Melihat daftar harga barang.
ff. Melihat status faktur dari customer tertentu.
Tinjauan Finance
gg. Melihat status faktur dari order tertentu. hh. Melihat kas bank dari order tertentu.
ii. Melihat staff yang bertanggung jawab dalam pembuatan kas bank tertentu.
Tinjauan Admin
jj. Melihat daftar cabang. kk. Melihat daftar divisi.
ll. Melihat daftar staff yang bekerja pada suatu cabang. mm. Melihat daftar staff yang bekerja pada suatu divisi. nn. Melihat daftar username dari staff tertentu.
oo. Melihat daftar barang. pp. Melihat daftar gudang. qq. Melihat daftar customer. rr. Melihat daftar pesanan. ss. Melihat daftar surat jalan. tt. Melihat daftar faktur. uu. Melihat daftar kas bank.
ww. Melihat nama kendaraan beserta jenis kendaraannya. xx. Melihat daftar retur.
Gambar 3.24 Entity Relationship Diagram Model Konseptual dengan Transaksi Pengguna
3.10 Perancangan Basis Data Logikal
3.10.1 Menurunkan Relasi untuk Model Data Logikal a. Tipe Entitas Kuat
Cabang(kdCabang, namaCabang, alamatCabang, kdPosCabang, kotaCabang, noTelpCabang, noFaxCabang, emailCabang, noRekCabang, namaBank) Primary Key kdCabang
Divisi (kdDivisi, namaDivisi) Primary Key kdDivisi
Staff(kdStaff, namaStaff, alamatStaff, kdPosStaff, kotaStaff, noTelpStaff, tanggalLahir, emailStaff, jenisKelamin, jabatan, tanggalMulaiKerja)
Primary Key kdStaff
Users(username, password, privilege, lastLogin) Primary Key username
Customer (kdCust, namaCust, alamatCust, kdPosCust, kotaCust, noTelpCust, noFaxCust, emailCust, noRekCust, namaBank)
Primary Key kdCust
Gudang (kdGudang, namaGudang, alamatGudang, kdPosGudang, kotaGudang)
Primary Key kdGudang Kendaraan (kdKend, noPolisi) Primary Key kdKend
JenisKendaraan (kdJenisKend, jenisKend) Primary Key kdJenisKend
Barang (kdBarang, namaBarang, qtyBarang, harga) Primary Key kdBarang
JenisBarang (kdJenisBarang, deskripsi) Primary Key kdJenisBarang
Orders (kdDO, tanggalKirimDO, totalHarga, qtyDO, tanggalInput, tanggalPrint, kdStaffPrint, kdStaffInput)
Primary Key kdDO
BarangMasuk (kdBarangMasuk, tanggalMasuk, qtyBarang) Primary Key kdBarangMasuk
BarangKeluar (kdBarangKeluar, tanggalKeluar, qtyBarang) Primary Key kdBarangKeluar
SuratJalan (kdSuratJalan, tglSuratJalan) Primary Key (kdSuratJalan)
Retur (kdRetur, tanggalRetur, qtyRetur, keteranganRetur) Primary Key kdRetur
Faktur (kdFaktur, tanggalFaktur, jatuhTempo) Primary Key kdFaktur
KasBank (kdKasBank, tanggalPembayaran, totalPembayaran) Primary Key kdKasBank
b. Tipe Entitas Lemah
c. Tipe Binary Relationship 1:*
Relationship antara entitas Cabang dengan Gudang
Cabang (kdCabang, namaCabang, alamatCabang, kdPosCabang, kotaCabang, noTelpCabang, noFaxCabang, emailCabang, noRekCabang, namaBank) Primary Key kdCabang
Gudang(kdGudang, namaGudang, alamatGudang, kdPosGudang, kotaGudang, kdCabang) Primary Key kdGudang
Foreign Key kdCabang references Cabang(kdCabang)
Relationship antara entitas Cabang dengan Staff
Cabang (kdCabang, namaCabang, alamatCabang, kdPosCabang, kotaCabang, emailCabang) Primary Key kdCabang
Staff(kdStaff, namaStaff,
alamatStaff, kdPosStaff, kotaStaff, noTelpStaff, tanggalLahir,
emailStaff, jenisKelamin, jabatan, tanggalMulaiKerja, kdCabang) Primary Key kdStaff
Foreign Key kdCabang references Cabang(kdCabang)
memiliki
Relationship antara entitas Divisi dengan Staff
Divisi(kdDivisi, namaDivisi) Primary Key kdDivisi
Staff(kdStaff, namaStaff,
alamatStaff, kdPosStaff, kotaStaff, noTelpStaff, tanggalLahir,
emailStaff, jenisKelamin, jabatan, tanggalMulaiKerja, KdCabang, kdDivisi)
Primary Key kdStaff
Foreign Key kdCabang references Cabang(kdCabang)
Foreign Key kdDivisi references Divisi(kdDivisi)
Relationship antara entitas Staff dengan BarangMasuk
Staff(kdStaff, namaStaff,
alamatStaff, kdPosStaff, kotaStaff, noTelpStaff, tanggalLahir,
emailStaff, jenisKelamin, jabatan, tanggalMulaiKerja, KdCabang, kdDivisi)
Primary Key kdStaff
Foreign Key kdCabang references Cabang(kdCabang)
Foreign Key kdDivisi references Divisi(kdDivisi)
BarangMasuk(kdBarangMasuk, tanggalMasuk, kdStaff)
Primary Key kdBarangMasuk Foreign Key kdStaff references Staff(kdStaff)
Relationship antara entitas Staff dengan BarangKeluar
Staff(kdStaff, namaStaff,
alamatStaff, kdPosStaff, kotaStaff, noTelpStaff, tanggalLahir,
emailStaff, jenisKelamin, jabatan, tanggalMulaiKerja, KdCabang, kdDivisi)
Primary Key kdStaff
Foreign Key kdCabang references Cabang(kdCabang) Foreign Key kdDivisi references Divisi(kdDivisi)
BarangKeluar(kdBarangKeluar, tanggalKeluar, qtyBarang , kdStaff) Primary Key kdBarangKeluar Foreign Key kdStaff references Staff(kdStaff)
Relationship antara entitas Staff dengan Customer
Staff(kdStaff, namaStaff,
alamatStaff, kdPosStaff, kotaStaff, noTelpStaff, tanggalLahir,
emailStaff, jenisKelamin, jabatan, tanggalMulaiKerja, KdCabang, kdDivisi)
Primary Key kdStaff
Foreign Key kdCabang references Cabang(kdCabang)
Foreign Key kdDivisi references Divisi(kdDivisi)
Customer(kdCust, namaCust, alamatCust, kdPosCust, kotaCust, noTelpCust, noFaxCust, emailCust, noRekCust, namaBank, kdStaff) Primary Key kdCust
Foreign Key kdStaff references Staff(kdStaff)
Relationship antara entitas Staff dengan KasBank
Staff(kdStaff, namaStaff,
alamatStaff, kdPosStaff, kotaStaff, noTelpStaff, tanggalLahir,
emailStaff, jenisKelamin, jabatan, tanggalMulaiKerja, KdCabang, kdDivisi)
Primary Key kdStaff
Foreign Key kdCabang references Cabang(kdCabang)
Foreign Key kdDivisi references Divisi(kdDivisi)
KasBank(kdKasBank, tanggalPembayaran, totalPembayaran, kdStaff) Primary Key kdKasBank
Foreign Key kdStaff references Staff(kdStaff)
Relationship antara entitas Staff dengan Retur
Staff(kdStaff, namaStaff,
alamatStaff, kdPosStaff, kotaStaff, noTelpStaff, tanggalLahir,
emailStaff, jenisKelamin, jabatan, tanggalMulaiKerja, KdCabang, kdDivisi)
Primary Key kdStaff
Foreign Key kdCabang references Cabang(kdCabang)
Foreign Key kdDivisi references Divisi(kdDivisi)
Retur (kdRetur, tanggalRetur, qtyRetur, keteranganRetur, kdStaff) Primary Key kdRetur
Foreign Key kdStaff references Staff(kdStaff)
Relationship antara entitas Staff dengan Faktur
Staff(kdStaff, namaStaff,
alamatStaff, kdPosStaff, kotaStaff, noTelpStaff, tanggalLahir,
emailStaff, jenisKelamin, jabatan, tanggalMulaiKerja, KdCabang, kdDivisi)
Primary Key kdStaff
Foreign Key kdCabang references Cabang(kdCabang)
Foreign Key kdDivisi references Divisi(kdDivisi)
Faktur(kdFaktur, tanggalFaktur, jatuhTempo, kdStaff)
Primary Key kdFaktur
Foreign Key kdStaff references Staff(kdStaff)
Relationship antara entitas Staff dengan SuratJalan
Staff(kdStaff, namaStaff,
alamatStaff, kdPosStaff, kotaStaff, noTelpStaff, tanggalLahir,
emailStaff, jenisKelamin, jabatan, tanggalMulaiKerja, KdCabang, kdDivisi)
Primary Key kdStaff
Foreign Key kdCabang references Cabang(kdCabang)
Foreign Key kdDivisi references Divisi(kdDivisi)
SuratJalan(kdSuratJalan, tglSuratJalan, kdStaff) Primary Key kdSuratJalan Foreign Key kdStaff references Staff(kdStaff)
Relationship antara entitas Customer dengan Orders
Customer(kdCust, namaCust, alamatCust, kdPosCust, kotaCust, noTelpCust, noFaxCust, emailCust, noRekCust, namaBank, kdStaff) Primary Key kdCust
Foreign Key kdStaff references Staff(kdStaff)
Orders (kdDO, tanggalKirimDO, totalHarga, qtyDO, tanggalInput,
tanggalPrint, kdStaffPrint, kdStaffInput, kdCust)
Primary Key kdDO
Foreign Key kdCust references Customer(kdCust)
Relationship antara entitas Gudang dengan BarangMasuk
Gudang(kdGudang, namaGudang, alamatGudang, kdPosGudang, kotaGudang, kdCabang) Primary Key kdGudang Foreign Key kdCabang references Cabang(kdCabang)
BarangMasuk(kdBarangMasuk, tanggalMasuk, kdStaff, kdGudang) Primary Key kdBarangMasuk Foreign Key kdStaff references Staff(kdStaff)
Foreign Key kdGudang references Gudang(kdGudang)
melakukan
Relationship antara entitas Gudang dengan BarangKeluar
Gudang(kdGudang, namaGudang, alamatGudang, kdPosGudang, kotaGudang, kdCabang) Primary Key kdGudang Foreign Key kdCabang references Cabang(kdCabang)
BarangKeluar(kdBarangKeluar, tanggalKeluar, qtyBarang , kdStaff, kdGudang)
Primary Key kdBarangKeluar Foreign Key kdStaff references Staff(kdStaff)
Foreign Key kdGudang references Gudang(kdGudang)
Relationship antara entitas Gudang dengan Kendaraan
Gudang(kdGudang, namaGudang, alamatGudang, kdPosGudang, kotaGudang, kdCabang) Primary Key kdGudang Foreign Key kdCabang references Cabang(kdCabang)
Kendaraan (kdKend, noPolisi, kdGudang)
Primary Key kdKend
Foreign Key kdGudang references Gudang(kdGudang)
menjelaskan
Relationship antara entitas Gudang dengan Orders
Gudang(kdGudang, namaGudang, alamatGudang, kdPosGudang, kotaGudang, kdCabang) Primary Key kdGudang Foreign Key kdCabang references Cabang(kdCabang)
Orders (kdDO, tanggalKirimDO, totalHarga, qtyDO, tanggalInput,
tanggalPrint, kdStaffPrint, kdStaffInput, kdCust, kdGudang)
Primary Key kdDO
Foreign Key kdCust references Customer(kdCust)
Foreign Key kdGudang references Gudang(kdGudang)
Relationship antara entitas Kendaraan dengan SuratJalan
Kendaraan (kdKend, noPolisi, kdGudang)
Primary Key kdKend Foreign Key kdGudang
references Gudang(kdGudang)
SuratJalan(kdSuratJalan, tglSuratJalan, kdStaff, kdKend) Primary Key kdSuratJalan Foreign Key kdStaff references Staff(kdStaff)
Foreign Key kdKend references Kendaraan(kdKend)
Relationship antara entitas JenisKendaraan dengan Kendaraan
JenisKendaraan (kdJenisKend, jenisKend)
Primary Key kdJenisKend
Kendaraan (kdKend, noPolisi, kdGudang, kdJenisKend)
Primary Key kdKend
Foreign Key kdGudang references Gudang(kdGudang)
Foreign Key kdJenisKend references JenisKendaraan(kdJenisKend)
melengkapi
Relationship antara entitas JenisBarang dengan Barang
JenisBarang(kdJenisBarang, deskripsi)
Primary Key kdjenisbarang
Barang(kdBarang, namaBarang, harga, kdJenisBarang, qtyBarang) Primary Key kdBarang
Foreign Key kdJenisBarang references
JenisBarang(kdJenisBarang) menjelaskan
d. Tipe Binary Relationship 1:1
Relationship antara entitas Staff dengan Users
Staff(kdStaff, namaStaff, alamatStaff, kdPosStaff, kotaStaff, noTelpStaff, tanggalLahir, emailStaff, jenisKelamin, jabatan, tanggalMulaiKerja, KdCabang, kdDivisi)
Primary Key kdStaff
Foreign Key kdCabang references Cabang(kdCabang)
Foreign Key kdDivisi references Divisi(kdDivisi)
Users(username, password, privilege, lastLogin, kdStaff)
Primary Key username
Foreign Key kdStaff references Staff(kdStaff)
Relationship antara entitas Orders dengan KasBank
Orders (kdDO, tanggalKirimDO, totalHarga, qtyDO, tanggalInput, tanggalPrint, kdStaffPrint,
kdStaffInput, kdCust, kdGudang) Primary Key kdDO
Foreign Key kdCust references Customer(kdCust)
Foreign Key kdGudang references Gudang(kdGudang)
KasBank(kdKasBank,
tanggalPembayaran, totalPembayaran, kdStaff, kdDO)
Primary Key kdKasBank
Foreign Key kdStaff references Staff(kdStaff)
Foreign Key kdDO references Orders(kdDO)
Relationship antara entitas Orders dengan KasBank
Orders (kdDO, tanggalKirimDO, totalHarga, qtyDO, tanggalInput,
tanggalPrint, kdStaffPrint, kdStaffInput, kdCust, kdGudang)
Primary Key kdDO Foreign Key kdCust
references Customer(kdCust) Foreign Key kdGudang
references Gudang(kdGudang)
Retur (kdRetur, tanggalRetur, qtyRetur, keteranganRetur, kdStaff)
Primary Key kdRetur
Foreign Key kdStaff references Staff(kdStaff)
Foreign Key kdDO references Orders(kdDO)
Relationship antara entitas Orders dengan Faktur
Orders (kdDO, tanggalKirimDO, totalHarga, qtyDO, tanggalInput, tanggalPrint, kdStaffPrint,
kdStaffInput, kdCust, kdGudang) Primary Key kdDO
Foreign Key kdCust references Customer(kdCust)
Foreign Key kdGudang references Gudang(kdGudang)
Faktur(kdFaktur, tanggalFaktur, jatuhTempo, kdStaff, kdDO) Primary Key kdFaktur
Foreign Key kdStaff references Staff(kdStaff)Foreign Key kdDO references Orders(kdDO)
Relationship antara entitas Orders dengan BarangKeluar
Orders (kdDO, tanggalKirimDO, totalHarga, qtyDO, tanggalInput, tanggalPrint, kdStaffPrint,
kdStaffInput, kdCust, kdGudang) Primary Key kdDO
Foreign Key kdCust references Customer(kdCust)
Foreign Key kdGudang references Gudang(kdGudang)
BarangKeluar(kdBarangKeluar, tanggalKeluar, qtyBarang , kdStaff, kdGudang, kdDO)
Primary Key kdBarangKeluar Foreign Key kdStaff references Staff(kdStaff)
Foreign Key kdGudang references Gudang(kdGudang) Foreign Key kdDO references Orders(kdDO) memiliki
Relationship antara entitas BarangKeluar dengan SuratJalan
BarangKeluar(kdBarangKeluar, tanggalKeluar, qtyBarang , kdStaff, kdGudang, kdDO)
Primary Key kdBarangKeluar Foreign Key kdStaff references Staff(kdStaff)
Foreign Key kdGudang references Gudang(kdGudang) Foreign Key kdDO references Orders(kdDO)
SuratJalan(kdSuratJalan, tglSuratJalan, kdStaff, kdKend, kdBarangKeluar)
Primary Key kdSuratJalan Foreign Key kdStaff references Staff(kdStaff)
Foreign Key kdKend references Kendaraan(kdKend) Foreign Key kdBarangKeluar references BarangKeluar(kdBarangKeluar) mempengaruhi
e. Tipe Relationship Superclass/Subclass
Tidak ada tipe relationship superclass/subclass pada rancangan model data.
f. Tipe Binary Relationship *:*
Relationship antara entitas Barang, Gudang, dan LokasiBarang Barang(kdBarang, namaBarang,
harga, kdJenisBarang) Primary Key kdBarang Foreign Key kdJenisBarang references
JenisBarang(kdJenisBarang)
Gudang(kdGudang, namaGudang, alamatGudang, kdPosGudang, kotaGudang, kdCabang) Primary Key kdGudang
Foreign Key kdCabang references Cabang(kdCabang)
LokasiBarang(kdBarang, kdGudang, qtyBarang) Primary Key kdBarang, kdGudang
Foreign Key kdBarang references Barang(kdBarang) Foreign Key kdGudang references Gudang(kdGudang)
Relationship antara entitas Orders, Staff, dan OrderStaff Orders(kdDO, tanggalKirimDO,
totalHarga, tanggalInput,
tanggalPrint, kdCust, kdGudang, qtyDO, kdStaffPrint, kdStaffInput) Primary Key kdDO
Staff(kdStaff, namaStaff,
alamatStaff, kdPosStaff, kotaStaff, tanggalLahir, emailStaff,
jenisKelamin, jabatan,
tanggalMulaiKerja, telpStaff) Primary Key kdStaff
OrderStaff(kdDO, kdStaff) Primary Key kdDO, kdStaff
Foreign Key kdDO references Ordesr(kdDO) Foreign Key kdStaff references Staff(kdStaff)
Relationship antara entitas Orders, Barang, dan OrderDetail Orders(kdDO, tanggalKirimDO,
totalHarga, tanggalInput, tanggalPrint, kdStaffPrint, kdStaffInput)
Primary Key kdDO
Barang(kdBarang, namaBarang, harga, kdJenisBarang)
Primary Key kdBarang Foreign Key kdJenisBarang references
JenisBarang(kdJenisBarang)
OrderDetail(kdDO, kdBarang, qtyDO) Primary Key kdDO, kdBarang
Foreign Key kdDO references Orders(kdDO) Foreign Key kdBarang references Barang(kdBarang)
Relationship antara entitas BarangMasuk, Barang, dan BarangMasukDetail
Barangmasuk(kdBarangMasuk, tanggalMasuk)
Primary Key kdBarangMasuk
Barang(kdBarang, namaBarang, harga, kdJenisBarang)
Primary Key kdBarang Foreign Key kdJenisBarang references
JenisBarang(kdJenisBarang)
BarangMasukDetail(kdBarangMasuk, kdBarang, qtyBarang) Primary Key kdBarangMasuk, kdBarang
Foreign Key kdBarangMasuk references BarangMasuk(kdBarangMasuk) Foreign Key kdBarang references Barang(kdBarang)
Relationship antara entitas BarangKeluar, Barang, dan BarangKeluarDetail
BarangKeluar(kdBarangKeluar, tanggalKeluar)
Primary Key kdBarangKeluar
Barang(kdBarang, namaBarang, harga, kdJenisBarang)
Primary Key kdBarang Foreign Key kdJenisBarang references
JenisBarang(kdJenisBarang)
BarangKeluarDetail (kdBarangKeluar, kdBarang, qtyBarang) Primary Key kdBarangKeluar, kdBarang
Foreign Key kdBarangKeluar references BarangKeluar(kdBarangKeluar) Foreign Key kdBarang references Barang(kdBarang)
Relationship antara entitas Retur, Barang, dan ReturDetail Retur(kdRetur, tanggalRetur,
keteranganRetur) Primary Key kdRetur
Barang(kdBarang, namaBarang, harga, kdJenisBarang)
Primary Key kdBarang Foreign Key kdJenisBarang references
JenisBarang(kdJenisBarang)
ReturDetail(kdRetur, kdBarang, qtyRetur) Primary Key kdRetur, kdBarang
Foreign Key kdRetur references Retur(kdRetur) Foreign Key kdBarang references Barang(kdBarang)
g. Tipe Relationship kompleks
Tidak ada tipe relationship kompleks pada rancangan model data.
h. Atribut Multi-valued
Gambar 3.25 Atribut Multi-valued pada entitas Staff
Entitas Staff merepresentasikan situasi dimana sebuah staff memiliki hingga tiga nomor telepon, sehingga atribut noTelpStaff pada entitas Staff merupakan atribut multi-valued seperti gambar diatas.
Entitas Customer merepresentasikan situasi dimana sebuah customer memiliki hingga tiga nomor telepon, tiga nomor fax, dan tiga nomor rekening, sehingga atribut noTelpCust, noFaxCust, noRekCust pada entitas Customer merupakan atribut multi-valued seperti gambar diatas.
Gambar 3.27 Atribut Multi-valued pada entitas Cabang
Entitas Cabang merepresentasikan situasi dimana sebuah cabang memiliki hingga tiga nomor telepon, tiga nomor fax, dan tiga nomor rekening, sehingga atribut noTelpCabang, noFaxCabang, noRekCabang pada entitas Cabang merupakan atribut multi-valued seperti gambar diatas.
3.10.2 Memvalidasi Relasi Menggunakan Normalisasi
LokasiBarang
UNF
LokasiBarang(kdJenisBarang, deskripsi, kdBarang, namaBarang, qtyBarang, harga, kdGudang, namaGudang, alamatGudang,
kdPosGudang, kotaGudang, kdCabang, namaCabang, alamatCabang, kdPosCabang, kotaCabang, emailCabang)
1NF
Gudang(kdGudang, namaGudang, alamatGudang, kdPosGudang, kotaGudang, kdCabang, namaCabang, alamatCabang, kdPosCabang, kotaCabang, emailCabang)
TelpCabang(noTelpCabang, kdCabang) FaxCabang(noFaxCabang, kdCabang)
RekCabang(noRekCabang, namaBank, kdCabang)
LokasiBarang(kdJenisBarang, kdGudang, deskripsi, kdBarang, namaBarang, qtyBarang, harga)
2NF
Gudang(kdGudang, namaGudang, alamatGudang, kdPosGudang, kotaGudang, kdCabang, namaCabang, alamatCabang, kdPosCabang, kotaCabang, emailCabang)
TelpCabang(noTelpCabang, kdCabang) FaxCabang(noFaxCabang, kdCabang)
RekCabang(noRekCabang, namaBank, kdCabang) LokasiBarang(kdGudang, kdBarang, qtyBarang)
Barang (kdBarang, namaBarang, harga, kdJenisBarang, deskripsi,)
3NF
Gudang(kdGudang, namaGudang, alamatGudang, kdPosGudang, kotaGudang, kdCabang)
Cabang(kdCabang, namaCabang, alamatCabang, kdPosCabang, kotaCabang, emailCabang)
TelpCabang(noTelpCabang, kdCabang) FaxCabang(noFaxCabang, kdCabang)
RekCabang(noRekCabang, namaBank, kdCabang) LokasiBarang(kdGudang, kdBarang, qtyBarang) Barang(kdBarang, namaBarang, harga, kdJenisBarang) JenisBarang(kdJenisBarang, deskripsi)
Delivery Order (DO)
UNF
Orders (kdDO, tanggalKirimDO, qtyDO, kdBarang, namaBarang, totalHarga, kdStaffInput, kdStaffPrint, kdPengirim, kdSales, kdCustomer, namaCust, kdCabang, namaDivisi)
1NF
Orders(kdDO, tanggalKirimDO, totalHarga, tanggalInput, tanggalPrint, kdCust, namaCust, alamatCust, kdPosCust, kotaCust, emailCust, kdStaff, kdGudang)
OrderDetail(kdDO, kdBarang, qtyDO)
OrderStaff(kdDO, kdStaff, namaStaff, alamatStaff, kdPosStaff, Kota, tanggalLahir, emailStaff, jenisKelamin, jabatan, tanggalMulaiKerja, kdDivisi, namaDivisi)
TelpStaff(noTelpStaff, kdStaff) TelpCust(noTelpCust, kdCust) faxCust(noFaxCust, kdCust)
rekCust(noRekCust, namaBank, kdCust)
2NF
Orders(kdDO, tanggalKirimDO, totalHarga, tanggalInput, tanggalPrint, kdCust, namaCust, alamatCust, kdPosCust, kotaCust, emailCust, kdStaff, kdGudang)
OrderDetail(kdDO, kdBarang, qtyDO)
OrderStaff(kdDO, kdStaff, namaStaff, alamatStaff, kdPosStaff, kota, tanggalLahir, emailStaff, jenisKelamin, jabatan, tanggalMulaiKerja, kdDivisi, namaDivisi)
TelpStaff(noTelpStaff, kdStaff) TelpCust(noTelpCust, kdCust) FaxCust(noFaxCust, kdCust)
RekCust(noRekCust, namaBank, kdCust)
3NF
Orders(kdDO, tanggalKirimDO, totalHarga, tanggalInput, tanggalPrint, kdCust)
OrderDetail(kdDO, kdBarang, qtyDO)
Staff (kdStaff, namaStaff, alamatStaff, kdPosStaff, kota, tanggalLahir, emailStaff, jenisKelamin, jabatan, tanggalMulaiKerja, kdDivisi) Divisi(kdDivisi, namaDivisi)
OrderStaff(kdDO, kdStaff) TelpStaff(noTelpStaff, kdStaff)
Customer(kdCust, namaCust, alamatCust, kdPosCust, kotaCust, emailCust, kdStaff)
TelpCust(noTelpCust, kdCust) FaxCust(noFaxCust, kdCust)
Users
UNF
Users(username, password, privilege, lastLogin, kdStaff)
1NF
Users(username, password, privilege, lastLogin, kdStaff)
2NF
Users(username, password, privilege, lastLogin, kdStaff)
3NF
Users(username, password, privilege, lastLogin, kdStaff)
BarangMasuk
UNF
BarangMasuk(kdBarangMasuk, tanggalMasuk, kdBarang, namaBarang, qtyBarang, kdKepalaGudang, kdGudang)
1NF
BarangMasuk(kdBarangMasuk, tanggalMasuk, kdStaff, kdGudang) BarangMasukDetail(kdBarangMasuk, kdBarang, qtyBarang)
2NF
BarangMasuk(kdBarangMasuk, tanggalMasuk, kdStaff, kdGudang) BarangMasukDetail(kdBarangMasuk, kdBarang, qtyBarang)
3NF
BarangMasuk(kdBarangMasuk, tanggalMasuk, kdStaff, kdGudang) BarangMasukDetail(kdBarangMasuk, kdBarang, qtyBarang)
BarangKeluar
UNF
BarangKeluar(kdBarangKeluar, tanggalKeluar, kdBarang, namaBarang, qtyBarang, kdKepalaGudang, kdGudang, kdDO)
1NF
BarangKeluar(kdBarangKeluar, tanggalKeluar, kdStaff, kdGudang, kdDO)
BarangKeluarDetail(kdBarangKeluar, kdBarang, qtyBarang)
2NF
BarangKeluar(kdBarangKeluar, tanggalKeluar, kdStaff, kdGudang, kdDO)
3NF
BarangKeluar(kdBarangKeluar, tanggalKeluar, kdStaff, kdGudang, kdDO)
BarangKeluarDetail(kdBarangKeluar, kdBarang, qtyBarang)
Surat Jalan
UNF
SuratJalan(kdSuratJalan, tglSuratJalan, kdCust, namaCust, alamatCust, kdPosCust, kotaCust, emailCust, telpCust, kdBarang, qtyDO,
namaBarang, kdAdminGudang, kdKend, noPolisi, kdJenisKend, jenisKend, kdGudang, kdBarangKeluar)
1NF
SuratJalan(kdSuratJalan, tglSuratJalan, kdStaff, kdKend, noPolisi, kdJenisKend, jenisKend, kdGudang, kdBarangKeluar)
2NF
SuratJalan(kdSuratJalan, tglSuratJalan, kdStaff, kdKend, noPolisi, kdJenisKend, jenisKend, kdGudang, kdBarangKeluar)
3NF
SuratJalan(kdSuratJalan, tglSuratJalan, kdStaff, kdKend, kdBarangKeluar)
Kendaraan(kdKend, noPolisi, kdJenisKend, kdGudang) JenisKendaraan(kdJenisKend, jenisKend)
Faktur
UNF
Faktur(kdFaktur, tanggalFaktur, jatuhTempo, kdDO, kdBarang, namaBarang, qtyDO, harga, jumlahHarga, totalHarga,
kdManagerPenjualan, kdStaffBuat, kdStaffCetak, kdStaffCek, kdManagerAR, kdCust, namaCust, alamatCust)
1NF
Faktur(kdFaktur, tanggalFaktur, jatuhTempo, kdDO, kdStaff)
2NF
Faktur(kdFaktur, tanggalFaktur, jatuhTempo, kdDO, kdStaff)
3NF
Retur
UNF
Retur(kdRetur, tanggalRetur, keteranganRetur, kdDO, kdBarang, qtyRetur, kdCust, kdPenerimaRetur, kdStaffyangmenyetujui)
1NF
Retur(kdRetur, tanggalRetur, keteranganRetur, kdBarang, qtyRetur, kdDO, kdStaff)
2NF
Retur(kdRetur, tanggalRetur, keteranganRetur, kdDO, kdStaff) ReturDetail(kdRetur, kdBarang, qtyRetur)
3NF
Retur(kdRetur, tanggalRetur, keteranganRetur, kdDO, kdStaff) ReturDetail(kdRetur, kdBarang, qtyRetur)
KasBank
UNF
KasBank(kdKasBank, tanggalPembayaran, totalPembayaran, kdDO, kdStaff)
1NF
KasBank(kdKasBank, tanggalPembayaran, totaPembayaran, kdDO, kdStaff)
2NF
KasBank(kdKasBank, tanggalPembayaran, totalPembayaran, kdDO, kdStaff)
3NF
KasBank(kdKasBank, tanggalPembayaran, totalPembayaran, kdDO, totalHarga, kdStaff)
3.10.3 Memvalidasi Relasi Terhadap Transaksi Pengguna
Proses ini bertujuan untuk memastikan bahwa relasi pada model data logikal mendukung kebutuhan transaksi. Tahap ini memeriksa bahwa relasi yang dibuat pada tahap sebelumnya juga mendukung transaksi yang ada dan memastikan tidak ada error yang terjadi pada saat membuat relasi. Apabila semua transaksi dapat dipenuhi oleh model data logikal yang dibuat maka model data logikal tersebut valid.
Pada perancangan diatas, semua transaksi dapat dipenuhi oleh model data logikal yang dibuat.
3.10.4 Memeriksa Integrity Constraint
Cabang(kdCabang, namaCabang, alamatCabang, kdPosCabang, kotaCabang, emailCabang)
Primary Key kdCabang
TelpCabang(noTelpCabang, kdCabang) Primary Key noTelpCabang
Foreign Key kdCabang references Cabang(kdCabang) ON UPDATE CASCADE ON DELETE CASCADE
FaxCabang(noFaxCabang, kdCabang) Primary Key noFaxCabang
Foreign Key kdCabang references Cabang(kdCabang) ON UPDATE CASCADE ON DELETE CASCADE
RekCabang(noRekCabang, namaBank, kdCabang) Primary Key noRekCabang
Foreign Key kdCabang references Cabang(kdCabang) ON UPDATE CASCADE ON DELETE CASCADE
Divisi(kdDivisi, namaDivisi) Primary Key kdDivisi
Staff(kdStaff, namaStaff, alamatStaff, kdPosStaff, kotaStaff,
tanggalLahir, emailStaff, jenisKelamin, jabatan, tanggalMulaiKerja, kdDivisi, kdCabang)
Primary Key kdStaff
Foreign Key kdDivisi references Divisi(kdDivisi) ON UPDATE CASCADE ON DELETE NO ACTION
Foreign Key kdCabang references Cabang(kdCabang) ON UPDATE CASCADE ON DELETE NO ACTION
TelpStaff(noTelpStaff, kdStaff) Primary Key noTelpStaff
Foreign Key kdStaff references Staff(kdStaff) ON UPDATE CASCADE ON DELETE CASCADE
Users(username, password, privilege, lastLogin, kdStaff) Primary Key username
Foreign Key kdStaff references Staff(kdStaff) ON UPDATE CASCADE ON DELETE CASCADE
Customer(kdCust, namaCust, alamatCust, kdPosCust, kotaCust, emailCust, kdStaff)
Primary Key kdCust
Foreign Key kdStaff references Staff(kdStaff) ON UPDATE CASCADE ON DELETE SET NULL
TelpCust(noTelpCust, kdCust) Primary Key noTelpCust
Foreign Key kdCust references Customer(kdCust) ON UPDATE CASCADE ON DELETE CASCADE
FaxCust (FaxCust, kdCust) Primary Key noFaxCust
Foreign Key kdCust references Customer(kdCust) ON UPDATE CASCADE ON DELETE CASCADE
RekCust(noRekCust, namaBank, kdCust) Primary Key noRekCust
Foreign Key kdCust references Customer(kdCust) ON UPDATE CASCADE ON DELETE CASCADE
Gudang(kdGudang, namaGudang, alamatGudang, kdPosGudang, kotaGudang, kdCabang)