Post on 15-Mar-2019
66
BAB 3
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.
67
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.
68
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.
Gambar 3.1 Struktur Organisasi
69
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.
70
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.
71
3.3 Tata Laksana/Prosedur yang Sedang Berjalan
Gambar 3.2 Proses Pemesanan Sistem yang Sedang Berjalan
72
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.
73
Gambar 3.3 Proses Pengiriman Sistem yang Sedang Berjalan
74
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.
75
Gambar 3.4 Proses Pengiriman (lanjutan) Sistem yang Sedang
Berjalan
76
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.
77
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
78
dimasukkan ke dalam gudang. Kemudian, kepala Gudang menandatangani Surat
Jalan yang diberikan dan meng-input barang yang masuk tersebut ke dalam basis
data.
79
Gambar 3.6 Proses Penjualan Sistem yang Sedang Berjalan
80
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.
81
3.4 Data Flow Diagram
3.4.1 Diagram Context
Gambar 3.7 DFD level Context Sistem yang Sedang Berjalan
82
3.4.2 Diagram level 0
Gambar 3.8 Diagram level 0 Sistem yang Sedang Berjalan
83
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.
84
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.
85
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
86
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.
87
Gambar 3.10 Proses Pengiriman Sistem yang Diusulkan
88
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.
89
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,
90
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.
Gambar 3.12 Proses Barang Masuk Sistem yang Diusulkan
91
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.
92
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
93
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.
94
3.8 Data Flow Diagram untuk Prosedur yang Baru
3.8.1 Diagram Context
Gambar 3.14 Diagram Aliran Data Sistem yang Diusulkan
95
3.8.2 Diagram Level 0
Gambar 3.15 Diagram Level 0 Sistem yang Diusulkan
96
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-
97
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.
Kendaraan Semua kendaraan - Setiap kendaraan
98
untuk mengantar
barang.
menyertai nol atau
banyak surat jalan.
JenisKendaraan Semua jenis kendara-
an yang 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.
99
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
dimiliki order.
100
3.9.2 Mengidentifikasi Tipe Relationship
a. Membuat Entity Relationship (ER) Diagram
Gambar 3.16 Entity Relationship Diagram Konseptual
101
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
102
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
Retur 1..* mempengaruhi 1..* Barang
103
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
104
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
varchar(50) tidak tidak
105
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
varchar(2) tidak tidak
106
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
kdStaffPrint kode staff yang varchar(5) tidak tidak
107
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
Retur kdRetur kode retur char(12) tidak tidak
108
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
integer tidak tidak
109
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.
noRekCabang Variasi angka dengan maksimal jumlah 15
110
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
111
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.
alamatCust Variasi karakter dengan maksimal jumlah
112
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.
113
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
114
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
115
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.
116
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
yyyymmddxxxx, dimana empat karakter
117
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
118
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
119
BarangKeluar kdBarangKeluar
tanggalKeluar
kdBarangKeluar
SuratJalan kdSuratJalan kdSuratJalan
Retur kdRetur kdRetur
Faktur kdFaktur kdFaktur
KasBank kdKasBank kdKasBank
120
Gambar 3.17 Entity Relationship Diagram dengan Primary Key
121
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.
Gambar 3.20 Hubungan BarangKeluar dengan Orders
122
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.
123
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.
124
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.
125
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.
vv. Melihat nama barang beserta jenis barangnya.
126
ww. Melihat nama kendaraan beserta jenis kendaraannya.
xx. Melihat daftar retur.
Gambar 3.24 Entity Relationship Diagram Model Konseptual dengan Transaksi
Pengguna
127
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
128
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
Tidak terdapat entitas lemah pada model data.
129
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
memiliki
130
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)
memiliki
131
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)
mendata
132
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)
mendata
133
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)
melayani
134
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)
membuat
135
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)
menangani
136
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)
membuat
137
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)
membuat
138
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
menjelaskan
139
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
memiliki
140
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)
menjelaskan
141
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
menjelaskan
142
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
143
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)
memiliki
144
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)
memiliki
145
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)
membuktikan
146
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)
memiliki
147
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
148
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
149
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)
150
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)
151
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)
152
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)
153
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)
154
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)
155
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.
Gambar 3.26 Atribut Multi-valued pada entitas Customer
156
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.
157
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)
158
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)
159
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)
160
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)
RekCust(noRekCust, namaBank, kdCust)
161
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)
162
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)
BarangKeluarDetail(kdBarangKeluar, kdBarang, qtyBarang)
163
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)
164
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
Faktur(kdFaktur, tanggalFaktur, jatuhTempo, kdDO, kdStaff)
165
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)
166
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)
167
Gambar 3.28 Entity Relationship Diagram Logikal
168
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
169
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
170
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)
171
Primary Key kdGudang
Foreign Key kdCabang references Cabang(kdCabang) ON UPDATE
CASCADE ON DELETE NO ACTION
Kendaraan(kdKendaraan, noPolisi, jumlahKend, kdJenisKend,
kdGudang)
Primary Key kdKendaraan
Foreign Key kdJenisKend references JenisKendaraan(kdJenisKend) ON
UPDATE CASCADE ON DELETE NO ACTION
Foreign Key kdGudang references Gudang(kdGudang) ON UPDATE
CASCADE ON DELETE SET NULL
JenisKendaraan(kdJenisKendaraan, JenisKendaraan)
Primary Key kdJenisKendaraan
Barang(kdBarang, namaBarang, harga, kdJenisBarang)
Primary Key kdBarang
Foreign Key kdJenisBarang references JenisBarang(kdJenisBarang) ON
UPDATE CASCADE ON DELETE NO ACTION
JenisBarang(kdJenisBarang, deskripsi)
Primary Key kdJenisBarang
LokasiBarang(kdBarang, kdGudang, qtyBarang)
Primary Key kdBarang, kdGudang
172
Foreign Key kdBarang references Barang(kdBarang) ON UPDATE
CASCADE ON DELETE CASCADE
Foreign Key kdGudang references Gudang(kdGudang) ON UPDATE
CASCADE ON DELETE CASCADE
Orders(kdDO, tanggalKirimDO, totalHarga, keteranganDO,
tanggalInput, tanggalPrint, kdCust, kdGudang)
Primary Key kdDO
Foreign Key kdCust references Customer(kdCustomer) ON UPDATE
CASCADE ON DELETE NO ACTION
Foreign Key kdGudang references Gudang(kdGudang) ON UPDATE
CASCADE ON DELETE NO ACTION
OrderDetail(kdDO, kdBarang, qtyDO)
Primary Key kdDO, kdBarang
Foreign Key kdDO references Orders(kdDO) ON UPDATE
CASCADE ON DELETE CASCADE
Foreign Key kdBarang references Barang(kdBarang) ON UPDATE
CASCADE ON DELETE NO ACTION
Orderstaff(kdDO, kdStaff)
Primary Key kdDO, kdStaff
Foreign Key kdDO references Orders(kdDO) ON UPDATE
CASCADE ON DELETE CASCADE
173
Foreign Key kdStaff references Staff(kdStaff) ON UPDATE
CASCADE ON DELETE SET NULL
BarangMasuk(kdBarangMasuk, tanggalMasuk, kdStaff, kdGudang)
Primary Key kdBarangMasuk
Foreign Key kdStaff references Staff(kdStaff) ON UPDATE
CASCADE ON DELETE SET NULL
Foreign Key kdGudang references Gudang(kdGudang) ON UPDATE
CASCADE ON DELETE NO ACTION
BarangMasukDetail(kdBarangMasuk, kdBarang, qtyBarang)
Primary Key kdBarangMasuk, kdBarang
Foreign Key kdBarangMasuk references
BarangMasuk(kdBarangMasuk) ON UPDATE CASCADE ON DELETE
CASCADE
Foreign Key kdBarang references Barang(kdBarang) ON UPDATE
CASCADE ON DELETE CASCADE
BarangKeluar(kdBarangKeluar, tanggalKeluar, kdStaff, kdGudang,
kdDO)
Primary Key kdBarangKeluar
Foreign Key kdStaff references Staff(kdStaff) ON UPDATE
CASCADE ON DELETE SET NULL
Foreign Key kdGudang references Gudang(kdGudang) ON UPDATE
CASCADE ON DELETE NO ACTION
174
Foreign Key kdDO references Orders(kdDO) ON UPDATE CASCADE
ON DELETE NO ACTION
BarangKeluarDetail (kdBarangkeluar, kdBarang, qtyBarang)
Primary Key kdBarangKeluar, kdBarang
Foreign Key kdBarangKeluar references
BarangKeluar(kdBarangKeluar) ON UPDATE CASCADE ON DELETE
CASCADE
Foreign Key kdBarang references Barang(kdBarang) ON UPDATE
CASCADE ON DELETE CASCADE
SuratJalan(kdSuratJalan, tglSuratJalan, kdDO, kdStaff, kdKend,
kdBarangKeluar)
Primary Key kdSuratJalan
Foreign Key kdDO references Orders(kdDO) ON UPDATE
CASCADE ON DELETE NO ACTION
Foreign Key kdStaff references Staff(kdStaff) ON UPDATE
CASCADE ON DELETE SET NULL
Foreign Key kdKend references Kendaraan(kdKend) ON UPDATE
CASCADE ON DELETE NO ACTION
Foreign Key kdBarangKeluar references
BarangKeluar(kdBarangKeluar) ON UPDATE CASCADE ON DELETE
NO ACTION
175
Retur(kdRetur, tanggalRetur, kdDO, kdFaktur, kdStaff)
Primary Key kdRetur
Foreign Key kdDO references Orders(kdDO) ON UPDATE
CASCADE ON DELETE NO ACTION
Foreign Key kdFaktur references Faktur(kdFaktur) ON UPDATE
CASCADE ON DELETE NO ACTION
Foreign Key kdStaff references Staff(kdStaff) ON UPDATE
CASCADE ON DELETE SET NULL
ReturDetail(kdRetur, kdBarang, qtyRetur)
Primary Key kdRetur, kdBarang
Foreign Key kdRetur references Retur(kdRetur) ON UPDATE
CASCADE ON DELETE CASCADE
Foreign Key kdBarang references Barang(kdBarang) ON UPDATE
CASCADE ON DELETE NO ACTION
Faktur(kdFaktur, tanggalFaktur, jatuhTempo, kdDO, kdStaff)
Primary Key kdFaktur
Foreign Key kdDO references Orders(kdDO) ON UPDATE
CASCADE ON DELETE NO ACTION
Foreign Key kdStaff references Staff(kdStaff) ON UPDATE
CASCADE ON DELETE SET NULL
176
KasBank(kdKasBank, tanggalPembayaran, totalPembayaran, kdDO,
kdStaff)
Primary Key kdKasBank
Foreign Key kdDO references Orders(kdDO) ON UPDATE
CASCADE ON DELETE NO ACTION
Foreign Key kdStaff references Staff(kdStaff) ON UPDATE
CASCADE ON DELETE SET NULL
3.10.5 Meninjau Model Data Logikal dengan Pengguna
Tahap ini bertujuan untuk meninjau ulang model data logikal
yang telah dibuat dengan pengguna-pengguna untuk memastikan bahwa
model data logikal yang telah dibuat telah merepresentasikan kebutuhan
data secara benar.
Model data logikal yang telah dibuat telah merefleksikan struktur
data yang disimpan untuk perusahaan, dibuktikan dengan setiap
penyimpanan data pada DFD telah merepresentasikan seluruh tipe entitas
pada ERD dan atribut pada DFD dimiliki juga oleh entitas pada ERD.
177
3.11 Perancangan Basis Data Fisikal
3.11.1 Menerjemahkan Model Data Logikal untuk DBMS Target
3.11.1.1 Desain Relasi Dasar
Cabang
Domain KodeCabang fixed length character string length 3
Domain NamaCabang variable length character string length 40
Domain AlamatCabang variable length character string length 50
Domain KodePosCabang fixed length character string length 5
Domain KotaCabang variable length character string length 15
Domain EmailCabang variable length character string length 30
Cabang(
kdCabang KodeCabang NOT NULL,
alamatCabang AlamatCabang NOT NULL,
kdPosCabang KodePosCabang NOT NULL,
kotaCabang KotaCabang NOT NULL,
emailCabang EmailCabang NOT NULL,
PRIMARY KEY kdCabang);
TelpCabang
Domain NomorTeleponCabang variable length character string length 12
Domain KodeCabang fixed length character string length 3
TelpCabang(
noTelpCabang NomorTeleponCabang NOT NULL,
178
kdCabang KodeCabang NOT NULL,
PRIMARY KEY telpCabang,
FOREIGN KEY kdCabang REFERENCES Cabang(kdCabang) ON
UPDATE CASCADE ON DELETE CASCADE);
FaxCabang
Domain NomorFaxCabang variable length character string length 12
Domain KodeCabang fixed length character string length 3
FaxCabang(
noFaxCabang NomorFaxCabang NOT NULL,
kdCabang KodeCabang NOT NULL,
PRIMARY KEY faxCabang,
FOREIGN KEY kdCabang REFERENCES Cabang(kdCabang) ON
UPDATE CASCADE ON DELETE CASCADE);
RekCabang
Domain NoRekeningCabang variable length character string length 15
Domain NamaBank variable length character string length 30
Domain KodeCabang fixed length character string length 3
RekCabang(
noRekCabang NoRekeningCabang NOT NULL,
namaBank NamaBank NOT NULL,
kdCabang kodeCabang NOT NULL,
PRIMARY KEY rekCabang,
179
FOREIGN KEY kdCabang REFERENCES Cabang(kdCabang) ON
UPDATE CASCADE ON DELETE CASCADE);
Divisi
Domain KodeDivisi fixed length character string length 2
Domain NamaDivisi variable length character string length 20
Divisi(
kdDivisi KodeDivisi NOT NULL,
namaDivisi NamaDivisi NOT NULL,
PRIMARY KEY kdDivisi);
Staff
Domain KodeStaff fixed length character string length 5
Domain NamaStaff variable length character string length 40
Domain AlamatStaff variable length character string length 50
Domain KodePosStaff fixed length character string length 5
Domain Kota variable length character string length 15
Domain TanggalLahir date
Domain EmailStaff variable length character string length 30
Domain JenisKelamin single character, “L” atau “P”
Domain Jabatan variable length character string length 20
Domain TanggalMulaiKerja date
Domain KodeDivisi fixed length character string length 2
Domain KodeCabang fixed length character string length 3
180
Staff(
kdStaff KodeStaff NOT NULL,
namaStaff NamaStaff NOT NULL,
alamatStaff AlamatStaff NOT NULL,
kdPosStaff KodePosStaff NOT NULL,
kota Kota NOT NULL,
tanggalLahir TanggalLahir NOT NULL,
emailStaff EmailStaff,
jenisKelamin JenisKelamin NOT NULL,
jabatan Jabatan NOT NULL,
tanggalMulaiKerja TanggalMulaiKerja NOT NULL,
kdDivisi KodeDivisi NOT NULL,
kdCabang KodeCabang NOT NULL,
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
Domain NomorTeleponStaff variable length character string length 12
Domain KodeStaff fixed length character string length 5
TelpStaff(
noTelpStaff NomorTeleponStaff NOT NULL,
181
kdStaff KodeStaff NOT NULL,
PRIMARY KEY telpStaff,
FOREIGN KEY kdStaff REFERENCES Staff(kdStaff) ON UPDATE
CASCADE ON DELETE CASCADE);
Users
Domain Username variable length character string length 10
Domain Password variable length character string length 20
Domain Privilege variable length character string length 10
Domain LastLogin datetime
Domain KodeStaff fixed length character string length 5
Users(
username Username NOT NULL,
password Password NOT NULL,
privilege Privilege NOT NULL,
lastLogin LastLogin NOT NULL,
kdStaff KodeStaff NOT NULL,
PRIMARY KEY username,
FOREIGN KEY kdStaff REFERENCES Staff(kdStaff) ON UPDATE
CASCADE ON DELETE CASCADE);
Customer
Domain KodeCustomer fixed length character string length 5
Domain NamaCustomer variable length character string length 40
182
Domain AlamatCustomer variable length character string length 50
Domain KodePosCustomer fixed length character string length 5
Domain KotaCustomer variable length character string length 15
Domain EmailCustomer variable length character string length 30
Domain KodeStaff fixed length character string length 5
Customer(
kdCust KodeCustomer NOT NULL,
namaCust NamaCustomer NOT NULL,
alamatCust AlamatCustomer NOT NULL,
kdPosCust KodePosCustomer NOT NULL,
kotaCust KotaCustomer NOT NULL,
emailCust EmailCustomer,
kdStaff KodeStaff NOT NULL,
PRIMARY KEY kdCust,
FOREIGN KEY kdStaff REFERENCES Staff(kdStaff) ON UPDATE
CASCADE ON DELETE SET NULL);
TelpCust
Domain NoTeleponCustomer variable length character string length 12
Domain KodeCustomer fixed length character string length 5
TelpCust(
noTelpCust NoTeleponCustomer NOT NULL,
kdCust KodeCustomer NOT NULL,
PRIMARY KEY telpCust,
183
FOREIGN KEY kdCust REFERENCES Customer(kdCust) ON
UPDATE CASCADE ON DELETE CASCADE);
FaxCust
Domain NomorFaxCustomer variable length character string length 12
Domain KodeCustomer fixed length character string length 5
FaxCust(
noFaxCust NomorFaxCustomer NOT NULL,
kdCust KodeCustomer NOT NULL,
PRIMARY KEY faxCust,
FOREIGN KEY kdCust REFERENCES Customer(kdCust) ON
UPDATE CASCADE ON DELETE CASCADE);
RekCust
Domain NoRekeningCustomer variable length character string length 15
Domain NamaBank variable length character string length 30
Domain KodeCustomer fixed length character string length 5
RekCust(
noRekCust NoRekeningCustomer NOT NULL,
namaBank NamaBank NOT NULL,
kdCust KodeCustomer NOT NULL,
PRIMARY KEY rekCust,
FOREIGN KEY kdCust REFERENCES Customer(kdCust) ON
UPDATE CASCADE ON DELETE CASCADE);
184
Gudang
Domain KodeGudang fixed length character string length 3
Domain NamaGudang variable length character string length 30
Domain AlamatGudang variable length character string length 50
Domain KodePosGudang fixed length character string length 5
Domain KotaGudang variable length character string length 15
Domain KodeCabang fixed length character string length 3
Gudang(
kdGudang KodeGudang NOT NULL,
namaGudang NamaGudang NOT NULL,
alamatGudang AlamatGudang NOT NULL,
kdPosGudang KodePosGudang NOT NULL,
kotaGudang KotaGudang NOT NULL,
kdCabang KodeCabang NOT NULL,
PRIMARY KEY kdGudang,
FOREIGN KEY kdCabang REFERENCES Cabang(kdCabang) ON
UPDATE CASCADE ON DELETE NO ACTION);
Kendaraan
Domain KodeKendaraan fixed length character string length 4
Domain NomorPolisi variable length character string length 10
Domain KodeJenisKendaraan fixed length character string length 2
Domain KodeGudang fixed length character string length 3
Kendaraan(
185
kdKend KodeKendaraan NOT NULL,
noPolisi NomorPolisi NOT NULL,
kdJenisKend KodeJenisKendaraan NOT NULL,
kdGudang KodeGudang NOT NULL,
PRIMARY KEY kdKend,
FOREIGN KEY kdJenisKend REFERENCES
JenisKendaraan(kdJenisKend) ON UPDATE CASCADE ON DELETE
NO ACTION,
FOREIGN KEY kdGudang REFERENCES Gudang(kdGudang) ON
UPDATE CASCADE ON DELETE SET NULL);
JenisKendaraan
Domain KodeJenisKendaraan fixed length character string length 2
Domain JenisKendaraan variable length character string length 20
JenisKendaraan(
kdJenisKend KodeJenisKendaraan NOT NULL,
jenisKend JenisKendaraan NOT NULL,
PRIMARY KEY kdJenisKendaraan);
Barang
Domain KodeBarang variable length character string length 10
Domain NamaBarang variable length character string length 50
Domain Harga integer
Domain KodeJenisBarang fixed length character string length 2
186
Barang(
kdBarang KodeBarang NOT NULL,
namaBarang NamaBarang NOT NULL,
harga Harga NOT NULL,
kdJenisBarang KodeJenisBarang NOT NULL,
PRIMARY KEY kdBarang,
FOREIGN KEY kdJenisBarang REFERENCES
JenisBarang(kdJenisBarang) ON UPDATE CASCADE ON DELETE NO
ACTION);
JenisBarang
Domain KodeJenisBarang fixed length character string length 2
Domain Deskripsi variable length character string length 80
JenisBarang(
kdJenisBarang KodeJenisBarang NOT NULL,
deskripsi Deskripsi NOT NULL,
PRIMARY KEY kdJenisBarang);
LokasiBarang
Domain KodeBarang variable length character string length 10
Domain KodeGudang fixed length character string length 3
Domain QuantityBarang integer
LokasiBarang(
kdBarang KodeBarang NOT NULL,
187
kdGudang KodeGudang NOT NULL,
qtyBarang QuantityBarang NOT NULL,
PRIMARY KEY kdBarang, kdGudang,
FOREIGN KEY kdBarang REFERENCES Barang(kdBarang) ON
UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY kdGudang REFERENCES Gudang(kdGudang) ON
UPDATE CASCADE ON DELETE CASCADE);
Orders
Domain KodeDO fixed length character string length 10
Domain TanggalKirimDO date
Domain TotalHarga integer
Domain TanggalInput datetime
Domain TanggalPrint datetime
Domain KodeCustomer fixed length character string length 5
Domain KodeGudang fixed length character string length 3
Orders(
kdDO KodeDO NOT NULL,
tanggalKirimDO TanggalKirimDO NOT NULL,
totalHarga TotalHarga NOT NULL,
tanggalInput TanggalInput NOT NULL,
tanggalPrint TanggalPrint NOT NULL,
kdCust KodeCustomer NOT NULL,
kdGudang KodeGudang NOT NULL,
188
PRIMARY KEY kdDO,
FOREIGN KEY kdCust REFERENCES Customer(kdCust) ON
UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY kdGudang REFERENCES Gudang(kdGudang) ON
UPDATE CASCADE ON DELETE NO ACTION);
OrderDetail
Domain KodeDO fixed length character string length 10
Domain KodeBarang variable length character string length 10
Domain QuantityDO integer
OrderDetail(
kdDO KodeDO NOT NULL,
kdBarang KodeBarang NOT NULL,
qtyDO QuantityDO NOT NULL,
PRIMARY KEY kdDO, kdBarang,
FOREIGN KEY kdDO REFERENCES Orders(kdDO) ON UPDATE
CASCADE ON DELETE CASCADE,
FOREIGN KEY kdBarang REFERENCES Barang(kdBarang) ON
UPDATE CASCADE ON DELETE NO ACTION);
OrderStaff
Domain KodeDO variable length character string length 10
Domain KodeStaff fixed length character string length 5
OrderStaff (
189
kdDO KodeDO NOT NULL,
kdStaff KodeStaff NOT NULL,
PRIMARY KEY kdDO, kdStaff,
FOREIGN KEY kdDO REFERENCES Orders(kdDO) ON UPDATE
CASCADE ON DELETE CASCADE,
FOREIGN KEY kdstaff REFERENCES Staff(kdStaff) ON UPDATE
CASCADE ON DELETE SET NULL);
BarangMasuk
Domain KodeBarangMasuk fixed length character string length 12
Domain TanggalMasuk datetime
Domain KodeStaff fixed length character string length 5
Domain KodeGudang fixed length character string length 3
BarangMasuk(
kdBarangMasuk KodeBarangMasuk NOT NULL,
tanggalMasuk TanggalMasuk NOT NULL,
kdStaff KodeStaff NOT NULL,
kdGudang kodeGudang NOT NULL,
PRIMARY KEY kdBarangMasuk,
FOREIGN KEY kdStaff REFERENCES Staff(kdStaff) ON UPDATE
CASCADE ON DELETE SET NULL,
FOREIGN KEY kdGudang REFERENCES Gudang(kdGudang) ON
UPDATE CASCADE ON DELETE NO ACTION);
190
BarangMasukDetail
Domain KodeBarangMasuk fixed length character string length 12
Domain KodeBarang variable length character string length 10
Domain QuantityBarang integer
BarangMasukDetail(
kdBarangMasuk KodeBarangMasuk NOT NULL,
kdBarang KodeBarang NOT NULL,
qtyBarang QuantityBarang NOT NULL,
PRIMARY KEY kdBarangMasuk, kdBarang,
FOREIGN KEY kdBarangMasuk REFERENCES
barangMasuk(kdBarangMasuk) ON UPDATE CASCADE ON DELETE
CASCADE,
FOREIGN KEY kdBarang REFERENCES Barang(kdBarang) ON
UPDATE CASCADE ON DELETE CASCADE);
BarangKeluar
Domain KodeBarangKeluar fixed length character string length 12
Domain TanggalKeluar datetime
Domain KodeStaff fixed length character string length 5
Domain KodeGudang fixed length character string length 3
BarangKeluar(
kdBarangKeluar KodeBarangKeluar NOT NULL,
tanggalKeluar TanggalKeluar NOT NULL,
kdStaff KodeStaff NOT NULL,
191
kdGudang KodeGudang NOT NULL,
kdSuratJalan KodeSuratJalan NOT NULL,
PRIMARY KEY kdBarangKeluar,
FOREIGN KEY kdStaff REFERENCES Staff(kdStaff) ON UPDATE
CASCADE ON DELETE SET NULL,
FOREIGN KEY kdGudang REFERENCES Gudang(kdGudang) ON
UPDATE CASCADE ON DELETE NO ACTION);
BarangKeluarDetail
Domain KodeBarangKeluar fixed length character string length 12
Domain KodeBarang variable length character string length 10
Domain QuantityBarang integer
BarangKeluarDetail(
kdBarangKeluar KodeBarangKeluar NOT NULL,
kdBarang KodeBarang NOT NULL,
qtyBarang QuantityBarang NOT NULL,
PRIMARY KEY kdBarangKeluar, kdBarang,
FOREIGN KEY kdBarangKeluar REFERENCES
barangKeluar(kdBarangKeluar) ON UPDATE CASCADE ON DELETE
CASCADE,
FOREIGN KEY kdBarang REFERENCES Barang(kdBarang) ON
UPDATE CASCADE ON DELETE CASCADE);
192
SuratJalan
Domain KodeSuratJalan fixed length character string length 12
Domain TanggalSuratJalan date
Domain KodeDO fixed length character string length 10
Domain KodeStaff fixed length character string length 5
Domain Kodekendaraan fixed length character string length 4
Domain KodeBarangKeluar fixed length character string length 12
SuratJalan(
kdSuratJalan KodeSuratJalan NOT NULL,
tglSuratJalan TanggalSuratJalan NOT NULL,
kdDO kodeDO NOT NULL,
kdStaff kodeStaff NOT NULL,
kdKend kodeKendaraan NOT NULL,
kdBarangKeluar kodeBarangKeluar NOT NULL,
PRIMARY KEY kdSuratJalan,
FOREIGN KEY kdDO REFERENCES Orders(kdDO) ON UPDATE
CASCADE ON DELETE NO ACTION,
FOREIGN KEY kdStaff REFERENCES Staff(kdStaff) ON UPDATE
CASCADE ON DELETE SET NULL ,
FOREIGN KEY kdKend REFERENCES Kendaraan(kdKend) ON
UPDATE CASCADE ON DELETE NO ACTION
FOREIGN KEY kdBarangKeluar REFERENCES
BarangKeluar(kdBarangKeluar) ON UPDATE CASCADE ON DELETE
NO ACTION);
193
Retur
Domain KodeRetur fixed length character string length 12
Domain TanggalRetur date
Domain KeteranganRetur variable length character string length 80
Domain KodeDO fixed length character string length 10
Domain KodeStaff fixed length character string length 5
Retur(
kdRetur kodeRetur NOT NULL,
tanggalRetur tanggalRetur NOT NULL,
keteranganRetur keteranganRetur NOT NULL,
kdDO kodeDO NOT NULL,
kdStaff kodeStaff NOT NULL,
PRIMARY KEY kdRetur,
FOREIGN KEY kdDO REFERENCES Orders(kdDO) ON UPDATE
CASCADE ON DELETE NO ACTION,
FOREIGN KEY kdStaff REFERENCES Staff(kdStaff) ON UPDATE
CASCADE ON DELETE SET NULL);
ReturDetail
Domain KodeRetur fixed length character string length 12
Domain KodeBarang variable length character string length 10
Domain QuantityRetur integer
ReturDetail(
kdRetur KodeRetur NOT NULL,
194
kdBarang KodeBarang NOT NULL,
qtyRetur QuantityRetur NOT NULL,
PRIMARY KEY kdRetur, kdBarang,
FOREIGN KEY kdRetur REFERENCES Retur(kdRetur) ON UPDATE
CASCADE ON DELETE CASCADE,
FOREIGN KEY kdBarang REFERENCES Barang(kdBarang) ON
UPDATE CASCADE ON DELETE NO ACTION);
Faktur
Domain KodeFaktur fixed length character string length 12
Domain TanggalFaktur date
Domain JatuhTempo date
Domain KodeDO fixed length character string length 10
Domain KodeStaff fixed length character string length 5
Faktur(
kdFaktur KodeFaktur NOT NULL,
tanggalFaktur TanggalFaktur NOT NULL,
jatuhTempo TanggalBayar NOT NULL,
kdDO KodeDO NOT NULL,
kdStaff KodeStaff NOT NULL,
PRIMARY KEY kdFaktur,
FOREIGN KEY kdDO REFERENCES Orders(kdDO) ON UPDATE
CASCADE ON DELETE NO ACTION,
195
FOREIGN KEY kdStaff REFERENCES Staff(kdStaff) ON UPDATE
CASCADE ON DELETE SET NULL);
KasBank
Domain KodeKasBank fixed length character string length 12
Domain TanggalPembayaran date
Domain TotalPembayaran integer
Domain KodeDO fixed length character string length 10
Domain KodeStaff fixed length character string length 5
KasBank(
kdKasBank KodeKasBank NOT NULL,
tanggalPembayaran TanggalPembayaran NOT NULL,
totalPembayaran TotalPembayaran NOT NULL,
kdDO KodeDO NOT NULL,
kdStaff KodeStaff NOT NULL,
PRIMARY KEY kdPembayaran,
FOREIGN KEY kdStaff REFERENCES Staff(kdStaff) ON UPDATE
CASCADE ON DELETE NO ACTION,
FOREIGN KEY kddo REFERENCES Orders(kdDO) ON UPDATE
CASCADE ON DELETE NO ACTION);
196
3.11.1.2 Merancang Representasi Dari Data yang Diturunkan
Data yang diturunkan antara lain :
a. totalHarga pada tabel Orders
Merepresentasikan nominal harga yang didapat dengan
mengalikan kuantitas produk yang dipesan dengan harga
per produk.
3.11.1.3 Merancang Batasan Umum
a. Tanggal pengiriman tidak boleh lebih kecil daripada
tanggal pembuatan Delivery Order tersebut.
CONSTRAINT tanggalKirimDOValidation
CHECK (NOT EXIST (SELECT tanggalKirimDO
FROM Orders
WHERE tanggalKirimDO < SYSDATE))
b. Tanggal pembayaran tidak boleh lebih kecil daripada
tanggal pembuatan faktur dan tidak boleh lebih besar
daripada tanggal pembuatan kas bank tersebut.
CONSTRAINT tanggalPembayaranValidation
CHECK (NOT EXIST (SELECT tanggalPembayaran
FROM Orders
WHERE tanggalPembayaran < tanggalFaktur AND
tanggalPembayaran > SYSDATE))
c. Tanggal jatuh tempo tidak boleh lebih kecil daripada
tanggal pembuatan faktur tersebut.
197
CONSTRAINT jatuhTempoValidation
CHECK (NOT EXIST (SELECT jatuhTempo
FROM Faktur
WHERE jatuhTempo < SYSDATE))
d. Cabang hanya dapat memiliki 3 nomor telepon
CONSTRAINT TelpCabangValidation
CHECK (NOT EXIST (SELECT noTelpCabang
FROM TelpCabang
GROUP BY noTelpCabang
HAVING COUNT(*) > 3))
e. Cabang hanya dapat memiliki 3 nomor fax
CONSTRAINT FaxCabangValidation
CHECK (NOT EXIST (SELECT noFaxCabang
FROM FaxCabang
GROUP BY noFaxCabang
HAVING COUNT (*) > 3))
f. Cabang hanya dapat memiliki 3 nomor rekening
CONSTRAINT RekCabangValidation
CHECK (NOT EXIST (SELECT noRekCabang
FROM RekCabang
GROUP BY noRekCabang
HAVING COUNT (*) > 3))
g. Staff hanya dapat memiliki 3 nomor telepon
CONSTRAINT TelpStaffValidation
198
CHECK (NOT EXIST (SELECT noTelpStaff
FROM TelpStaff
GROUP BY noTelpStaff
HAVING COUNT (*) > 3))
h. Customer hanya dapat memiliki 3 nomor telepon
CONSTRAINT TelpCust Validation
CHECK (NOT EXIST (SELECT noTelpCust
FROM TelpCust
GROUP BY noTelpCut
HAVING COUNT (*) > 3))
i. Customer hanya dapat memiliki 3 nomor fax
CONSTRAINT FaxCust Validation
CHECK (NOT EXIST (SELECT noFaxCust
FROM FaxCust
GROUP BY noFaxCust
HAVING COUNT (*) > 3))
j. Customer hanya dapat memiliki 3 nomor rekening
CONSTRAINT RekCustomer Validation
CHECK (NOT EXIST (SELECT noRekCust
FROM RekCust
GROUP BY noRekCust
HAVING COUNT (*) > 3))
199
3.11.2 Merancang Organisasi File dan Index
3.11.2.1 Menganalisis Transaksi
Memetakan Seluruh Jalur Transaksi
Tinjauan Sales Admin (SA)
a. Memasukkan data order dari customer tertentu.
b. Memasukkan data retur dari order tertentu.
c. Mengubah/menghapus data order dari customer
tertentu.
d. Mengubah/menghapus data retur dari order tertentu.
e. Melihat rincian data pesanan yang dilakukan oleh
customer tertentu.
f. Melihat rincian data retur yang dilakukan oleh
customer tertentu.
g. Melihat rincian data retur yang mengacu pada delivery
order tertentu.
h. Melihat daftar customer.
i. Melihat daftar sales yang melayani customer tertentu.
j. Melihat daftar gudang yang memiliki barang tertentu.
k. Melihat staff yang bertanggung jawab menangani
retur.
l. Melihat nama barang yang diretur pada tanggal
tertentu.
m. Melihat delivery order berdasarkan gudang tertentu.
200
Tinjauan Kepala Gudang
n. Memasukkan data barang yang keluar dari Delivery
Order
o. Memasukkan data barang yang masuk
p. Melihat informasi pesanan dengan detail barang yang
dipesan.
q. Melihat staff yang menginput informasi pesanan
tertentu.
r. Melihat daftar staff yang bekerja di cabang tertentu.
s. Melihat barang apa saja yang keluar di gudang
tertentu.
t. Melihat nama barang yang keluar pada tanggal
tertentu.
u. Melihat staff yang bertanggung jawab dengan barang
keluar tertentu.
v. Melihat barang keluar yang sesuai dengan surat jalan
tertentu.
w. Melihat barang apa saja yang masuk pada tanggal
tertentu.
x. Melihat barang masuk di gudang tertentu.
y. Melihat staff yang bertanggung jawab dengan barang
masuk tertentu.
201
Tinjauan Admin Gudang
z. Memasukkan data surat jalan dari barang keluar
aa. Melihat kendaraan yang dicantumkan pada surat jalan
tertentu.
bb. Melihat alamat customer pada Delivery Order tertentu.
cc. Melihat staff yang bertanggung jawab membuat Surat
Jalan.
dd. Melihat cabang beserta gudang-gudangnya.
ee. Melihat surat jalan yang mengacu kepada delivery
order tertentu.
ff. Melihat kendaraan yang terdapat pada gudang tertentu.
Tinjauan Inventory Control
gg. Mengubah data stok barang di Delivery Order tertentu
hh. Melihat stok barang yang dipesan pada Delivery Order
oleh customer tertentu.
Tinjauan Account Recieveable
ii. Memasukkan data faktur dari Delivery Order tertentu
jj. Mengubah status pembayaran dari faktur tertentu
kk. Melihat faktur untuk customer tertentu.
ll. Melihat faktur yang mengacu pada Delivery Order
tertentu.
202
mm. Melihat staff yang bertanggung jawab membuat faktur
tertentu.
nn. Melihat jatuh tempo pembayaran seorang customer.
oo. Melihat daftar harga barang.
pp. Melihat status faktur dari customer tertentu.
Tinjauan Finance
qq. Memasukkan data kas bank dari Delivery Order
tertentu.
rr. Melihat status faktur dari order tertentu.
ss. Melihat kasbank dari order tertentu.
tt. Melihat staff yang bertanggung jawab dalam
pembuatan kas bank tertentu.
Tinjauan Admin
uu. Memasukkan data cabang
vv. Memasukkan data divisi
ww. Memasukkan data staff
xx. Memasukkan data user
yy. Memasukkan data customer
zz. Memasukkan data gudang
aaa. Memasukkan data kendaraan
bbb. Memasukkan data jenis kendaraan
ccc. Memasukkan data barang
203
ddd. Memasukkan data jenis barang
eee. Memasukkan data lokasi barang
fff. Mengubah/menghapus data cabang
ggg. Mengubah/menghapus data divisi
hhh. Mengubah/menghapus data staff
iii. Mengubah/menghapus data user
jjj. Mengubah/menghapus data customer
kkk. Mengubah/menghapus data gudang
lll. Mengubah/menghapus data kendaraan
mmm. Mengubah/menghapus data jenis kendaraan
nnn. Mengubah/menghapus data barang
ooo. Mengubah/menghapus data jenis barang
ppp. Mengubah/menghapus data lokasi barang
qqq. Mengubah/menghapus data Delivery Order
rrr. Mengubah/menghapus data barang keluar
sss. Mengubah/menghapus data barang masuk
ttt. Mengubah/menghapus data surat jalan
uuu. Mengubah/menghapus data retur
vvv. Mengubah/menghapus data faktur
www. Mengubah/menghapus data kas bank
xxx. Melihat daftar cabang.
yyy. Melihat daftar divisi.
zzz. Melihat daftar staff yang bekerja pada suatu cabang.
aaaa. Melihat daftar staff yang bekerja pada suatu divisi.
204
bbbb. Melihat daftar username dari staff tertentu.
cccc. Melihat daftar barang.
dddd. Melihat daftar gudang.
eeee. Melihat daftar customer.
ffff. Melihat daftar pesanan.
gggg. Melihat daftar surat jalan.
hhhh. Melihat daftar faktur.
iiii. Melihat daftar kas bank.
jjjj. Melihat nama barang beserta jenis barangnya.
kkkk. Melihat nama kendaraan beserta jenis kendaraannya.
llll. Melihat daftar retur.
205
Tabel 3.6 Tabel Transaksi
Transaksi/Relasi a b c I R U D I R U D I R U D
Cabang TelpCabang FaxCabang RekCabang Divisi Staff TelpStaff Users X X X Customer X X TelpCust X X FaxCust X X RekCust X X Gudang Kendaraan JenisKendaraan Barang JenisBarang LokasiBarang Orders X X X X X OrderDetail X OrderStaff X BarangMasuk BarangMasukDetail BarangKeluar BarangKeluarDetail SuratJalan Retur X ReturDetail X Faktur KasBank
I = Insert, R = Read, U = Update, D = Delete
206
Tabel 3.7 Tabel Transaksi
Transaksi/Relasi d e f I R U D I R U D I R U D
Cabang TelpCabang FaxCabang RekCabang Divisi Staff TelpStaff Users X X X Customer X X TelpCust X X FaxCust X X RekCust X X Gudang Kendaraan JenisKendaraan Barang JenisBarang LokasiBarang Orders X X X OrderDetail X X X OrderStaff X X X BarangMasuk BarangMasukDetail BarangKeluar BarangKeluarDetail SuratJalan Retur X X X X ReturDetail X X X X Faktur KasBank
I = Insert, R = Read, U = Update, D = Delete
207
Tabel 3.8 Tabel Transaksi
Transaksi/Relasi g h i I R U D I R U D I R U D
Cabang TelpCabang FaxCabang RekCabang Divisi Staff X TelpStaff X Users X X X Customer X X TelpCust X X FaxCust X X RekCust X X Gudang Kendaraan JenisKendaraan Barang JenisBarang LokasiBarang Orders X OrderDetail X OrderStaff X BarangMasuk BarangMasukDetail BarangKeluar BarangKeluarDetail SuratJalan Retur X ReturDetail X Faktur KasBank
I = Insert, R = Read, U = Update, D = Delete
208
Tabel 3.9 Tabel Transaksi
Transaksi/Relasi j k l I R U D I R U D I R U D
Cabang TelpCabang FaxCabang RekCabang Divisi Staff X TelpStaff X Users X X X Customer TelpCust FaxCust RekCust Gudang X Kendaraan JenisKendaraan Barang X X JenisBarang X X LokasiBarang X X Orders OrderDetail OrderStaff BarangMasuk BarangMasukDetail BarangKeluar BarangKeluarDetail SuratJalan Retur X X ReturDetail X X Faktur KasBank
I = Insert, R = Read, U = Update, D = Delete
209
Tabel 3.10 Tabel Transaksi
Transaksi/Relasi m n o I R U D I R U D I R U D
Cabang TelpCabang FaxCabang RekCabang Divisi Staff TelpStaff Users X X X Customer TelpCust FaxCust RekCust Gudang X X Kendaraan JenisKendaraan Barang X X JenisBarang X X LokasiBarang X X Orders X X OrderDetail X X OrderStaff X X BarangMasuk X BarangMasukDetail X BarangKeluar X BarangKeluarDetail X SuratJalan Retur ReturDetail Faktur KasBank
I = Insert, R = Read, U = Update, D = Delete
210
Tabel 3.11 Tabel Transaksi
Transaksi/Relasi p q r I R U D I R U D I R U D
Cabang X TelpCabang X FaxCabang X RekCabang X Divisi X Staff X X TelpStaff X X Users X X X Customer TelpCust FaxCust RekCust Gudang Kendaraan JenisKendaraan Barang X JenisBarang X LokasiBarang X Orders X X OrderDetail X X OrderStaff X X BarangMasuk BarangMasukDetail BarangKeluar BarangKeluarDetail SuratJalan Retur ReturDetail Faktur KasBank
I = Insert, R = Read, U = Update, D = Delete
211
Tabel 3.12 Tabel Transaksi
Transaksi/Relasi s t u I R U D I R U D I R U D
Cabang TelpCabang FaxCabang RekCabang Divisi Staff X TelpStaff X Users X X X Customer TelpCust FaxCust RekCust Gudang X Kendaraan JenisKendaraan Barang X X JenisBarang X X LokasiBarang X X Orders OrderDetail OrderStaff BarangMasuk BarangMasukDetail BarangKeluar X X X BarangKeluarDetail X X X SuratJalan Retur ReturDetail Faktur KasBank
I = Insert, R = Read, U = Update, D = Delete
212
Tabel 3.13 Tabel Transaksi
Transaksi/Relasi v w x I R U D I R U D I R U D
Cabang TelpCabang FaxCabang RekCabang Divisi Staff TelpStaff Users X X X Customer TelpCust FaxCust RekCust Gudang X Kendaraan JenisKendaraan Barang JenisBarang LokasiBarang Orders OrderDetail OrderStaff BarangMasuk X X BarangMasukDetail X X BarangKeluar X BarangKeluarDetail X SuratJalan X Retur ReturDetail Faktur KasBank
I = Insert, R = Read, U = Update, D = Delete
213
Tabel 3.14 Tabel Transaksi
Transaksi/Relasi y z aa I R U D I R U D I R U D
Cabang TelpCabang FaxCabang RekCabang Divisi Staff X TelpStaff X Users X X X Customer TelpCust FaxCust RekCust Gudang Kendaraan X JenisKendaraan X Barang JenisBarang LokasiBarang Orders OrderDetail OrderStaff BarangMasuk X BarangMasukDetail X BarangKeluar X BarangKeluarDetail X SuratJalan X X Retur ReturDetail Faktur KasBank
I = Insert, R = Read, U = Update, D = Delete
214
Tabel 3.15 Tabel Transaksi
Transaksi/Relasi bb cc dd I R U D I R U D I R U D
Cabang X TelpCabang X FaxCabang X RekCabang X Divisi Staff X TelpStaff X Users X X X Customer X TelpCust X FaxCust X RekCust X Gudang X Kendaraan JenisKendaraan Barang JenisBarang LokasiBarang Orders X OrderDetail X OrderStaff X BarangMasuk BarangMasukDetail BarangKeluar BarangKeluarDetail SuratJalan X Retur ReturDetail Faktur KasBank
I = Insert, R = Read, U = Update, D = Delete
215
Tabel 3.16 Tabel Transaksi
Transaksi/Relasi ee ff gg I R U D I R U D I R U D
Cabang TelpCabang FaxCabang RekCabang Divisi Staff TelpStaff Users X X X Customer TelpCust FaxCust RekCust Gudang X Kendaraan X JenisKendaraan X Barang JenisBarang LokasiBarang Orders X X X OrderDetail X X X OrderStaff X X X BarangMasuk BarangMasukDetail BarangKeluar BarangKeluarDetail SuratJalan X Retur ReturDetail Faktur KasBank
I = Insert, R = Read, U = Update, D = Delete
216
Tabel 3.17 Tabel Transaksi
Transaksi/Relasi hh ii jj I R U D I R U D I R U D
Cabang TelpCabang FaxCabang RekCabang Divisi Staff TelpStaff Users X X X Customer X TelpCust X FaxCust X RekCust X Gudang Kendaraan JenisKendaraan Barang X JenisBarang X LokasiBarang X Orders X X OrderDetail X X OrderStaff X X BarangMasuk BarangMasukDetail BarangKeluar BarangKeluarDetail SuratJalan Retur ReturDetail Faktur X X KasBank
I = Insert, R = Read, U = Update, D = Delete
217
Tabel 3.18 Tabel Transaksi
Transaksi/Relasi kk ll mm I R U D I R U D I R U D
Cabang TelpCabang FaxCabang RekCabang Divisi Staff X TelpStaff X Users X X X Customer TelpCust FaxCust RekCust Gudang Kendaraan JenisKendaraan Barang JenisBarang LokasiBarang Orders X OrderDetail X OrderStaff X BarangMasuk BarangMasukDetail BarangKeluar BarangKeluarDetail SuratJalan Retur ReturDetail Faktur X X X KasBank
I = Insert, R = Read, U = Update, D = Delete
218
Tabel 3.19 Tabel Transaksi
Transaksi/Relasi nn oo pp I R U D I R U D I R U D
Cabang TelpCabang FaxCabang RekCabang Divisi Staff TelpStaff Users X X X Customer X X TelpCust X X FaxCust X X RekCust X X Gudang Kendaraan JenisKendaraan Barang X JenisBarang X LokasiBarang Orders OrderDetail OrderStaff BarangMasuk BarangMasukDetail BarangKeluar BarangKeluarDetail SuratJalan Retur ReturDetail Faktur X X KasBank
I = Insert, R = Read, U = Update, D = Delete
219
Tabel 3.20 Tabel Transaksi
Transaksi/Relasi qq rr ss I R U D I R U D I R U D
Cabang TelpCabang FaxCabang RekCabang Divisi Staff TelpStaff Users X X X Customer TelpCust FaxCust RekCust Gudang Kendaraan JenisKendaraan Barang JenisBarang LokasiBarang Orders X X X OrderDetail X X X OrderStaff X X X BarangMasuk BarangMasukDetail BarangKeluar BarangKeluarDetail SuratJalan Retur ReturDetail Faktur X KasBank X X
I = Insert, R = Read, U = Update, D = Delete
220
Tabel 3.21 Tabel Transaksi
Transaksi/Relasi tt uu vv I R U D I R U D I R U D
Cabang X TelpCabang X FaxCabang X RekCabang X Divisi X Staff X TelpStaff X Users X X X Customer TelpCust FaxCust RekCust Gudang Kendaraan JenisKendaraan Barang JenisBarang LokasiBarang Orders OrderDetail OrderStaff BarangMasuk BarangMasukDetail BarangKeluar BarangKeluarDetail SuratJalan Retur ReturDetail Faktur KasBank X
I = Insert, R = Read, U = Update, D = Delete
221
Tabel 3.22 Tabel Transaksi
Transaksi/Relasi ww xx yy I R U D I R U D I R U D
Cabang TelpCabang FaxCabang RekCabang Divisi Staff X TelpStaff X Users X X X X Customer X TelpCust X FaxCust X RekCust X Gudang Kendaraan JenisKendaraan Barang JenisBarang LokasiBarang Orders OrderDetail OrderStaff BarangMasuk BarangMasukDetail BarangKeluar BarangKeluarDetail SuratJalan Retur ReturDetail Faktur KasBank
I = Insert, R = Read, U = Update, D = Delete
222
Tabel 3.23 Tabel Transaksi
Transaksi/Relasi zz aaa bbb I R U D I R U D I R U D
Cabang TelpCabang FaxCabang RekCabang Divisi Staff TelpStaff Users X X X Customer TelpCust FaxCust RekCust Gudang X Kendaraan X JenisKendaraan X Barang JenisBarang LokasiBarang Orders OrderDetail OrderStaff BarangMasuk BarangMasukDetail BarangKeluar BarangKeluarDetail SuratJalan Retur ReturDetail Faktur KasBank
I = Insert, R = Read, U = Update, D = Delete
223
Tabel 3.24 Tabel Transaksi
Transaksi/Relasi ccc ddd eee I R U D I R U D I R U D
Cabang TelpCabang FaxCabang RekCabang Divisi Staff X X X TelpStaff Users Customer TelpCust FaxCust RekCust Gudang Kendaraan JenisKendaraan Barang X JenisBarang X LokasiBarang X Orders OrderDetail OrderStaff BarangMasuk BarangMasukDetail BarangKeluar BarangKeluarDetail SuratJalan Retur ReturDetail Faktur KasBank
I = Insert, R = Read, U = Update, D = Delete
224
Tabel 3.25 Tabel Transaksi
Transaksi/Relasi fff ggg hhh I R U D I R U D I R U D
Cabang X X X TelpCabang X X X FaxCabang X X X RekCabang X X X Divisi X X X Staff X X X TelpStaff X X X Users X X X Customer TelpCust FaxCust RekCust Gudang Kendaraan JenisKendaraan Barang JenisBarang LokasiBarang Orders OrderDetail OrderStaff BarangMasuk BarangMasukDetail BarangKeluar BarangKeluarDetail SuratJalan Retur ReturDetail Faktur KasBank
I = Insert, R = Read, U = Update, D = Delete
225
Tabel 3.26 Tabel Transaksi
Transaksi/Relasi iii jjj kkk I R U D I R U D I R U D
Cabang TelpCabang FaxCabang RekCabang Divisi Staff TelpStaff Users X X X X X X Customer X X X TelpCust X X X FaxCust X X X RekCust X X X Gudang X X X Kendaraan JenisKendaraan Barang JenisBarang LokasiBarang Orders OrderDetail OrderStaff BarangMasuk BarangMasukDetail BarangKeluar BarangKeluarDetail SuratJalan Retur ReturDetail Faktur KasBank
I = Insert, R = Read, U = Update, D = Delete
226
Tabel 3.27 Tabel Transaksi
Transaksi/Relasi lll mmm nnn I R U D I R U D I R U D
Cabang TelpCabang FaxCabang RekCabang Divisi Staff TelpStaff Users X X X Customer TelpCust FaxCust RekCust Gudang Kendaraan X X X JenisKendaraan X X X Barang X X X JenisBarang LokasiBarang Orders OrderDetail OrderStaff BarangMasuk BarangMasukDetail BarangKeluar BarangKeluarDetail SuratJalan Retur ReturDetail Faktur KasBank
I = Insert, R = Read, U = Update, D = Delete
227
Tabel 3.28 Tabel Transaksi
Transaksi/Relasi ooo ppp qqq I R U D I R U D I R U D
Cabang TelpCabang FaxCabang RekCabang Divisi Staff TelpStaff Users X X X Customer TelpCust FaxCust RekCust Gudang Kendaraan JenisKendaraan Barang JenisBarang X X X LokasiBarang X X X Orders X X X OrderDetail X X X OrderStaff X X X BarangMasuk BarangMasukDetail BarangKeluar BarangKeluarDetail SuratJalan Retur ReturDetail Faktur KasBank
I = Insert, R = Read, U = Update, D = Delete
228
Tabel 3.29 Tabel Transaksi
Transaksi/Relasi rrr sss ttt I R U D I R U D I R U D
Cabang TelpCabang FaxCabang RekCabang Divisi Staff TelpStaff Users X X X Customer TelpCust FaxCust RekCust Gudang Kendaraan JenisKendaraan Barang JenisBarang LokasiBarang Orders OrderDetail OrderStaff BarangMasuk X X X BarangMasukDetail X X X BarangKeluar X X X BarangKeluarDetail X X X SuratJalan X X X Retur ReturDetail Faktur KasBank
I = Insert, R = Read, U = Update, D = Delete
229
Tabel 3.30 Tabel Transaksi
Transaksi/Relasi uuu vvv www I R U D I R U D I R U D
Cabang TelpCabang FaxCabang RekCabang Divisi Staff TelpStaff Users X X X Customer TelpCust FaxCust RekCust Gudang Kendaraan JenisKendaraan Barang JenisBarang LokasiBarang Orders OrderDetail OrderStaff BarangMasuk BarangMasukDetail BarangKeluar BarangKeluarDetail SuratJalan Retur X X X ReturDetail X X X Faktur X X X KasBank X X X
I = Insert, R = Read, U = Update, D = Delete
230
Tabel 3.31 Tabel Transaksi
Transaksi/Relasi xxx yyy zzz I R U D I R U D I R U D
Cabang X X TelpCabang X X FaxCabang X X RekCabang X X Divisi X Staff X TelpStaff X Users X X X Customer TelpCust FaxCust RekCust Gudang Kendaraan JenisKendaraan Barang JenisBarang LokasiBarang Orders OrderDetail OrderStaff BarangMasuk BarangMasukDetail BarangKeluar BarangKeluarDetail SuratJalan Retur ReturDetail Faktur KasBank
I = Insert, R = Read, U = Update, D = Delete
231
Tabel 3.32 Tabel Transaksi
Transaksi/Relasi aaaa bbbb cccc I R U D I R U D I R U D
Cabang TelpCabang FaxCabang RekCabang Divisi X Staff X X TelpStaff X X Users X X X Customer TelpCust FaxCust RekCust Gudang Kendaraan JenisKendaraan Barang X JenisBarang X LokasiBarang X Orders OrderDetail OrderStaff BarangMasuk BarangMasukDetail BarangKeluar BarangKeluarDetail SuratJalan Retur ReturDetail Faktur KasBank
I = Insert, R = Read, U = Update, D = Delete
232
Tabel 3.33 Tabel Transaksi
Transaksi/Relasi dddd eeee ffff I R U D I R U D I R U D
Cabang TelpCabang FaxCabang RekCabang Divisi Staff TelpStaff Users X X X Customer X TelpCust X FaxCust X RekCust X Gudang X Kendaraan JenisKendaraan Barang JenisBarang LokasiBarang Orders X OrderDetail X OrderStaff X BarangMasuk BarangMasukDetail BarangKeluar BarangKeluarDetail SuratJalan Retur ReturDetail Faktur KasBank
I = Insert, R = Read, U = Update, D = Delete
233
Tabel 3.34 Tabel Transaksi
Transaksi/Relasi gggg hhhh iiii I R U D I R U D I R U D
Cabang TelpCabang FaxCabang RekCabang Divisi Staff TelpStaff Users X X X Customer TelpCust FaxCust RekCust Gudang Kendaraan JenisKendaraan Barang JenisBarang LokasiBarang Orders OrderDetail OrderStaff BarangMasuk BarangMasukDetail BarangKeluar BarangKeluarDetail SuratJalan X Retur ReturDetail Faktur X KasBank X
I = Insert, R = Read, U = Update, D = Delete
234
Tabel 3.35 Tabel Transaksi
Transaksi/Relasi jjjj kkkk llll I R U D I R U D I R U D
Cabang TelpCabang FaxCabang RekCabang Divisi Staff TelpStaff Users X X X Customer TelpCust FaxCust RekCust Gudang Kendaraan X JenisKendaraan X Barang X JenisBarang X LokasiBarang Orders OrderDetail OrderStaff BarangMasuk BarangMasukDetail BarangKeluar BarangKeluarDetail SuratJalan Retur X ReturDetail X Faktur KasBank
I = Insert, R = Read, U = Update, D = Delete
235
3.11.2.2 Memilih Organisasi File
DBMS yang digunakan adalah Oracle 10g. Secara logikal,
basis data dibagi di dalam satu atau banyak tablespace, yang
secara fisikal disimpan dalam sejumlah file. Setiap tablespace
terdiri dari satu atau banyak Oracle data block, yang secara
fisik disimpan pada OS.
Gambar 3.29 Struktur Penyimpanan pada Oracle (Best,
2005, halaman 5-3)
3.11.2.3 Memilih Index
Tabel 3.36 Tabel Pemilihan Index
Tabel Index
Cabang kdCabang
namaCabang
TelpCabang noTelpCabang
236
FaxCabang noFaxCabang
RekCabang noRekCabang
Divisi kdDivisi
namaDivisi
Staff kdStaff
namaStaff
TelpStaff noTelpStaff
Users username
Customer kdCust
namaCust
TelpCust noTelpCust
FaxCust noFaxCust
RekCust noRekCust
Gudang kdGudang
namaGudang
Kendaraan kdKendaraan
noPolisi
JenisKendaraan kdJenisKendaraan
Barang kdBarang
namaBarang
JenisBarang kdJenisBarang
LokasiBarang kdBarang
kdGudang
237
Orders kdDO
kdCustomer
totalHarga
OrderDetail kdDO
kdBarang
OrderStaff kdDO
kdStaff
BarangMasuk kdBarangMasuk
BarangMasukDetail kdBarangMasuk
kdBarangBarang
BarangKeluar kdBarangKeluar
BarangKeluarDetail kdBarangKeluar
kdBarang
SuratJalan kdSuratJalan
Retur kdRetur
tanggalRetur
Faktur kdFaktur
tanggalFaktur
jatuhTempo
KasBank kdKasBank
tanggalPembayaran
238
3.11.2.4 Memperkirakan Kebutuhan disk space
Menghitung ukuran total block header.
Langkah pertama adalah menghitung ukuran dari block header:
totalBlockHeaderSize = fixedHeaderSize +
fixedTransactionHeader +
variableTransactionHeader + dataHeader
fixedHeaderSize = KCBH + UB4
fixedTransactionHeader = KTBBH
variableTransactionHeader = KTBIT*(INITTRANS – 1)
dataHeader = KDBH
dimana parameter KCBH, UB4, KTBBH, KTBIT, KDBH
dapat diambil dari tabel sistem v$type_size, dan INITTRANS
adalah angka inisial dari pengisian transaksi per objek.
Untuk tabel non-clustered dengan INITTRANS = 1,
didapatkan:
totalBlockHeaderSize = (20 + 4) + 48 + 0 + 14 = 86
Menghitung tempat data yang tersedia per blok data.
Kemudian, hitunglah jumlah dari tempat yang tersedia pada
blok data dengan cara:
availableDataSpace = ROUNDUP((blockSize –
totalBlockHeaderSize)*(1 - PCTFREE/100) - KDBT
239
dimana PCTFREE adalah persentase dari tempat yang dipesan
pada block untuk update. Untuk tabel non-clustered dengan
PCTFREE = 10, didapatkan:
availableDataSpace = (8192 – 86)*(1 - 10/100) – 4 =
7292
Menghitung tempat yang digunakan per baris.
Hitunglah tempat data gabungan yang dibutuhkan untuk baris
biasa. Hal ini bergantung pada:
a. Banyaknya kolom pada definisi tabel
b. Tipe data yang digunakan pada setiap kolom
Total ukuran kolom, termasuk jumlah byte, dihitung dengan
cara:
totalColumnSize = columnSize + (1, if column size < 250,
else 3)
maka, ukuran barisnya adalah:
totalRowSize = rowHeaderSize = ∑ totalColumnSize
dimana rowHeaderSize = 3 bytes per baris dari tabel non-
clustered. Apabila nilai yang dihitung lebih kecil daripada nilai
pasti dari row size, gunakan nilai minimum sebagai row size.
240
Tabel 3.37 Tabel Estimasi Penggunaan Kapasitas pada Tabel Cabang
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
Cabang kdCabang kode cabang char 3
namaCabang nama cabang varchar 40
alamatCabang alamat cabang varchar 50
kdPosCabang kode pos cabang char 5
kota kota varchar 15
emailCabang email cabang varchar 30
totalRowSize = 3 + ∑ (4 + 40 + 50 + 6 + 15 + 30) = 3 + 145 = 148
Menghitung Jumlah Total baris per Blok Data
Jumlah total dari baris yang memenuhi data blok dapat dihitung
dengan cara:
noRowsPerBlock = ROUNDDOWN
(availableDataSpace/totalRowSize)
Maka,
noRowsPerBlock = ROUNDDOWN (7292/148) = 49
Cabang yang dimiliki saat ini adalah sekitar 14 cabang.
Maka, total kebutuhan baris adalah 14 baris.
Total kebutuhan blok data adalah 14 / 49 = 1 blok data
Jadi, total kebutuhan disk space adalah 1 * 8192 = 8 KB
Estimasi pertumbuhan cabang dalam 1 tahun adalah 1 cabang.
241
Total kebutuhan baris dalam 1 tahun adalah 15 baris.
Total kebutuhan blok data adalah 15/49 = 1 blok data.
Jadi, total kebutuhan disk space adalah 1 * 8192 = 8 KB
Estimasi pertumbuhan cabang dalam 5 tahun adalah 5 cabang.
Total kebutuhan baris dalam 5 tahun adalah 19 baris.
Total kebutuhan blok data adalah 19/49 = 1 blok data.
Jadi, total kebutuhan disk space adalah 1 * 8192 = 8 KB
Tabel 3.38 Tabel Estimasi Penggunaan Kapasitas pada Tabel TelpCabang
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
TelpCabang noTelpCabang nomor telepon
cabang
varchar 12
kdCabang kode cabang char 3
totalRowSize = 3 + ∑ (12 + 4) = 3 + 16 = 19
noRowsPerBlock = ROUNDDOWN (7292/19) = 383
Cabang yang dimiliki saat ini adalah sekitar 14 cabang
Maksimal nomor telepon dalam 1 cabang adalah 3 nomor telepon
Total kebutuhan baris adalah 42 baris
Total kebutuhan blok data adalah 42/383 = 1 blok data
Jadi, total kebutuhan disk space adalah 1 * 8192 = 8 KB
Estimasi pertumbuhan nomor telepon cabang dalam 1 tahun adalah 3 nomor.
Total kebutuhan baris dalam 1 tahun adalah 45 baris.
242
Total kebutuhan blok data adalah 45/383 = 1 blok data.
Jadi, total kebutuhan disk space adalah 1 * 8192 = 8 KB
Estimasi pertumbuhan nomor telepon cabang dalam 5 tahun adalah 15 nomor.
Total kebutuhan baris dalam 5 tahun adalah 57 baris.
Total kebutuhan blok data adalah 57/383 = 1 blok data.
Jadi, total kebutuhan disk space adalah 1 * 8192 = 8 KB
Tabel 3.39 Tabel Estimasi Penggunaan Kapasitas pada Tabel FaxCabang
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
FaxCabang noFaxCabang nomor fax cabang varchar 12
kdCabang kode cabang varchar 3
totalRowSize = 3 + ∑ (12 + 4) = 3 + 16 = 19
noRowsPerBlock = ROUNDDOWN (7292/19) = 383
Cabang yang dimiliki saat ini adalah sekitar 14 cabang
Maksimal nomor fax dalam 1 cabang adalah 3 nomor fax
Total kebutuhan baris adalah 42 baris
Jadi, total kebutuhan disk space adalah 1 * 8192 = 8 KB
Estimasi pertumbuhan nomor fax cabang dalam 1 tahun adalah 3 nomor.
Total kebutuhan baris dalam 1 tahun adalah 45 baris.
Total kebutuhan blok data adalah 45/383 = 1 blok data.
Jadi, total kebutuhan disk space adalah 1 * 8192 = 8 KB
Estimasi pertumbuhan nomor fax cabang dalam 5 tahun adalah 15 nomor.
243
Total kebutuhan baris dalam 5 tahun adalah 57 baris.
Total kebutuhan blok data adalah 57/383 = 1 blok data.
Jadi, total kebutuhan disk space adalah 1 * 8192 = 8 KB
Tabel 3.40 Tabel Estimasi Penggunaan Kapasitas pada Tabel RekCabang
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
RekCabang noRekCabang nomor rekening
cabang
varchar 15
namaBank nama bank varchar 30
kdCabang kode cabang char 3
totalRowSize = 3 + ∑ (15 + 30 + 3) = 3 + 48 = 51
noRowsPerBlock = ROUNDDOWN (7292/51) = 142
Cabang yang dimiliki saat ini adalah sekitar 14 cabang
Maksimal nomor rekening dalam 1 cabang adalah 3 nomor telepon
Total kebutuhan baris adalah 42 baris
Jadi, total kebutuhan disk space adalah 1 * 8192 = 8 KB
Estimasi pertumbuhan nomor rekening cabang dalam 1 tahun adalah 3 nomor.
Total kebutuhan baris dalam 1 tahun adalah 45 baris.
Total kebutuhan blok data adalah 45/142 = 1 blok data.
Jadi, total kebutuhan disk space adalah 1 * 8192 = 8 KB
Estimasi pertumbuhan nomor telepon cabang dalam 5 tahun adalah 15 nomor.
Total kebutuhan baris dalam 5 tahun adalah 57 baris.
244
Total kebutuhan blok data adalah 57/142 = 1 blok data.
Jadi, total kebutuhan disk space adalah 1 * 8192 = 8 KB
Tabel 3.41 Tabel Estimasi Penggunaan Kapasitas pada Tabel Divisi
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
Divisi kdDivisi kode divisi char 2
namaDivisi nama divisi varchar 20
totalRowSize = 3 + ∑ (3 + 20) = 3 + 23 = 26
noRowsPerBlock = ROUNDDOWN (7292/26) = 280
Divisi yang dimiliki saat ini adalah sekitar 26 divisi
Total kebutuhan baris adalah 26 baris
Jadi, total kebutuhan disk space adalah 1 * 8192 = 8 KB
Estimasi pertumbuhan divisi dalam 1 tahun adalah 0 divisi.
Jadi, total kebutuhan disk space adalah 1 * 8192 = 8 KB
Estimasi pertumbuhan divisi dalam 5 tahun adalah 0 divisi.
Jadi, total kebutuhan disk space adalah 1 * 8192 = 8 KB
Tabel 3.42 Tabel Estimasi Penggunaan Kapasitas pada Tabel Staff
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
Staff kdStaff kode staff char 5
namaStaff nama staff varchar 40
245
alamatStaff alamat staff varchar 50
kdPosStaff kode pos staff char 5
kotaStaff kota staff varchar 15
tanggalLahir tanggal lahir staff date 8
emailStaff email staff varchar 30
jenisKelamin jenis kelamin staff char 2
jabatan jabatan staff varchar 15
tanggalMulaiKer
ja
tanggal staff mulai
bekerja
date 8
kdDivisi kode divisi char 2
totalRowSize = 3 + ∑ (6 + 40 + 50 + 6 + 15 + 8 + 30 + 3 + 15 + 8 + 3) = 3 + 184 =
187
noRowsPerBlock = ROUNDDOWN (7292/187) = 38
Staff yang dimiliki saat ini adalah sekitar 256 orang
Cabang yang dimiliki saat ini adalah 14 cabang.
Total kebutuhan baris adalah 256 * 14 = 3584 baris
Total kebutuhan blok data adalah 3584/38 = 95
Jadi, total kebutuhan disk space adalah 95 * 8192 = 760 KB
Estimasi pertumbuhan staff dalam 1 tahun adalah 256 orang.
Total kebutuhan baris dalam 1 tahun adalah 3840 baris.
Total kebutuhan blok data adalah 3840/38 = 102 blok data.
Jadi, total kebutuhan disk space adalah 102 * 8192 = 816 KB
Estimasi pertumbuhan staff dalam 5 tahun adalah 1280 orang.
246
Total kebutuhan baris dalam 5 tahun adalah 4864 baris.
Total kebutuhan blok data adalah 4864/38 = 128 blok data.
Jadi, total kebutuhan disk space adalah 128 * 8192 = 1024 KB
Tabel 3.43 Tabel Estimasi Penggunaan Kapasitas pada Tabel TelpStaff
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
TelpStaff noTelpStaff nomor telepon staff varchar 12
kdStaff kode staff char 5
totalRowSize = 3 + ∑ (12 + 6) = 3 + 18 = 21
noRowsPerBlock = ROUNDDOWN (7292/21) = 347
Staff yang dimiliki saat ini adalah sekitar 256 orang
Cabang yang dimiliki saat ini adalah 14 cabang.
Maksimal nomor telepon pada 1 staff adalah 3 nomor telepon
Total kebutuhan baris adalah 10752 baris
Total kebutuhan blok data adalah 10752 / 347 = 31
Jadi, total kebutuhan disk space adalah 31 * 8192 = 248 KB
Estimasi pertumbuhan staff dalam 1 tahun adalah 256 orang.
Total kebutuhan baris dalam 1 tahun adalah 10752 + 768 = 11520 baris.
Total kebutuhan blok data adalah 11520/347 = 34 blok data.
Jadi, total kebutuhan disk space adalah 34 * 8192 = 272 KB
Estimasi pertumbuhan staff dalam 5 tahun adalah 1280 orang.
Total kebutuhan baris dalam 5 tahun adalah 10752 + 3840 = 14592 baris.
247
Total kebutuhan blok data adalah 14592/347 = 43 blok data.
Jadi, total kebutuhan disk space adalah 43 * 8192 = 344 KB
Tabel 3.44 Tabel Estimasi Penggunaan Kapasitas pada Tabel Users
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
Users username Username varchar 10
password Password varchar 20
privilege Privilege varchar 10
lastLogin last login datetime 8
kodeStaff kode staff char 5
totalRowSize = 3 + ∑ (10 + 20 + 10 + 8 + 6) = 3 + 54 = 57
noRowsPerBlock = ROUNDDOWN (7292/57) = 127
Staff yang dimiliki saat ini adalah sekitar 256 orang
Cabang yang dimiliki saat ini adalah 14 cabang.
Total kebutuhan baris adalah 3584 baris
Total kebutuhan blok data adalah 3584 / 127 = 29
Jadi, total kebutuhan disk space adalah 29 * 8192 = 232 KB
Estimasi pertumbuhan staff dalam 1 tahun adalah 256 orang.
Total kebutuhan baris dalam 1 tahun adalah 3584 + 256 = 3840 baris.
Total kebutuhan blok data adalah 3840 / 127 = 31 blok data.
Jadi, total kebutuhan disk space adalah 31 * 8192 = 248 KB
Estimasi pertumbuhan staff dalam 5 tahun adalah 1280 orang.
248
Total kebutuhan baris dalam 5 tahun adalah 3584 + 1280 = 4864 baris.
Total kebutuhan blok data adalah 4864 / 127 = 39 blok data.
Jadi, total kebutuhan disk space adalah 39 * 8192 = 312 KB
Tabel 3.45 Tabel Estimasi Penggunaan Kapasitas pada Tabel Customer
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
Customer kdCust kode customer char 5
namaCust nama customer varchar 40
alamatCust alamat customer varchar 50
kdPosCust kode pos customer char 5
kotaCust kota customer varchar 15
emailCust email customer varchar 30
kdStaff kode staff char 5
totalRowSize = 3 + ∑ (6 + 40 + 50 + 6 + 15 + 30 + 6) = 3 + 153 = 156
noRowsPerBlock = ROUNDDOWN (7292/156) = 46
Customer yang dimiliki saat ini adalah sekitar 5000 customer
Total kebutuhan baris adalah 5000 baris
Total kebutuhan blok data adalah 5000 / 46 = 109
Jadi, total kebutuhan disk space adalah 109 * 8192 = 872 KB
Estimasi pertumbuhan customer dalam 1 tahun adalah 200 customer.
Total kebutuhan baris dalam 1 tahun adalah 5200 baris.
Total kebutuhan blok data adalah 5200 / 46 = 114 blok data.
249
Jadi, total kebutuhan disk space adalah 114 * 8192 = 912 KB
Estimasi pertumbuhan customer dalam 5 tahun adalah 1000 customer.
Total kebutuhan baris dalam 5 tahun adalah 5000 + 1000 = 6000 baris.
Total kebutuhan blok data adalah 6000 / 46 = 131 blok data.
Jadi, total kebutuhan disk space adalah 131 * 8192 = 1048 KB
Tabel 3.46 Tabel Estimasi Penggunaan Kapasitas pada Tabel TelpCust
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
TelpCust noTelpCust nomor telepon
customer
varchar 12
kdCust kode customer char 5
totalRowSize = 3 + ∑ (12 + 6) = 3 + 18 = 21
noRowsPerBlock = ROUNDDOWN (7292/21) = 347
Customer yang dimiliki saat ini adalah sekitar 5000 customer
Maksimal nomor telepon pada 1 staff adalah 3 nomor telepon
Total kebutuhan baris adalah 15000 baris
Total kebutuhan blok data adalah 15000 / 347 = 44
Jadi, total kebutuhan disk space adalah 44 * 8192 = 352 KB
Estimasi pertumbuhan customer dalam 1 tahun adalah 200 customer.
Total kebutuhan baris dalam 1 tahun adalah 5200 * 3 = 15600 baris.
Total kebutuhan blok data adalah 15600 / 347 = 45 blok data.
Jadi, total kebutuhan disk space adalah 45 * 8192 = 360 KB
250
Estimasi pertumbuhan customer dalam 5 tahun adalah 1000 customer.
Total kebutuhan baris dalam 5 tahun adalah 6000 * 3 = 18000 baris.
Total kebutuhan blok data adalah 18000 / 347 = 52 blok data.
Jadi, total kebutuhan disk space adalah 52 * 8192 = 416 KB
Tabel 3.47 Tabel Estimasi Penggunaan Kapasitas pada Tabel FaxCust
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
FaxCust noFaxCustomer nomor fax
customer
varchar 12
kdCustomer kode customer char 5
totalRowSize = 3 + ∑ (12 + 6) = 3 + 18 = 21
noRowsPerBlock = ROUNDDOWN (7292/21) = 347
Customer yang dimiliki saat ini adalah sekitar 5000 customer
Maksimal nomor fax pada 1 staff adalah 3 nomor fax
Total kebutuhan baris adalah 15000 baris
Total kebutuhan blok data adalah 15000 / 347 = 44
Jadi, total kebutuhan disk space adalah 44 * 2048 = 352 KB
Estimasi pertumbuhan customer dalam 1 tahun adalah 200 customer.
Total kebutuhan baris dalam 1 tahun adalah 5200 * 3 = 15600 baris.
Total kebutuhan blok data adalah 15600 / 347 = 45 blok data.
Jadi, total kebutuhan disk space adalah 45 * 8192 = 360 KB
Estimasi pertumbuhan customer dalam 5 tahun adalah 1000 customer.
251
Total kebutuhan baris dalam 5 tahun adalah 6000 * 3 = 18000 baris.
Total kebutuhan blok data adalah 18000 / 347 = 52 blok data.
Jadi, total kebutuhan disk space adalah 52 * 8192 = 416 KB
Tabel 3.48 Tabel Estimasi Penggunaan Kapasitas pada Tabel RekCust
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
RekCust noRekCust nomor rekening
customer
varchar 15
namaBank nama bank varchar 30
kdCust kode customer char 5
totalRowSize = 3 + ∑ (15 + 30 + 6) = 3 + 51 = 54
noRowsPerBlock = ROUNDDOWN (7292/54) = 135
Customer yang dimiliki saat ini adalah sekitar 5000 customer
Maksimal nomor rekening pada 1 customer adalah 3 nomor rekening
Total kebutuhan baris adalah 15000 baris
Total kebutuhan blok data adalah 15000 / 135 = 112
Jadi, total kebutuhan disk space adalah 112 * 8192 = 896 KB
Estimasi pertumbuhan customer dalam 1 tahun adalah 200 customer.
Total kebutuhan baris dalam 1 tahun adalah 5200 * 3 = 15600 baris.
Total kebutuhan blok data adalah 15600 / 112 = 140 blok data.
Jadi, total kebutuhan disk space adalah 140 * 8192 = 1120 KB
Estimasi pertumbuhan customer dalam 5 tahun adalah 1000 customer.
252
Total kebutuhan baris dalam 5 tahun adalah 6000 * 3 = 18000 baris.
Total kebutuhan blok data adalah 18000 / 112 = 161 blok data.
Jadi, total kebutuhan disk space adalah 161 * 8192 = 1288 KB
Tabel 3.49 Tabel Estimasi Penggunaan Kapasitas pada Tabel Gudang
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
Gudang kdGudang kode gudang char 3
namaGudang nama gudang varchar 30
alamatGudang alamat gudang varchar 50
kdPosGudang kode pos gudang char 5
kotaGudang kota gudang varchar 15
kdCabang kode cabang char 3
totalRowSize = 3 + ∑ (4 + 30 + 50 + 6 + 15 + 4) = 3 + 109 = 112
noRowsPerBlock = ROUNDDOWN (7292/112) = 65
Gudang yang dimiliki saat ini adalah sekitar 20 gudang
Maka, total kebutuhan baris adalah 20 baris
Jadi, total kebutuhan disk space adalah 1 * 8192 = 8 KB
Estimasi pertumbuhan gudang dalam 1 tahun adalah 1 gudang.
Total kebutuhan baris dalam 1 tahun adalah 21 baris.
Total kebutuhan blok data adalah 21 / 65 = 1 blok data.
Jadi, total kebutuhan disk space adalah 1 * 8192 = 8 KB
Estimasi pertumbuhan gudang dalam 5 tahun adalah 5 gudang.
253
Total kebutuhan baris dalam 5 tahun adalah 25 baris.
Total kebutuhan blok data adalah 25 / 65 = 1 blok data.
Jadi, total kebutuhan disk space adalah 1 * 8192 = 8 KB
Tabel 3.50 Tabel Estimasi Penggunaan Kapasitas pada Tabel Kendaraan
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
Kendaraan kdKend kode kendaraan char 4
nomorPolisi nomor polisi varchar 10
kdJenisKend kode jenis
kendaraan
varchar 2
kdGudang kode gudang char 3
totalRowSize = 3 + ∑ (4 + 10 + 2 + 3) = 3 + 19 = 22
noRowsPerBlock = ROUNDDOWN (7292/22) = 331
Kendaraan yang dimiliki saat ini adalah sekitar 200 kendaraan
Maka, total kebutuhan baris adalah 200 baris
Total kebutuhan blok data adalah 200 / 331 = 1
Jadi, total kebutuhan disk space adalah 1 * 8192 = 8 KB
Estimasi pertumbuhan kendaraan dalam 1 tahun adalah 10 kendaraan.
Total kebutuhan baris dalam 1 tahun adalah 210 baris.
Total kebutuhan blok data adalah 210 / 331 = 1 blok data.
Jadi, total kebutuhan disk space adalah 1 * 8192 = 8 KB
Estimasi pertumbuhan kendaraan dalam 5 tahun adalah 50 kendaraan.
254
Total kebutuhan baris dalam 5 tahun adalah 250 baris.
Total kebutuhan blok data adalah 250 / 331 = 1 blok data.
Jadi, total kebutuhan disk space adalah 1 * 8192 = 8 KB
Tabel 3.51 Tabel Estimasi Penggunaan Kapasitas pada Tabel
JenisKendaraan
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
JenisKendara
an
kdJenisKend kode jenis
kendaraan
varchar 2
jenisKend jenis kendaraan varchar 20
totalRowSize = 3 + ∑ (2 + 20) = 3 + 22 = 25
noRowsPerBlock = ROUNDDOWN (7292/25) = 291
Jenis Kendaraan yang dimiliki saat ini adalah sekitar 20 kendaraan
Maka, total kebutuhan baris adalah 20 baris
Jadi, total kebutuhan disk space adalah 1 * 8192 = 8 KB
Estimasi pertumbuhan jenis kendaraan dalam 1 tahun adalah 0 jenis.
Jadi, total kebutuhan disk space adalah 1 * 8192 = 8 KB
Estimasi pertumbuhan jenis kendaraan dalam 5 tahun adalah 0 jenis.
Jadi, total kebutuhan disk space adalah 1 * 8192 = 8 KB
255
Tabel 3.52 Tabel Estimasi Penggunaan Kapasitas pada Tabel Barang
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
Barang kdBarang kode barang char 4
namaBarang nama barang varchar 50
harga harga barang integer 4
kdJenisBarang kode jenis barang varchar 3
totalRowSize = 3 + ∑ (9 + 50 + 4 + 3) = 3 + 66 = 69
noRowsPerBlock = ROUNDDOWN (7292/69) = 105
Barang yang dimiliki saat ini adalah sekitar 500 barang
Total kebutuhan baris adalah 500 barang
Total kebutuhan blok data adalah 500 / 105 = 5
Jadi, total kebutuhan disk space adalah 5 * 8192 = 40 KB
Estimasi pertumbuhan barang dalam 1 tahun adalah 20 barang.
Total kebutuhan baris dalam 1 tahun adalah 520 baris.
Total kebutuhan blok data adalah 520 / 105 = 5 blok data.
Jadi, total kebutuhan disk space adalah 5 * 8192 = 40 KB
Estimasi pertumbuhan barang dalam 5 tahun adalah 100 barang.
Total kebutuhan baris dalam 5 tahun adalah 600 baris.
Total kebutuhan blok data adalah 600 / 105 = 6 blok data.
Jadi, total kebutuhan disk space adalah 6 * 8192 = 48 KB
256
Tabel 3.53 Tabel Estimasi Penggunaan Kapasitas pada Tabel JenisBarang
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
JenisBarang kdJenisBarang kode jenis barang varchar 3
deskripsi deskripsi barang varchar 80
totalRowSize = 3 + ∑ (4 + 80) = 3 + 84 = 87
noRowsPerBlock = ROUNDDOWN (7292/87) = 83
JenisBarang yang dimiliki saat ini adalah sekitar 50 JenisBarang
Total kebutuhan baris adalah 50 baris
Total kebutuhan blok data adalah 50 / 83 = 1
Jadi, total kebutuhan disk space adalah 1 * 8192 = 8 KB
Estimasi pertumbuhan jenis barang dalam 1 tahun adalah sekitar 5 jenis.
Total kebutuhan baris dalam 1 tahun adalah 55 baris.
Total kebutuhan blok data adalah 55 / 83 = 1 blok data.
Jadi, total kebutuhan disk space adalah 1 * 8192 = 8 KB
Estimasi pertumbuhan jenis barang dalam 5 tahun adalah sekitar 25 jenis.
Total kebutuhan baris dalam 5 tahun adalah 75 baris.
Total kebutuhan blok data adalah 75 / 83 = 1 blok data.
Jadi, total kebutuhan disk space adalah 1 * 8192 = 8 KB
257
Tabel 3.54 Tabel Estimasi Penggunaan Kapasitas pada Tabel
LokasiBarang
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
LokasiBa
rang
kdBarang kode barang char 8
KdGudang kode gudang char 3
qtyBarang quantity barang integer 4
totalRowSize = 3 + ∑ (9 + 4 + 4) = 3 + 17 = 20
noRowsPerBlock = ROUNDDOWN (7292/20) = 364
Barang yang dimiliki saat ini adalah sekitar 500 barang
Gudang yang dimiliki saat ini adalah sekitar 20 gudang
Total kebutuhan baris adalah 10000 baris
Total kebutuhan blok data adalah 10000 / 364 = 28
Jadi, total kebutuhan disk space adalah 28 * 8192 = 224 KB
Estimasi pertumbuhan barang dalam 1 tahun adalah 20 barang.
Estimasi pertumbuhan gudang dalam 1 tahun adalah 1 gudang.
Total kebutuhan baris dalam 1 tahun adalah 520 * 21 = 10920 baris.
Total kebutuhan blok data adalah 10920 / 364 = 30 blok data.
Jadi, total kebutuhan disk space adalah 30 * 8192 = 240 KB
Estimasi pertumbuhan barang dalam 1 tahun adalah 100 barang.
Estimasi pertumbuhan gudang dalam 1 tahun adalah 5 gudang.
Total kebutuhan baris dalam 5 tahun adalah 600 * 25 = 15000 baris.
258
Total kebutuhan blok data adalah 15000 / 364 = 42 blok data.
Jadi, total kebutuhan disk space adalah 42 * 8192 = 336 KB
Tabel 3.55 Tabel Estimasi Penggunaan Kapasitas pada Tabel Orders
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
Orders kdDO kode DO char 10
tanggalKirimDO tanggal kirim DO date 8
totalHarga total harga integer 4
tanggalInput tanggal input DO datetime 8
tanggalPrint tanggal print DO datetime 8
kdCust kode customer varchar 5
kdGudang kode gudang varchar 3
totalRowSize = 3 + ∑ (11 + 8 + 4 + 8 + 8 + 5 + 3) = 3 + 47 = 50
noRowsPerBlock = ROUNDDOWN (7292/50) = 145
Total order dalam 1 hari adalah sekitar 400 order
Total order dalam 1 tahun adalah 400 * (365 – 52) = 125200 order
Total kebutuhan baris dalam 1 tahun adalah 125200 baris
Total kebutuhan blok data adalah 125200 / 145 = 864
Jadi, total kebutuhan disk space adalah 864 * 8192 = 6912 KB
Estimasi pertumbuhan order dalam 1 tahun adalah 20 order.
Total kebutuhan baris dalam 1 tahun adalah 125200 + (20 * (365 – 52)) = 131460
baris.
259
Total kebutuhan blok data adalah 131460 / 145 = 907 blok data.
Jadi, total kebutuhan disk space adalah 907 * 8192 = 7256 KB
Estimasi pertumbuhan order dalam 5 tahun adalah 100 order.
Total kebutuhan baris dalam 1 tahun adalah 125200 + (100 * (365 – 52)) = 156500
baris.
Total kebutuhan blok data adalah 156500 / 145 = 1080 blok data.
Jadi, total kebutuhan disk space adalah 1080 * 8192 = 8640 KB
Tabel 3.56 Tabel Estimasi Penggunaan Kapasitas pada Tabel OrderDetail
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
OrderDetail kdDO kode DO char 10
kdBarang kode barang char 8
qtyDO quantity do integer 4
totalRowSize = 3 + ∑ (11 + 9 + 4) = 3 + 24 = 27
noRowsPerBlock = ROUNDDOWN (7292/27) = 270
Total order dalam 1 hari adalah sekitar 400 order
Total barang yang dipesan dalam 1 DO adalah sekitar 3 barang
Total order dalam 1 tahun adalah 3 * 400 * (365 – 52) = 375600 order
Total kebutuhan baris dalam 1 tahun adalah 375600 baris
Total kebutuhan blok data adalah 375600 / 270 = 1392
Jadi, total kebutuhan disk space adalah 1392 * 8192 = 11136 KB
Estimasi pertumbuhan order dalam 1 tahun adalah 20 order.
260
Total kebutuhan baris dalam 1 tahun adalah 3 * 420 * (365 – 52) = 394380 baris.
Total kebutuhan blok data adalah 394380 / 270 = 1461 blok data.
Jadi, total kebutuhan disk space adalah 1461 * 8192 = 11688 KB
Estimasi pertumbuhan order dalam 5 tahun adalah 100 order.
Total kebutuhan baris dalam 1 tahun adalah 3 * 500 * (365 – 52) = 469500 baris.
Total kebutuhan blok data adalah 469500 / 270 = 1739 blok data.
Jadi, total kebutuhan disk space adalah 1739 * 8192 = 13912 KB
Tabel 3.57 Tabel Estimasi Penggunaan Kapasitas pada Tabel OrderStaff
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
OrderStaff kodeDO kode DO char 10
kodeStaff kode staff char 5
totalRowSize = 3 + ∑ (11 + 6) = 3 + 17 = 20
noRowsPerBlock = ROUNDDOWN (7292/20) = 364
Total order dalam 1 hari adalah sekitar 400 order
Total staff yang menangani 1 DO adalah sekitar 3 staff
Total order dalam 1 tahun adalah 3 * 400 * (365 – 52) = 375600 order
Total kebutuhan baris dalam 1 tahun adalah 375600 baris
Total kebutuhan blok data adalah 375600 / 364 = 1032
Jadi, total kebutuhan disk space adalah 1032 * 8192 = 8256 KB
Estimasi pertumbuhan order dalam 1 tahun adalah 20 order.
Total kebutuhan baris dalam 1 tahun adalah 3 * 420 * (365 – 52) = 394380 baris.
261
Total kebutuhan blok data adalah 394380 / 364 = 1084 blok data.
Jadi, total kebutuhan disk space adalah 1084 * 8192 = 8672 KB
Estimasi pertumbuhan order dalam 5 tahun adalah 100 order.
Total kebutuhan baris dalam 1 tahun adalah 3 * 500 * (365 – 52) = 469500 baris.
Total kebutuhan blok data adalah 469500 / 364 = 1290 blok data.
Jadi, total kebutuhan disk space adalah 1290 * 8192 = 10320 KB
Tabel 3.58 Tabel Estimasi Penggunaan Kapasitas pada Tabel TelpCabang
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
BarangMa
suk
kdBarangMasuk kode barang masuk char 12
tanggalMasuk tanggal masuk datetime 8
kdStaff kode staff char 5
kdGudang kode gudang char 3
totalRowSize = 3 + ∑ (13 + 8 + 6 + 4) = 3 + 31 = 34
noRowsPerBlock = ROUNDDOWN (7292/34) = 214
Total barang masuk dalam 1 hari adalah sekitar 50 kali
Total barang masuk dalam 1 tahun adalah 50 * (365 – 52) = 15650
Total kebutuhan baris dalam 1 tahun adalah 15650 baris
Total kebutuhan blok data adalah 15650 / 214 = 74
Jadi, total kebutuhan disk space adalah 74 * 8192 = 592 KB
Estimasi pertumbuhan barang masuk dalam 1 tahun adalah 5 barang masuk.
Total kebutuhan baris dalam 1 tahun adalah 55 * (365 – 52) = 17215 baris.
262
Total kebutuhan blok data adalah 17215 / 214 = 81 blok data.
Jadi, total kebutuhan disk space adalah 81 * 8192 = 648 KB
Estimasi pertumbuhan barang masuk dalam 5 tahun adalah 25 barang masuk.
Total kebutuhan baris dalam 1 tahun adalah 75 * (365 – 52) = 23475 baris.
Total kebutuhan blok data adalah 23475 / 214 = 110 blok data.
Jadi, total kebutuhan disk space adalah 110 * 8192 = 880 KB
Tabel 3.59 Tabel Estimasi Penggunaan Kapasitas pada Tabel
BarangMasukDetail
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
BarangMa
sukDetail
kdBarangMasuk kode barang masuk char 12
kdBarang kode barang char 8
qtyBarang quantity barang integer 4
totalRowSize = 3 + ∑ (13 + 9 + 4) = 3 + 26 = 29
noRowsPerBlock = ROUNDDOWN (7292/29) = 251
Total barang masuk dalam 1 hari adalah sekitar 50 kali
Total barang yang ada pada saat barang masuk dalam 1 hari adalah sekitar 1000
barang
Total barang masuk detail dalam 1 tahun adalah 50 * 1000 * (365 – 52) = 15650000
Total kebutuhan baris dalam 1 tahun adalah 15650000 baris
Total kebutuhan blok data adalah 15650000 / 251 = 62351
Jadi, total kebutuhan disk space adalah 62351 * 8192 = 498808 KB
263
Estimasi pertumbuhan barang masuk dalam 1 tahun adalah 5 barang masuk.
Total kebutuhan baris dalam 1 tahun adalah 55 * 1000 * (365 – 52) = 17215000
baris.
Total kebutuhan blok data adalah 17215000 / 251 = 68586 blok data.
Jadi, total kebutuhan disk space adalah 68586 * 8192 = 548688 KB
Estimasi pertumbuhan barang masuk dalam 5 tahun adalah 25 barang masuk.
Total kebutuhan baris dalam 1 tahun adalah 75 * 1000 * (365 – 52) = 23475000
baris.
Total kebutuhan blok data adalah 23475000 / 251 = 93526 blok data.
Jadi, total kebutuhan disk space adalah 93526 * 8192 = 748208 KB
Tabel 3.60 Tabel Estimasi Penggunaan Kapasitas pada Tabel
BarangKeluar
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
BarangKelu
ar
kdBarangKeluar kode barang keluar char 12
tanggalKeluar tanggal keluarnya
barang
datetime 8
kdDO kode DO char 10
kdStaff kode staff char 5
kdGudang kode gudang char 3
totalRowSize = 3 + ∑ (13 + 8 + 11 + 6 + 4) = 3 + 42 = 45
noRowsPerBlock = ROUNDDOWN (7292/45) = 162
264
Total barang keluar dalam 1 hari adalah sekitar 400 kali
Total barang keluar dalam 1 tahun adalah 400 * (365 – 52) = 125200
Total kebutuhan baris dalam 1 tahun adalah 125200 baris
Total kebutuhan blok data adalah 125200 / 162 = 773
Jadi, total kebutuhan disk space adalah 773 * 8192 = 6184 KB
Estimasi pertumbuhan barang keluar dalam 1 tahun adalah 20 barang keluar.
Total kebutuhan baris dalam 1 tahun adalah 420 * (365 – 52) = 131460 baris.
Total kebutuhan blok data adalah 131460 / 162 = 812 blok data.
Jadi, total kebutuhan disk space adalah 812 * 8192 = 6496 KB
Estimasi pertumbuhan barang keluar dalam 5 tahun adalah 100 barang keluar.
Total kebutuhan baris dalam 1 tahun adalah 500 * (365 – 52) = 156500 baris.
Total kebutuhan blok data adalah 156500 / 162 = 967 blok data.
Jadi, total kebutuhan disk space adalah 967 * 8192 = 7736 KB
Tabel 3.61 Tabel Estimasi Penggunaan Kapasitas pada Tabel
BarangKeluarDetail
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
BarangKelu
arDetail
kdBarangKeluar kode barang keluar char 12
kdBarang kode barang char 8
qtyBarang quantity barang integer 4
totalRowSize = 3 + ∑ (13 + 9 + 4) = 3 + 26 = 29
noRowsPerBlock = ROUNDDOWN (7292/29) = 251
265
Total barang keluar dalam 1 hari adalah sekitar 400 kali
Total barang yang ada pada saat barang keluar dalam 1 hari adalah sekitar 1200
barang
Total barang keluar detail dalam 1 tahun adalah 400 * 1200 * (365 – 52) =
150240000
Total kebutuhan baris dalam 1 tahun adalah 150240000 baris
Total kebutuhan blok data adalah 150240000 / 251 = 598576
Jadi, total kebutuhan disk space adalah 598576 * 8192 = 4788608 KB
Estimasi pertumbuhan barang keluar dalam 1 tahun adalah 20 barang keluar.
Total kebutuhan baris dalam 1 tahun adalah 420 * 1200 * (365 – 52) = 157752000
baris.
Total kebutuhan blok data adalah 157752000 / 251 = 628495 blok data.
Jadi, total kebutuhan disk space adalah 628495 * 8192 = 5027960 KB
Estimasi pertumbuhan barang keluar dalam 5 tahun adalah 100 barang keluar.
Total kebutuhan baris dalam 1 tahun adalah 500 * 1200 * (365 – 52) = 187800000
baris.
Total kebutuhan blok data adalah 187800000 / 251 = 748208 blok data.
Jadi, total kebutuhan disk space adalah 748208 * 8192 = 5985664 KB
266
Tabel 3.62 Tabel Estimasi Penggunaan Kapasitas pada Tabel SuratJalan
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
SuratJalan kdSuratJalan kode surat jalan char 12
tglSuratJalan tanggal surat jalan date 8
kdBarangKeluar kode barang keluar char 12
kdStaff kode staff char 5
kdKend kode kendaraan char 4
totalRowSize = 3 + ∑ (13 + 8 + 13 + 6 + 5) = 3 + 45 = 48
noRowsPerBlock = ROUNDDOWN (7292/48) = 151
Total surat jalan dalam 1 hari adalah sekitar 400 surat jalan
Total kebutuhan baris dalam 1 tahun adalah 400 * (365-52) = 125200 baris
Total kebutuhan blok data adalah 125200 / 151 = 830
Jadi, total kebutuhan disk space adalah 830 * 8192 = 6640 KB
Estimasi pertumbuhan surat jalan dalam 1 tahun adalah 20 surat jalan.
Total kebutuhan baris dalam 1 tahun adalah 420 * (365-52) = 131460 baris.
Total kebutuhan blok data adalah 131460 / 151 = 871 blok data.
Jadi, total kebutuhan disk space adalah 871 * 8192 = 6968 KB
Estimasi pertumbuhan barang masuk dalam 5 tahun adalah 100 barang masuk.
Total kebutuhan baris dalam 1 tahun adalah 500 * (365 – 52) = 156500 baris.
Total kebutuhan blok data adalah 156500 / 151 = 1037 blok data.
Jadi, total kebutuhan disk space adalah 1037 * 8192 = 8296 KB
267
Tabel 3.63 Tabel Estimasi Penggunaan Kapasitas pada Tabel Retur
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
Retur kdRetur kode retur char 12
tanggalRetur tanggal retur date 8
keteranganRetur keterangan retur varchar 80
kodeDO kode DO char 10
kodeStaff kode staff char 5
totalRowSize = 3 + ∑ (13 + 8 + 80 + 11 + 6) = 3 + 109 = 112
noRowsPerBlock = ROUNDDOWN (7292/112) = 65
Total retur dalam 1 hari adalah sekitar 20 kali
Total retur dalam 1 tahun adalah 20 * (365 – 52) = 6260
Total kebutuhan baris dalam 1 tahun adalah 6260 baris
Total kebutuhan blok data adalah 6260 / 65 = 96
Jadi, total kebutuhan disk space adalah 96 * 8192 = 768 KB
Estimasi pertumbuhan retur dalam 1 tahun adalah 1 retur.
Total kebutuhan baris dalam 1 tahun adalah 21 * (365 – 52) = 6573 baris.
Total kebutuhan blok data adalah 6573 / 65 = 102 blok data.
Jadi, total kebutuhan disk space adalah 102 * 8192 = 816 KB
Estimasi pertumbuhan retur dalam 5 tahun adalah 5 retur.
Total kebutuhan baris dalam 5 tahun adalah 25 * (365 – 52) = 7825 baris.
Total kebutuhan blok data adalah 7825 / 65 = 121 blok data.
Jadi, total kebutuhan disk space adalah 121 * 8192 = 968 KB
268
Tabel 3.64 Tabel Estimasi Penggunaan Kapasitas pada Tabel ReturDetail
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
ReturDetail kdRetur kode retur char 12
kdBarang kode barang char 8
qtyRetur quantity retur integer 4
totalRowSize = 3 + ∑ (13 + 8 + 4) = 3 + 25 = 28
noRowsPerBlock = ROUNDDOWN (7292/28) = 260
Total retur dalam 1 hari adalah sekitar 20 kali
Total barang yang ada dalam retur adalah sekitar 3 barang
Total retur detail dalam 1 tahun adalah 20 * 3 * (365 – 52) = 18780
Total kebutuhan baris dalam 1 tahun adalah 18780 baris
Total kebutuhan blok data adalah 18780 / 260 = 73
Jadi, total kebutuhan disk space adalah 73 * 8192 = 584 KB
Estimasi pertumbuhan retur dalam 1 tahun adalah 1 retur.
Total kebutuhan baris dalam 1 tahun adalah 21 * 3 * (365 – 52) = 19719 baris.
Total kebutuhan blok data adalah 19719 / 260 = 76 blok data.
Jadi, total kebutuhan disk space adalah 76 * 8192 = 608 KB
Estimasi pertumbuhan retur dalam 5 tahun adalah 5 retur.
Total kebutuhan baris dalam 5 tahun adalah 25 * 3 * (365 – 52) = 23475 baris.
Total kebutuhan blok data adalah 23475 / 260 = 91 blok data.
Jadi, total kebutuhan disk space adalah 91 * 8192 = 728 KB
269
Tabel 3.65 Tabel Estimasi Penggunaan Kapasitas pada Tabel Faktur
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
Faktur kdFaktur kode faktur char 12
tanggalFaktur tanggal faktur date 8
jatuhTempo tanggal bayar date 8
kdDO kode do char 10
kdStaff kode staff char 5
totalRowSize = 3 + ∑ (13 + 8 + 8 + 11 + 6) = 3 + 47 = 50
noRowsPerBlock = ROUNDDOWN (7292/50) = 145
Total barang keluar dalam 1 hari adalah sekitar 400 kali
Total barang keluar dalam 1 tahun adalah 400 * (365 – 52) = 125200
Total kebutuhan baris dalam 1 tahun adalah 125200 baris
Total kebutuhan blok data adalah 125200 / 145 = 864
Jadi, total kebutuhan disk space adalah 864 * 8192 = 6912 KB
Estimasi pertumbuhan faktur dalam 1 tahun adalah 20 faktur.
Total kebutuhan baris dalam 1 tahun adalah 420 * (365 – 52) = 131460 baris.
Total kebutuhan blok data adalah 131460 / 145 = 907 blok data.
Jadi, total kebutuhan disk space adalah 907 * 8192 = 7256 KB
Estimasi pertumbuhan retur dalam 5 tahun adalah 5 retur.
Total kebutuhan baris dalam 5 tahun adalah 500 * (365 – 52) = 156500 baris.
Total kebutuhan blok data adalah 156500 / 145 = 1080 blok data.
Jadi, total kebutuhan disk space adalah 1080 * 8192 = 8640 KB
270
Tabel 3.66 Tabel Estimasi Penggunaan Kapasitas pada Tabel KasBank
Nama
Entitas
Atribut Deskripsi Tipe Data Ukuran
KasBank kdKasBank kode kas bank char 12
tanggalPembayar
an
tanggal
pembayaran
date 8
jumlahPembayar
an
jumlah
pembayaran
integer 4
kodeDO kode do char 10
kdStaff kode staff char 5
totalRowSize = 3 + ∑ (13 + 8 + 4 + 11 + 6) = 3 + 42 = 45
noRowsPerBlock = ROUNDDOWN (7292/45) = 162
Total kas bank dalam 1 hari adalah sekitar 400 kali
Total kas bank dalam 1 tahun adalah 400 * (365 – 52) = 125200
Total kebutuhan baris dalam 1 tahun adalah 125200 baris
Total kebutuhan blok data adalah 125200 / 162 = 773
Jadi, total kebutuhan disk space adalah 773 * 8192 = 6184 KB
Estimasi pertumbuhan kas bank dalam 1 tahun adalah 20 kas bank.
Total kebutuhan baris dalam 1 tahun adalah 420 * (365 – 52) = 131460 baris.
Total kebutuhan blok data adalah 131460 / 162 = 812 blok data.
Jadi, total kebutuhan disk space adalah 812 * 8192 = 6496 KB
Estimasi pertumbuhan retur dalam 5 tahun adalah 5 retur.
Total kebutuhan baris dalam 5 tahun adalah 500 * (365 – 52) = 156500 baris.
271
Total kebutuhan blok data adalah 156500 / 162 = 967 blok data.
Jadi, total kebutuhan disk space adalah 967 * 8192 = 7736 KB
Tabel 3.67 Tabel Estimasi Kapasitas Penyimpanan
Nama Tabel Kapasitas yang
dibutuhkan
Kapasitas yang
dibutuhkan pada
tahun pertama
Kapasitas yang
dibutuhkan pada
tahun kelima
Cabang 8 KB 8 KB 8 KB
TelpCabang 8 KB 8 KB 8 KB
FaxCabang 8 KB 8 KB 8 KB
RekCabang 8 KB 8 KB 8 KB
Divisi 8 KB 8 KB 8 KB
Staff 760 KB 816 KB 1024 KB
TelpStaff 248 KB 272 KB 344 KB
Users 232 KB 248 KB 312 KB
Customer 872 KB 912 KB 1048 KB
TelpCust 352 KB 360 KB 416 KB
FaxCust 352 KB 360 KB 416 KB
RekCust 896 KB 1120 KB 1288 KB
Gudang 8 KB 8 KB 8 KB
Kendaraan 8 KB 8 KB 8 KB
JenisKendaraan 8 KB 8 KB 8 KB
Barang 40 KB 40 KB 48 KB
JenisBarang 8 KB 8 KB 8 KB
LokasiBarang 224 KB 240 KB 336 KB
Orders 6912 KB 7256 KB 8640 KB
OrderDetail 11136 KB 11688 KB 13912 KB
OrderStaff 8256 KB 8672 KB 10320 KB
272
BarangMasuk 592 KB 648 KB 880 KB
BarangMasukDetail 498808 KB 548688 KB 748208 KB
BarangKeluar 6184 KB 6496 KB 7736 KB
BarangKeluarDetail 4788608 KB 5027960 KB 5985664 KB
SuratJalan 6640 KB 6968 KB 8296 KB
Retur 768 KB 816 KB 968 KB
ReturDetail 584 KB 608 KB 728 KB
Faktur 6912 KB 7256 KB 8640 KB
KasBank 6184 KB 6496 KB 7736 KB
Total: 5345632 KB 5637992 KB 6807032 KB
Jadi, estimasi kebutuhan pada tahun pertama adalah 5.345.632 KB, estimasi
kebutuhan pada tahun pertama dengan pertumbuhannya adalah 5.637.992 KB, dan
estimasi kebutuhan pada tahun kelima dengan pertumbuhannya adalah 6.807.032
KB.
273
3.11.3 Merancang User View
Tabel 3.68 Tabel User View
User View Tabel
Sales Admin SAview
Orders
OrderDetail
StaffOrder
Customers
TelpCust
FaxCust
RekCust
Staff
TelpStaff
Barang
LokasiBarang
JenisBarang
Retur
ReturDetail
Gudang
Kepala Gudang KGview Gudang
Barang
LokasiBarang
JenisBarang
274
Orders
OrderDetail
OrderStaff
BarangKeluar
BarangKeluarDetail
BarangMasuk
BarangMasukDetail
Admin Gudang AGView Gudang
Kendaraan
JenisKendaraan
BarangKeluar
BarangKeluarDetail
SuratJalan
Inventory Control ICView Orders
OrderDetail
OrderStaff
Account Receivable ARView Orders
OrderDetail
OrderStaff
Faktur
Finance FIView Orders
OrderDetail
OrderStaff
275
KasBank
Admin ADView Cabang
TelpCabang
FaxCabang
RekCabang
Divisi
Staff
TelpStaff
Users
Customer
TelpCust
FaxCust
RekCust
Gudang
Kendaraan
JenisKendaraan
Barang
JenisBarang
LokasiBarang
Orders
OrderDetail
OrderStaff
BarangMasuk
276
BarangMasukDetail
BarangKeluar
BarangKeluarDetail
SuratJalan
Retur
ReturDetail
Faktur
KasBank
277
3.11.4 Merancang Mekanisme Keamanan
Tabel 3.69 Tabel Keamanan Basis Data
User View Tabel
Sales Admin
Kepala Gudang
Admin Gudang
Cabang TelpCabang FaxCabang RekCabang Divisi Staff R TelpStaff R Users R R R Customer R TelpCust R FaxCust R RekCust R Gudang R R R Kendaraan R JenisKendaraan R Barang R JenisBarang R LokasiBarang R Orders I, R R OrderDetail I, R R OrderStaff I, R R BarangMasuk I, R BarangMasukDetail I, R BarangKeluar I, R R BarangKeluarDetail I, R R SuratJalan I, R Retur I, R ReturDetail I, R Faktur KasBank
278
Tabel 3.70 Tabel Keamanan Basis Data
User View Tabel
Inventory Control Account Receivable
Finance
Cabang TelpCabang FaxCabang RekCabang Divisi Staff TelpStaff Users R R R Customer TelpCust FaxCust RekCust Gudang Kendaraan JenisKendaraan Barang JenisBarang LokasiBarang Orders R, U R R OrderDetail R, U R R OrderStaff R, U R R BarangMasuk BarangMasukDetail BarangKeluar BarangKeluarDetail SuratJalan Retur ReturDetail Faktur I, R KasBank I, R
279
Tabel 3.71 Tabel Keamanan Basis Data User View Table
BOD Admin
Cabang I, R, U, D TelpCabang I, R, U, D FaxCabang I, R, U, D RekCabang I, R, U, D Divisi I, R, U, D Staff I, R, U, D TelpStaff I, R, U, D Users I, R, U, D Customer R I, R, U, D TelpCust I, R, U, D FaxCust I, R, U, D RekCust I, R, U, D Gudang I, R, U, D Kendaraan I, R, U, D JenisKendaraan I, R, U, D Barang R I, R, U, D JenisBarang R I, R, U, D LokasiBarang R I, R, U, D Orders R, U, D OrderDetail R, U, D OrderStaff R, U, D BarangMasuk R, U, D BarangMasukDetail R, U, D BarangKeluar R, U, D BarangKeluarDetail R, U, D SuratJalan R, U, D Retur R, U, D ReturDetail R, U, D Faktur R, U, D KasBank R, U, D
280
3.12 Pemilihan DBMS
Pertimbangan DBMS yang akan digunakan untuk implementasi perancangan
basis data yang diusulkan adalah Oracle Database 10g release 2 dan IBM DB2
9.1 sebagai DBMS yang memiliki kemampuan dalam grid computing dan
skalabilitas yang sesuai untuk penampungan data-data pada sistem yang
diusulkan .
Berdasarkan hasil penelitian Comparative Management Cost Studies (CMCS)
yang membandingkan Oracle Database 10g dengan IBM DB2 9.1
(http://www.oracle.com/database/docs/oracle10g-vs-db2-9.1-cmcs.pdf),
didapatkan hasil analisis perbandingan Oracle Database 10g dan DB2 9.1:
1. DBA (Database Administrator) dapat melakukan tugas-tugas administratif
dengan waktu 38% lebih cepat jika menggunakan Oracle Database 10g
dibandingkan DB2
2. Oracle Database 10g memerlukan langkah-langkah 35% lebih sedikit
dibanding DB2 dalam melakukan tugas-tugas standard RDBMS
3. Keuntungan dari produktivitas DBA menghasilkan $31,654 per DBA per
Hari untuk pemilihan Oracle Database 10g
4. Dalam performa dan tuning, Oracle Database 10g menggunakan waktu 76%
lebih cepat dan 50% kompleksitas yang lebih mudah dibandingkan dengan
DB2
5. Dalam backup dan recovery, Oracle Database 10g menggunakan waktu 50%
lebih cepat dan 62% langkah yang lebih sedikit dibandingkan DB2
281
6. Instalasi DB2 menggunakan waktu 78% lebih cepat dibandingkan Oracle
Database 10g karena komponen yang digunakan lebih sedikit.
Tabel 3.72 Tabel Perbandingan Hasil Keseluruhan DB2 dengan Oracle
Result Summary
Time (min) Complecity (steps)
DB2 Oracle DB2 Oracle
Overall Total 64.55 46.53 51 27
% difference –(DB2 –
Oracle)DB2
28%
47%
DBA Workday Savings 38% 35%
Tabel 3.73 Tabel Perbandingan Instalasi dan Pengaturan DB2 dengan Oracle
Installation and Simple “Out-of-Box” Setup
Time (min) Complecity (steps)
DB2 Oracle DB2 Oracle
Category Sub-Total 15 26.63 12 6
% difference –(DB2 –
Oracle)DB2
-78%
50%
DBA Workday Savings -4% 3%
Tabel 3.74 Tabel Perbandingan Database Administration DB2 dengan Oracle
Day-to-Day Database Administration
Time (min) Complecity (steps)
DB2 Oracle DB2 Oracle
Category Sub-Total 11.75 6.57 16 11
282
% difference –(DB2 –
Oracle)DB2
44%
31%
DBA Workday Savings 15% 11%
Tabel 3.75 Tabel Perbandingan Backup dan Recovery DB2 dengan Oracle
Backup & Recovery
Time (min) Complecity (steps)
DB2 Oracle DB2 Oracle
Category Sub-Total 16.55 8.33 13 5
% difference –(DB2 –
Oracle)DB2
50%
62%
DBA Workday Savings 7% 9%
Tabel 3.76 Tabel Perbandingan Diagnosa Performa dan Tuning DB2 dengan
Oracle
Performance Diagnostics and Tuning
Time (min) Complecity (steps)
DB2 Oracle DB2 Oracle
Category Sub-Total 21.25 5 10 5
% difference –(DB2 –
Oracle)DB2
76%
50%
DBA Workday Savings 20% 13%
Dengan mempertimbangkan hasil diatas, DBMS yang dipilih adalah Oracle.
283
3.13 Perancangan Aplikasi
3.13.1 Struktur Menu
Gambar 3.30 Struktur Menu Sales Admin
284
Gambar 3.31 Struktur Menu Kepala Gudang
Gambar 3.32 Struktur Menu Admin Gudang
285
Gambar 3.33 Struktur Menu Inventory Control
Gambar 3.34 Struktur Menu Account Receivable
286
Gambar 3.35 Struktur Menu Finance
287
Gambar 3.36 Struktur Menu Board of Directors
288
Gambar 3.37 Struktur Menu Admin
289
3.13.2 State Transition Diagram
Gambar 3.38 State Transition Diagram Halaman Login
290
Gambar 3.39 State Transition Diagram Halaman Home SA
291
Gambar 3.40 State Transition Diagram Halaman Home KG
292
Gambar 3.41 State Transition Diagram Halaman Home AG
Gambar 3.42 State Transition Diagram Halaman Home IC
293
Gambar 3.43 State Transition Diagram Halaman Home AR
Gambar 3.44 State Transition Diagram Halaman Home FI
294
Gambar 3.45 State Transition Diagram Halaman Home BOD
295
Gambar 3.46 State Transition Diagram Halaman Home Admin
296
3.13.3 Perancangan Layar
Gambar 3.47 Perancangan Layar Halaman Login
Gambar 3.48 Perancangan Layar Halaman Home untuk SA
297
Gambar 3.49 Perancangan Layar Halaman Delivery Order untuk SA
Gambar 3.50 Perancangan Layar Halaman Input DO untuk SA
298
Gambar 3.51 Perancangan Layar Halaman Draft DO untuk SA
Gambar 3.52 Perancangan Layar Halaman Edit Draft DO untuk SA
299
Gambar 3.53 Perancangan Layar Halaman Lihat DO untuk SA
Gambar 3.54 Perancangan Layar Halaman Retur Barang untuk SA
300
Gambar 3.55 Perancangan Layar Halaman Input Retur untuk SA
Gambar 3.56 Perancangan Layar Halaman Lihat Retur untuk SA
301
Gambar 3.57 Perancangan Layar Halaman Lihat Customer untuk SA
Gambar 3.58 Perancangan Layar Halaman Home untuk Kepala Gudang
302
Gambar 3.59 Perancangan Layar Halaman Delivery Order untuk Kepala
Gudang
303
Gambar 3.60 Perancangan Layar Halaman Delivery Order Detail untuk
Kepala Gudang
304
Gambar 3.61 Perancangan Layar Halaman Barang Masuk untuk Kepala
Gudang
305
Gambar 3.62 Perancangan Layar Halaman Barang Keluar untuk Kepala
Gudang
306
Gambar 3.63 Perancangan Layar Halaman Home untuk Admin Gudang
Gambar 3.64 Perancangan Layar Halaman Surat Jalan untuk Admin
Gudang
307
Gambar 3.65 Perancangan Layar Halaman Input Surat Jalan untuk Admin
Gudang
308
Gambar 3.66 Perancangan Layar Halaman Lihat Surat Jalan untuk Admin
Gudang
Gambar 3.67 Perancangan Layar Halaman Home untuk Inventory Control
(IC)
309
Gambar 3.68 Perancangan Layar Halaman Delivery Order untuk IC
Gambar 3.69 Perancangan Layar Halaman Delivery Order Detail untuk IC
310
Gambar 3.70 Perancangan Layar Halaman Home untuk Account Receivable
(AR)
Gambar 3.71 Perancangan Layar Halaman Faktur untuk AR
311
Gambar 3.72 Perancangan Layar Halaman Input Faktur untuk AR
Gambar 3.73 Perancangan Layar Halaman Lihat Faktur untuk AR
312
Gambar 3.74 Perancangan Layar Halaman Home untuk Finance
Gambar 3.75 Perancangan Layar Halaman Kas Bank untuk Finance
313
Gambar 3.76 Perancangan Layar Halaman Input Kas Bank untuk Finance
Gambar 3.77 Perancangan Layar Halaman Lihat Kas Bank untuk Finance
314
Gambar 3.78 Perancangan Layar Halaman Home untuk BOD
Gambar 3.79 Perancangan Layar Halaman Laporan Penjualan untuk BOD
315
Gambar 3.80 Perancangan Layar Halaman Home untuk Admin
Gambar 3.81 Perancangan Layar Halaman Berita untuk Admin
316
Gambar 3.82 Perancangan Layar Halaman Cabang untuk Admin
Gambar 3.83 Perancangan Layar Halaman Tambah Cabang untuk Admin
317
Gambar 3.84 Perancangan Layar Halaman Edit Cabang untuk Admin
Gambar 3.85 Perancangan Layar Halaman Divisi untuk Admin
318
Gambar 3.86 Perancangan Layar Halaman Tambah Divisi untuk Admin
Gambar 3.87 Perancangan Layar Halaman Edit Divisi untuk Admin
319
Gambar 3.88 Perancangan Layar Halaman Staff untuk Admin
Gambar 3.89 Perancangan Layar Halaman Tambah Staff untuk Admin
320
Gambar 3.90 Perancangan Layar Halaman Edit Staff untuk Admin
Gambar 3.91 Perancangan Layar Halaman User untuk Admin
321
Gambar 3.92 Perancangan Layar Halaman Tambah User untuk Admin
Gambar 3.93 Perancangan Layar Halaman Edit User untuk Admin
322
Gambar 3.94 Perancangan Layar Halaman Gudang untuk Admin
Gambar 3.95 Perancangan Layar Halaman Tambah Gudang untuk Admin
323
Gambar 3.96 Perancangan Layar Halaman Edit Gudang untuk Admin
Gambar 3.97 Perancangan Layar Halaman Kendaraan untuk Admin
324
Gambar 3.98 Perancangan Layar Halaman Tambah Kendaraan untuk
Admin
Gambar 3.99 Perancangan Layar Halaman Edit Kendaraan untuk Admin
325
Gambar 3.100 Perancangan Layar Halaman Barang untuk Admin
Gambar 3.101 Perancangan Layar Halaman Tambah Barang untuk Admin
326
Gambar 3.102 Perancangan Layar Halaman Edit Barang untuk Admin
Gambar 3.103 Perancangan Layar Halaman Customer untuk Admin
327
Gambar 3.104 Perancangan Layar Halaman Tambah Customer untuk
Admin
328
Gambar 3.105 Perancangan Layar Halaman Edit Customer untuk Admin
Gambar 3.106 Perancangan Layar Halaman Transaksi untuk Admin