Post on 11-Mar-2019
74
BAB 4
PERANCANGAN DAN IMPLEMENTASI
4.1 Perancangan Basis Data
Pada skripsi ini akan digunakan metode top down dalam merancang sistem basis
data pada PT Multitech Label Indonesia. Perancangan basis data yang dilakukan
pada PT Multitech Label Indonesia dibagi menjadi tiga tahap. Ketiga tahap itu
adalah :
1. perancangan basis data konseptual
2. perancangan basis data logikal
3. perancangan basis data fisikal
4.1.1 Perancangan Basis Data Konseptual
Perancangan basis data konseptual adalah proses pembuatan model basis
data untuk masing-masing view yang spesifik dengan menggunakan informasi
dan data yang diperoleh dari perusahaan, bebas dari segala pertimbangan fisikal.
Perancangan basis data konseptual ini terbagi ke dalam beberapa langkah penting
sebagai berikut :
1. mengidentifikasi entity
2. mengidentifikasi relasi antar entity
3. mengidentifikasi atribut yang dimiliki masing-masing entity
4. mengidentifikasi candidate key dan primary key masing-masing entity
5. memeriksa redundansi pada model konseptual
6. validasi model konseptual terhadap transaksi user
75
4.1.1.1 Identifikasi Entity
Tujuan dari tahapan ini adalah untuk menentukan entities utama
yang dibutuhkan dalam perancangan sistem basis data.
Tabel 4.1 identitfikasi entity
Entity Keterangan
pelanggan entity yang berisi data tentang pelanggan PT Multitech Label
Indonesia
penjualan entity yang berisi data penjualan yang dilakukan PT
Multitech Label Indonesia
OrderDitolak entity yang berisi data order yang ditolak perusahaan beserta
alasan penolakannya.
SPK entity yang berisi data SPK yang diberikan oleh GM ke
bagian produksi
sales entity yang berisi data sales yang menerima penjualan
pembelian entity yang berisi data pembelian bahan baku yang dilakukan
PT Multitech Label Indonesia
barang entity yang berisi data barang yang diproduksi oleh PT.
Multitech Label Indonesia
bank entity yang menyimpan data bank dimana PT. Multitech
Label Indonesia menerima pembayaran penjualan maupun
melakukan pembayaran pembelian.
bahan entity yang berisi data bahan baku yang diperlukan untuk
kebutuhan produksi
produksi entity yang berisi data produksi berjalan pada PT Multitech
Label Indonesia
returPenjualan entity yang berisi data penjualan barang yang dikembalikan
oleh pelanggan
returPembelian entity yang berisi data pembelian barang yang dikembalikan
ke pemasok
76
pemasok entity yang berisi data pemasok dan harga bahan baku
pengiriman entity yang berisi data pengiriman barang hasil produksi ke
pelanggan
pembayaranJual entity yang berisi data pembayaran atas penjualan
pembayaranBeli entity yang berisi data pembayaran atas pembelian
4.1.1.2 Identifikasi Tipe Relasional
Tahap ini dilakukan untuk menentukan hubungan antar entity
yang telah teridentifikasi. Tahap ini juga terbagi ke dalam beberapa
langkah :
1. membuat ERD (Entity Relationship Diagram)
Pembuatan ERD (Entity Relationship Diagram) akan menunjukkan
hubungan yang terjadi antara entiti. Entiti yang akan ditampilkan
dalam ERD (Entity Relationship Diagram) didapatkan dari
identifikasi entiti yang telah dilakukan pada langkah sebelumnya.
Entiti yang ada adalah entiti pelanggan, penjualan, OrderDitolak, SPK,
sales, pembelian, barang, bank, bahan, produksi, returPenjualan,
returPembelian, pemasok, pengiriman, pembayaranJual,
pembayaranBeli. Selain itu, didalam ERD (Entity Relationship
Diagram) awal ini akan dijelaskan hubungan multiplicity yang terjadi
antara entiti yang saling berhubungan. Berikut ERD (Entity
Relationship Diagram) konseptual awal :
77
Gambar 4.1 ERD Konseptual Awal
78
2. menentukan mutiplicity dari model relasional
Tabel 4.2 Multiplicity model relasional
entity multiplicity hubungan entity multiplicity
penjualan 1..1
1..*
1..1
1..1
1..1
melakukan
menjual
melakukan
melakukan
memiliki
pembayaranJual
barang
pengiriman
returPenjualan
produksi
1..*
1..*
1..*
0..*
1..*
pembelian 1..1
1..*
1..1
1..*
melakukan
membeli
melakukan
membeli dari
pembayaranBeli
bahan
returPembelian
pemasok
1..*
1..*
0..*
1..1
produksi 1..*
1..1
1..*
meminta
memiliki
menghasilkan
bahan
SPK
barang
1..*
1..1
1..1
pelanggan 1..1
1..1
memiliki
memesan
OrderDitolak
penjualan
1..*
1..*
pembayaranJual 1..* memiliki bank 1..1
pembayaranBeli 1..* memiliki bank 1..1
pengiriman 1..* mengirim barang 1..*
bahan 1..* memiliki pemasok 1..*
sales 1..1 melakukan penjualan 1..*
returPembelian 0..* mengembalikan bahan 1..*
returPenjualan 0..* mengembalikan barang 1..*
4.1.1.3 Identifikasi dan Asosiasi Atribut Suatu Entity
Dari faktur-faktur dan dokumen-dokumen lainnya yang
didapatkan dari sistem berjalan, dapat diekstrak atribut-atribut untuk
masing-masing entity yang telah didefinisikan di atas.
79
1. Entity pelanggan
Tabel 4.3 Definisi atribut Entity pelanggan
Atribut Tipe
Data
Uku
ran
Keterangan Nu
ll
Multi
valued
Deri
ved
kdPelanggan
namaPelanggan
alamatPelanggan
telpPelanggan
faxPelanggan
karakter
karakter
karakter
karakter
karakter
8
30
100
15
15
Kode Pelanggan
Nama Pelanggan
Alamat Pelanggan
Telepon Pelanggan
Fax Pelanggan
T
T
T
T
Y
T
T
T
Y
Y
T
T
T
T
T
2. Entity penjualan
Tabel 4.4 Definisi atribut Entity penjualan
Atribut Tipe
Data
Uku
ran
Keterangan Nu
ll
Multi
valued
Deri
ved
kdSO
tglSO
kdPelanggan
namaPelanggan
alamatPelanggan
kdBarang
namaBarang
satuanBarang
hargaSatuan
kuantitas
jumlahHarga
totalPenjualan
keterangan
namaSales
karakter
tanggal
karakter
karakter
karakter
karakter
karakter
karakter
desimal
bilangan
desimal
desimal
teks
karakter
10
8
30
100
8
25
15
10, 2
10, 2
10, 2
30
Kode Sales Order
Tanggal Sales Order
Kode pelanggan
Nama pelanggan
Alamat pelanggan
Kode barang
Nama barang
Satuan yang digunakan
Harga satuan barang
Jumlah yang dipesan
Jumlah harga barang
Harga total penjualan
Keterangan tambahan
Nama sales
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
Y
Y
Y
Y
Y
Y
T
T
T
T
T
T
T
T
T
T
T
T
T
Y
Y
T
T
80
3. Entity pembelian
Tabel 4.5 Definisi atribut Entity pembelian
Atribut Tipe
Data
Uku
ran
Keterangan Nu
ll
Multi
valued
Deri
ved
kdPO
tglPO
namaPemasok
alamat
kdBahan
namaBahan
satuanBahan
hargaSatuan
kuantitas
jumlahHarga
totPembelian
keterangan
karakter
tanggal
karakter
karakter
karakter
karakter
karakter
desimal
bilangan
desimal
desimal
teks
10
25
100
8
25
10
10,2
10,2
10,2
Kode Purchase Order
Tanggal Purchase Order
Nama Pemasok
Alamat Pemasok
Kode bahan yang dipesan
Nama bahan yang dipesan
Satuan yang digunakan
Harga satuan barang
Jumlah yang dibeli
Jumlah harga per barang
Harga total pembelian
Keterangan tambahan
T
T
T
T
T
T
T
T
T
T
T.
T
T
T
T
T
Y
Y
Y
Y
Y
Y
T
T
T
T
T
T
T
T
T
T
T
Y
Y
T
4. Entity Produksi
Tabel 4.6 Definisi atribut Entity produksi
Atribut Tipe
Data
Ukur
an
Keterangan Nu
ll
Multi
valued
Deri
ved
kdProduksi
tglAwalProduksi
deadline
kdSO
kdBarang
namaBarang
kdBahan
namaBahan
karakter
tanggal
tanggal
karakter
karakter
karakter
karakter
karakter
8
8
8
25
10
30
Kode produksi
Tanggal produksi mulai
Deadline produksi
Kode Sales Order
KodeBarang
Nama Barang
Kode bahan
Nama bahan
T
T
T
T
T
T
T
T
T
T
T
T
T
T
Y
Y
T
T
T
T
T
T
T
T
81
kuantitasBahan
satuanBahan
caraCetak
finishing
keterangan
bilangan
karakter
karakter
karakter
teks
12
30
40
Jumlah bahan dibutuhkan
Satuan yang digunakan
Cara cetak
Finishing digunakan
Keterangan tambahan
T
T
T
T
T
Y
Y
T
T
T
T
T
T
T
T
5. Entity Bahan
Tabel 4.7 Definisi atribut Entity bahan
Atribut Tipe
Data
Ukur
an
Keterangan Nu
ll
Multi
valued
Deri
ved
kdBahan
namaBahan
satuanBahan
jumlahMin
jumlahStok
keterangan
namaPemasok
tglBeliAkhir
karakter
karakter
karakter
bilangan
bilangan
teks
karakter
tanggal
8
40
20
30
Kode bahan
Nama bahan
Satuan yang digunakan
Jumlah minimal tersedia
Jumlah bahan tersedia
Keterangan tentang bahan
Nama pemasok bahan
Tanggal beli terakhir
T
T
T
T
T
T
T
T
T
T
T
T
T
T
Y
T
T
T
T
T
T
T
T
T
6. Entity returPembelian
Tabel 4.8 Definisi atribut Entity returPembelian
Atribut Tipe
Data
Ukur
an
Keterangan Nu
ll
Multi
valued
Deri
ved
kdReturBeli
kdPO
tglRetur
kdBahan
namaBahan
satuanBahan
karakter
karakter
tanggal
karakter
karakter
karakter
8
10
8
40
10
Kode retur pembelian
Kode Purchase Order
Tanggal retur
Kode bahan digunakan
Nama bahan
Satuan bahan
T
T
T
T
T
T
T
T
T
Y
Y
Y
T
T
T
T
T
T
82
kuantitas
keterangan
bilangan
teks
Jumlah diretur
Penjelasan alasan retur
T
Y
Y
Y
T
T
7. Entity returPenjualan
Tabel 4.9 Definisi atribut Entity returPenjualan
Atribut Tipe
Data
Ukur
an
Keterangan Nu
ll
Multi
valued
Deri
ved
kdReturJual
kdSO
tglRetur
kdBarang
namaBarang
satuanBarang
kuantitas
keterangan
karakter
karakter
tanggal
karakter
karakter
karakter
bilangan
teks
8
10
8
40
10
Kode retur penjualan
Kode Sales Order
Tanggal retur
Kode barang
Nama barang
Satuan barang
Jumlah diretur
Penjelasan alasan retur
T
T
T
T
T
T
T
Y
T
T
T
Y
Y
Y
Y
Y
T
T
T
T
T
T
T
T
8. Entity SPK
Tabel 4.10 Definisi atribut entity SPK
Atribut Tipe
Data
Ukur
an
Keterangan Nu
ll
Multi
valued
Deri
ved
kdSPK
tglSPK
deadline
kdSO
kdBarang
namaBarang
kdBahan
namaBahan
kuantitas
karakter
tanggal
tanggal
karakter
karakter
karakter
karakter
karakter
bilangan
8
8
8
25
10
30
Kode SPK
Tanggal keluar SPK
Deadline produksi
Kode Sales Order
Kode Barang
Nama Barang
Kode bahan
Nama bahan
Bahan yang dibutuhkan
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
Y
Y
Y
T
T
T
T
T
T
T
T
T
83
satuanBahan
caraCetak
finishing
keterangan
karakter
karakter
karakter
teks
12
30
40
Satuan yang digunakan
Cara cetak
Finishing
Keterangan tambahan
T
T
T
T
Y
T
T
T
T
T
T
T
9. Entity orderDitolak
Tabel 4.11 Definisi atribut entity orderDitolak
Atribut Tipe
Data
Ukur
an
Keterangan Nu
ll
Multi
valued
Deri
ved
kdOrder
tglOrder
namaPelanggan
telpPelanggan
faxPelanggan
namaBarangTolak
keterangan
alasanPenolakan
karakter
tanggal
karakter
karakter
karakter
karakter
teks
teks
10
30
15
15
40
Kode order
Tanggal order
Nama pelanggan
No telepon pelanggan
No fax pelanggan
Nama barang ditolak
Rincian order
Alasan penolakan
T
T
T
T
Y
T
Y
T
T
T
T
T
T
Y
Y
Y
T
T
T
T
T
T
T
T
10. Entity pengiriman
Tabel 4.12 Definisi atribut entity pengiriman
Atribut Tipe
Data
Ukur
an
Keterangan Nu
ll
Multi
valued
Deri
ved
kdDO
tglPengiriman
kdSO
kdBarang
namaBarang
kuantitasBarang
satuanBarang
karakter
tanggal
karakter
karakter
karakter
bilangan
karakter
10
10
10
30
12
Kode Delivery Order
Tanggal pengiriman
Kode Sales Order
Kode barang
Nama barang
Jumlah barang
Satuan barang
T
T
T
T
T
T
T
T
T
T
Y
Y
Y
Y
T
T
T
T
T
T
T
84
namaPenerima karakter 30 Nama penerima T T T
11. Entity pemasok
Tabel 4.13 Definisi atribut entity pemasok
Atribut Tipe
Data
Ukur
an
Keterangan Null Multi
valued
Derive
d
kdPemasok
namaPemasok
alamatPemasok
telpPemasok
faxPemasok
karakter
karakter
karakter
karakter
karakter
8
30
100
15
15
Kode Pemasok
Nama Pemasok
Alamat Pemasok
Telepon Pemasok
Fax Pemasok
T
T
T
T
Y
T
T
T
Y
Y
T
T
T
T
T
12. Entity pembayaranBeli
Tabel 4.14 Definisi atribut entity pembayaranBeli
Atribut Tipe
Data
Ukur
an
Keterangan Nu
ll
Multi
valued
Deri
ved
kdBayarBeli
kdPO
tglBayar
caraBayar
namaBank
cabang
noGiro
tglJatuhTempo
jumlahBayar
keterangan
karakter
karakter
tanggal
karakter
karakter
karakter
karakter
tanggal
desimal
teks
10
10
30
20
20
20
10, 2
Kode bayar beli
Kode Purchase Order
Tanggal pembayaran
Cara bayar
Nama bank
Nama cabang bank
No rekening giro
Tanggal jatuh tempo
Total dibayar
Catatan tambahan
T
T
T
Y
T
T
Y
Y
T
Y
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
85
13. Entity pembayaranJual
Tabel 4.15 Definisi atribut entity pembayaranJual
Atribut Tipe
Data
Ukur
an
Keterangan Nu
ll
Multi
valued
Deri
ved
kdBayarJual
kdSO
tglBayar
caraBayar
namaBank
cabang
noGiro
tglJatuhTempo
jumlahBayar
keterangan
karakter
karakter
tanggal
karakter
karakter
karakter
karakter
tanggal
desimal
teks
10
10
30
20
20
10
10, 2
Kode bayar jual
Kode Sales Order
Tanggal pembayaran
Cara bayar
Nama bank
Nama cabang bank
No rekening giro
Tanggal jatuh tempo
Total dibayar
Catatan tambahan
T
T
T
Y
T
T
T
T
T
Y
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
14. Entity bank
Tabel 4.16 Definisi atribut entity Bank
Atribut Tipe
Data
Ukur
an
Keterangan Nu
ll
Multi
valued
Deri
ved
kdBank
namaBank
namaCabang
keterangan
karakter
karakter
karakter
teks
3
40
30
Kode bank
Nama bank
Nama cabang bank
Keterangan
T
T
T
T
T
T
T
T
T
T
T
T
86
15. Entity Barang
Tabel 4.17 Definisi atribut entity Barang
Atribut Tipe
Data
Ukur
an
Keterangan Nu
ll
Multi
valued
Deri
ved
kdBarang
namaBarang
satuanBarang
keterangan
karakter
karakter
karakter
teks
8
40
20
Kode barang
Nama barang
Satuan yang digunakan
Keterangan
T
T
T
T
T
T
T
T
T
T
T
T
16. Entity Sales
Tabel 4.18 Definisi atribut entity sales
Atribut Tipe
Data
Ukur
an
Keterangan Nu
ll
Multi
valued
Deri
ved
kdSales
namaSales
alamatSales
telpSales
karakter
karakter
karakter
karakter
3
40
100
15
Kode sales
Nama sales
Alamat sales
Nomor telepon sales
T
T
T
T
T
T
T
Y
T
T
T
T
4.1.1.4 Identifikasi Candidate dan Primary Key
Dari entities yang telah teridentifikasi di atas, dapat dijabarkan
candidate key dan primary key masing-masing entity sebagai berikut :
Tabel 4.19 Identifikasi Candidate Key dan Primary Key
Entity Candidate Key Primary Key
penjualan kdSO
kdPelanggan + tglSO
kdSO
87
pembelian kdPO
kdPemasok + tglPO
kdPO
pengiriman kdDO
kdSO + tglPengiriman
kdDO
returPenjualan kdReturPenjualan
kdSO + tglRetur
kdReturPenjualan
returPembelian kdReturPembelian
kdPO + tglRetur
kdReturPembelian
produksi kdProduksi
kdSO + kdBarang
kdProduksi
bahan kdBahan
namaBahan
kdBahan
pelanggan kdPelanggan
namaPemasok + alamatPemasok
kdPelanggan
pemasok kdPemasok
namaPemasok + alamatPemasok
kdPemasok
pembayaranJual kdSO + kdPelanggan
kdBayarJual
kdBayarJual
pembayaranBeli kdPO + kdPemasok
kdBayarBeli
kdBayarBeli
orderDitolak kdOrder
kdPelanggan + tglOrder
kdOrder
bank kdBank
namaBank+namaCabang
kdBank
sales kdSales kdSales
SPK kdSPK kdSPK
barang kdBarang kdBarang
88
Gambar 4.2 ERD konseptual Awal dengan Primary Key
89
4.1.1.5 Memeriksa Redundansi pada Model Konseptual
4.1.1.5.1 Memeriksa Hubungan One-to-One (1:1)
Terdapat 2 entity yang sama pada model ERD konseptual
pada sistem ini, dimana 2 entity ini merepresentasikan objek yang sama,
yaitu entity produksi dan entity SPK.
Gambar 4.3 Mengevaluasi Hubungan 1:1 Entity Produksi dan SPK
4.1.1.5.2 Menghilangkan Hubungan Redundan
Suatu hubungan disebut redundan jika informasi yang sama
dapat diperoleh melalui hubungan lain. Dalam kasus perancangan
sistem basis data ini kami tidak menemukan adanya hubungan redundan.
4.1.1.6 Validasi Model Konseptual dengan User Transaction
Validasi ini dilakukan dengan tujuan untuk memastikan bahwa
rancangan sistem basis data ini dapat memenuhi kebutuhan transaksi yang
diperlukan oleh user sistem.
Data Entry, Update & Deletion pada pelanggan, pemasok, sales,
barang, bahan, bank, penjualan, pembelian, produksi, pengiriman,
pembayaran, retur.
90
Data Queries pada basis data :
a. Menampilkan data pelanggan yang melakukan pemesanan.
b. Menampilkan rincian data penjualan.
c. Menampilkan rincian data pembelian.
d. Menampilkan rincian data retur penjualan untuk SO tertentu.
e. Menampilkan rincian data retur pembelian untuk PO tertentu.
f. Menampilkan data pemasok untuk bahan tertentu.
g. Menampilkan rincian data bahan.
h. Menampilkan barang yang dikirim dengan Kode SO tertentu.
i. Menampilkan rincian produksi-produksi yang dilakukan untuk
SO tertentu.
j. Menampilkan daftar bahan yang digunakan dalam
memproduksi barang dengan SO tertentu.
k. Menampilkan data order yang pernah ditolak untuk kode
pelanggan tertentu.
l. Menampilkan data sales yang melakukan penjualan dengan
Kode SO tertentu.
m. Menampilkan data pemasok dimana perusahaan pernah
melakukan pembelian dengan kode PO tertentu.
n. Menampilkan daftar bahan yang dibeli pada PO tertentu.
o. Menampilkan rincian pembayaran pembelian dengan PO
tertentu.
p. Menampilkan data bank dimana pembayaran pembelian
dilakukan
91
q. Menampilkan rincian pembayaran penjualan dengan SO
tertentu.
r. Menampilkan data bank dimana pembayaran penjualan
dilakukan
s. Menampilkan data penjualan dengan DO tertentu
t. Menampilkan rincian bahan yang diretur
u. Menampilkan rincian barang yang diretur
92
Berdasarkan transaksi yang dispesifikasikan di atas, dapat
digambarkan ERD sistem yang telah dilengkapi dengan transactional
arrows sebagai berikut :
Gambar 4.4 ERD Konseptual Akhir dengan Transaksi User
93
4.1.2 Perancangan Basis Data Logikal
Setelah perancangan basis data konseptual selesai dilakukan, model data
yang dihasilkan kemudian digunakan sebagai dasar perancangan basis data
logikal. Model data konseptual yang akan digunakan sebagai dasar tahap
perancangan basis data logikal adalah sebagai berikut :
Gambar 4.5 Model Data Konseptual Akhir
94
Tahap ini mencakup beberapa langkah :
1. Menghilangkan fitur yang tidak sesuai dengan model relasional
2. Validasi Normalisasi
3. Pembuatan model data logikal global
4. Pembuatan model diagram relasional global
4.1.2.1 Menghilangkan fitur yang tidak sesuai dengan model
relasional
4.1.2.1.1 Menghilangkan Tipe Relasi Biner many-to-many (*:*)
Pada model konseptual terdapat hubungan many-to-many
yang tidak kompatibel dengan data relasional, sehingga harus
dihilangkan dengan cara mendekomposisi relasi many-to-many (*:*)
tersebut dan menggantinya dengan dua relasi one-to-many (1:*)
terhadap sebuah entity baru. Tahapannya adalah sebagai berikut :
Gambar 4.6 Dekomposisi Hubungan many-to-many antara Bahan dan Produksi
95
Antara entity produksi dengan entity bahan terdapat
hubungan many-to-many. Artinya satu kode produksi dapat
mengandung lebih dari satu kode bahan, dan satu kode bahan dapat
digunakan oleh banyak produksi. Hubungan ini dapat didekomposisi
dengan menambahkan entity baru, ProduksiDetail, di antara entity
bahan dan produksi. Produksi detail akan menggunakan kode produksi
dan kode bahan sebagai Primary Key-nya.
Gambar 4.7 Dekomposisi Hubungan many-to-many antara Bahan dan Pemasok
Gambar 4.8 Dekomposisi Hubungan many-to-many antara Bahan dan Pembelian
96
Gambar 4.9 Dekomposisi Hubungan many-to-many antara Barang dan Penjualan
Gambar 4.10 Dekomposisi Hubungan many-to-many antara Barang dan Pengiriman
Gambar 4.11 Dekomposisi Hubungan many-to-many Barang dan returPenjualan
97
Gambar 4.12 Dekomposisi Hubungan many-to-many Bahan dan returPembelian
4.1.2.1.2 Menghilangkan Tipe Relasi Rekursif many-to-many (*:*)
Relasi rekursif adalah suatu keadaan dimana sebuah entity
memiliki hubungan dengan dirinya sendiri. Agar tercipta model data
yang kompatibel dengan model data relasional, tipe relasi rekursif
many-to-many harus dihilangkan dengan cara membuat sebuah entity
perantara baru. Pada model data ini tidak ditemukan tipe relasi rekursif
many-to-many.
4.1.2.1.3 Menghilangkan Tipe Relasi Kompleks
Relasi kompleks adalah suatu keadaan dimana terdapat
hubungan antara tiga atau lebih tipe entity. Tidak ditemukan tipe relasi
kompleks pada model data ini.
4.1.2.1.4 Menghilangkan Atribut Multi-valued
Atribut multi-valued adalah atribut yang mengandung lebih
dari satu nilai dalam satu entity. Contohnya adalah pelanggan yang
memiliki atribut telepon. Atribut telepon disebut multi-valued attribute
karena mungkin saja satu pelanggan memiliki lebih dari satu nomor
98
telepon.Atribut multi-valued ini dapat dihilangkan dengan membuat
satu entity baru yang berisi salinan Primary Key dari entity asal sebagai
Foreign Key. Dalam model data konseptual ini terdapat empat entity
yang mengandung atribut multi-valued. Tahapannya adalah sebagai
berikut :
Gambar 4.13 Atribut multi-valued pada entity orderDitolak
Gambar 4.14 Atribut multi-valued pada entity pelanggan
Gambar 4.15 Atribut multi-valued pada entity pemasok
99
Gambar 4.16 Atribut multi-valued pada entity sales
4.1.2.2 Validasi Normalisasi
Setelah tercipta entities yang total berjumlah 28 buah, berikut
adalah 12 entities yang masih belum memenuhi bentuk normal (Normal
Form) ke-3. Entities sisanya yang berjumlah 16 entities sudah memenuhi
3NF. Di bawah ini akan dilakukan validasi normalisasi terhadap 12 entities
yang belum memenuhi Third Normal Form tersebut :
penjualanHeader 2NF : penjualanHeader = @kdSO + tglSO + @kdPelanggan + namaPelanggan +
alamatPelanggan + totalPenjualan + keterangan + namaSales
3NF : penjualanHeader = @kdSO + @kdPelanggan + @kdSales + totalPenjualan
+ tglSO + keterangan pelanggan = @kdPelanggan + namaPelanggan + alamatPelanggan sales = @kdSales + namaSales penjualanDetail 2NF : penjualanDetail = @kdSO + @kdBarang + namaBarang + satuanBarang +
hargaSatuan + kuantitas 3NF : penjualanDetail = @kdSO + @kdBarang + hargaSatuan + kuantitas barang = @kdBarang + namaBarang + satuanBarang orderDitolakHeader 2NF : orderDitolakHeader = @kdOrder + tglOrder + @kdPelanggan +
namaPelanggan + telpPelanggan + faxPelanggan 3NF : orderDitolakHeader = @kdOrder + @kdPelanggan + tglOrder
100
pelanggan = @kdPelanggan + namaPelanggan + telpPelanggan + faxPelanggan pengirimanDetail UNF : pengirimanDetail = kdDO + {kdBarang + namaBarang + satuanBarang +
kuantitasBarang} 1NF, 2NF : pengirimanDetail = @kdDO + @kdBarang + namaBarang + satuanBarang
+ kuantitasBarang 3NF : pengirimanDetail = @kdDO + @kdBarang + kuantitasBarang barang = @kdBarang + namaBarang + satuanBarang produksiHeader 2NF : produksiHeader = @kdProduksi + tglAwalProduksi + deadline + @kdSO +
@kdBarang + namaBarang + caraCetak + finishing + keterangan
3NF : produksiHeader = @kdProduksi + tglAwalProduksi + deadline + @kdSO +
@kdBarang + caraCetak + finishing + keterangan barang = @kdBarang + namaBarang produksiDetail UNF : produksiDetail = kdProduksi + {kdBahan + namaBahan + kuantitasBahan +
satuanBahan} 1NF, 2NF : produksiDetail = @kdProduksi + @kdBahan + namaBahan +
kuantitasBahan + satuanBahan 3NF : produksiDetail = @kdProduksi + @kdBahan + kuantitasBahan bahan = @kdBahan + namaBahan + satuanBahan pembelianHeader 2NF : pembelianHeader = @kdPO + tglPO + @kdPemasok + namaPemasok + alamatPemasok + totalPembelian + keterangan 3NF : pembelianHeader = @kdPO + tglPO + @kdPemasok + totalPembelian + keterangan pemasok = @kdPemasok + namaPemasok + alamatPemasok pembelianDetail 2NF : pembelianDetail = @kdPO + @kdBahan + namaBahan + satuanBahan +
101
kuantitas + hargaSatuan 3NF : pembelianDetail = @kdPO + @kdBahan + kuantitas + hargaSatuan bahan = @kdBahan + namaBahan + satuanBahan pembayaranJual 1NF : pembayaranJual = @kdBayarJual + @kdSO + tglBayar + caraBayar +
kdBank + namaBank + cabang + noGiro + tglJatuhTempo + jumlahBayar + keterangan
2NF : pembayaranJual = @kdBayarJual + @kdSO + tglBayar + caraBayar +
@kdBank + namaBank + cabang + noGiro + tglJatuhTempo + jumlahBayar + keterangan
3NF : pembayaranJual = @kdBayarJual + @kdSO + tglBayar + caraBayar +
@kdBank + noGiro + tglJatuhTempo + jumlahBayar + keterangan
bank = @kdBank + namaBank + cabang pembayaranBeli 1NF : pembayaranBeli = @kdBayarBeli + @kdPO + tglBayar + caraBayar +
kdBank + namaBank + cabang + noGiro + tglJatuhTempo + jumlahBayar + keterangan
2NF : pembayaranBeli = @kdBayarBeli + @kdPO + tglBayar + caraBayar +
@kdBank + namaBank + cabang + noGiro + tglJatuhTempo + jumlahBayar + keterangan
3NF : pembayaranBeli = @kdBayarBeli + @kdPO + tglBayar + caraBayar +
@kdBank + noGiro + tglJatuhTempo + jumlahBayar + keterangan
bank = @kdBank + namaBank + cabang returPenjualanDetail UNF : returPenjualanDetail = kdReturPenjualan + {kdBarang + namaBarang +
kuantitas + satuanBarang + keterangan} 1NF, 2NF : returPenjualanDetail = @kdReturPenjualan + @kdBarang + namaBarang +
kuantitas + satuanBarang + keterangan 3NF : returPenjualanDetail = @kdReturPenjualan + @kdBarang + kuantitas +
keterangan barang = @kdBarang + namaBarang + satuanBarang
102
returPembelianDetail UNF : returPembelianDetail = kdReturPembelian + {kdBahan + namaBahan +
kuantitasBahan + satuanBahan} + keterangan 1NF, 2NF : returPembelianDetail = @kdReturPembelian + @kdBahan + namaBahan +
kuantitasBahan + satuanBahan + keterangan 3NF : returPembelianDetail = @kdReturPembelian + @kdBahan +
kuantitasBahan + keterangan bahan = @kdBahan + namaBahan + satuanBahan
4.1.2.3 Pembuatan Model Basis Data Logikal Global
Berikut merupakan tabel model basis data logikal global, dimana pada
sistem terdapat dua user view.
Tabel 4.20 Model Basis Data Logikal Global
orderDitolakHeader (kdOrder, kdPelanggan, tglOrder)
Primary kdOrder
Foreign Key kdPelanggan references pelanggan(kdPelanggan)
orderDitolakDetail (kdOrder, namaBarangTolak, keterangan, alasanPenolakan)
Primary kdOrder, namaBarangTolak
penjualanHeader (kdSO, kdPelanggan, kdSales, tglSO, totalPenjualan, keterangan)
Primary Key kdSO
Foreign Key kdPelanggan references pelanggan(kdPelanggan)
Foreign Key kdSales references sales(kdSales)
penjualanDetail (kdSO, kdBarang, hargaSatuan, kuantitas)
Primary Key kdSO, kdBarang
Foreign Key kdSO references penjualanHeader(kdSO)
Foreign Key kdBarang references barang(kdBarang)
pembelianHeader (kdPO, tglPO, kdPemasok, totalPembelian, keterangan)
Primary Key kdPO
Foreign Key kdPemasok references pemasok(kdPemasok)
103
pembelianDetail (kdPO, kdBahan, kuantitas, hargaSatuan)
Foreign Key kdPO references pembelianHeader(kdPO)
Foreign Key kdBahan references bahanHeader(kdBahan)
pelanggan (kdpelanggan, namapelanggan, alamatpelanggan)
Primary Key kdPelanggan
telpPelanggan (telpPelanggan, kdPelanggan)
Primary Key telpPelanggan
Foreign Key kdPelanggan references pelanggan(kdPelanggan)
faxPelanggan (faxPelanggan, kdPelanggan)
Primary Key faxPelanggan
Foreign Key kdPelanggan references pelanggan(kdPelanggan)
pemasok (kdPemasok, namaPemasok, alamatPemasok)
Primary Key kdPemasok
telpPemasok (telpPemasok, kdPemasok)
Primary Key telpPemasok
Foreign Key kdPemasok references pemasok(kdPemasok)
faxPemasok (faxPemasok, kdPemasok)
Primary Key faxPemasok
Foreign Key kdPemasok references pemasok(kdPemasok)
produksiHeader (kdProduksi, kdSO, kdBarang, kuantitasBarang, tglAwalProduksi,
deadline, caraCetak, finishing, keterangan)
Primary Key kdProduksi
Foreign Key kdSO references penjualanHeader(kdSO)
Foreign Key kdBarang references barang(kdBarang)
produksiDetail (kdProduksi, kdBahan, kuantitasBahan)
Foreign Key kdProduksi references produksiHeader(kdProduksi)
Foreign Key kdBahan references bahanHeader(kdBahan)
pengirimanHeader (kdDO, kdSO, tglPengiriman, namaPenerima)
Primary Key kdDO
Foreign Key kdSO references penjualanHeader(kdSO)
104
pengirimanDetail (kdDO, kdBarang, kuantitasBarang)
Foreign Key kdDO references pengirimanHeader(kdDO)
Foreign Key kdBarang references barang(kdBarang)
returPenjualanHeader (kdReturPenjualan, kdSO, tglRetur)
Primary Key kdReturPenjualan
Foreign Key kdSO references penjualanHeader(kdSO)
returPenjualanDetail (kdReturPenjualan, kdBarang, kuantitas, keterangan)
Foreign Key kdReturPenjualan references returPenjualanHeader(kdReturPenjualan)
Foreign Key kdBarang references barang(kdBarang)
returPembelianHeader (kdReturPembelian, kdPO, tglRetur)
Primary Key kdReturPembelian
Foreign Key kdPO references pembelianHeader(kdPO)
returPembelianDetail (kdReturPembelian, kdBahan, kuantitas, keterangan)
Foreign Key kdReturPembelian references returPembelianHeader(kdReturPembelian)
Foreign Key kdBahan references bahanHeader(kdBahan)
pembayaranJual (kdBayarJual, kdSO, tglBayar, caraBayar, jumlahBayar, kdBank,
noGiro, tglJatuhTempo, keterangan)
Primary Key kdBayarJual
Foreign Key kdSO references penjualanHeader(kdSO)
Foreign Key kdBank references bank(kdBank)
pembayaranBeli (kdBayarBeli, kdPO, tglBayar, caraBayar, jumlahBayar, kdBank,
noGiro, tglJatuhTempo, keterangan)
Primary Key kdBayarBeli
Foreign Key kdPO references penjualanHeader(kdPO)
Foreign Key kdBank references bank(kdBank)
bahanHeader (kdBahan, namaBahan, satuanBahan, jumMin, jumStok, tglBeliAkhir,
keterangan)
Primary Key kdBahan
bahanDetail (kdBahan, kdPemasok)
Foreign Key kdBahan references bahanHeader(kdBahan)
Foreign Key kdPemasok references pemasok(kdPemasok)
105
barang (kdBarang, namaBarang, satuanBarang, keterangan)
Primary Key kdBarang
sales (kdSales, namaSales, alamatSales)
Primary Key kdSales
telpSales (telpSales, kdSales)
Primary Key telpSales
Foreign Key kdSales references sales(kdSales)
bank (kdBank, namaBank, namaCabang)
Primary Key kdBank
106
4.1.2.4 Model Diagram Relasional Global
Gambar 4.17 Model Diagram Relasional Global
107
4.1.3 Perancangan Basis Data Fisikal
Perancangan basis data fisik merupakan proses pembuatan
deskripsi dari suatu implementasi basis data pada secondary storage.
Beberapa langkah penting dalam merancang basis data secara fisik
adalah :
1. Perancangan Relasional Basis Data
2. Merancang Constraints
3. Analisis Transaksi
4. Pembuatan Index Setiap Entitas
5. Mengestimasi Kapasitas Penyimpanan yang dibutuhkan
6. Merancang Mekanisme Keamanan
4.1.3.1 Pemilihan DBMS
Berikut ini adalah tabel perbandingan antara DBMS Microsoft
Access, SQL Server 2000 dengan Oracle 9i Standard.
Tabel 4.21 Tabel Perbandingan DBMS
Pembanding Microsoft SQL Server 2000 MySQL v4.1
Tipe DBMS Transactional relational database server Relational database server
Harga ±$2,489.97 (Standard Edition), ±$3,792.97
(50 CAL)
Gratis (lisensi umum), ±$395 (lisensi
komersial)
Kebutuhan hardware
minimum
Intel or compatible, Pentium 166 MHz atau
lebih, 64 MB RAM atau lebih, kapasitas
harddisk minimal 520 MB, resolusi monitor
minimal 800x600, CD- ROM drive, mouse
MyODBC (untuk mendukung driver
ODBC), Connector/J (untuk mendukung
driver JDBC), kapasitas harddisk
minimal 60 MB, 32 MB RAM atau lebih
Reliabilitas Mendukung failover cluster, poin-in-time
recovery, dan kemampuan untuk me-restart
senfiri bila basis data dihentikan
Software yang open-source
108
Keamanan User authentification dengan pilihan untuk
mengintegrasikan keamanan database dengan
keamanan Windows 2000, ada logging
transaksi
Kelebihan Lebih reliable, mendukung enterprise-class
reliability dan fungsi-fungsi keamanan,
kompatibel dengan 3GL application server,
dapat menjalankan berbagai basis data dalam
satu server. Memegang the top TPC-C
performance and price / performance result,
termasuk mudah di-install, digunakan, dan
dikelola. Transact-SQL lebih powerfull
dibandingkan MySQL dialect. T-SQL :
mendukung General View, Indexed View,
Distributed Partitioned View, AFTER trigger,
INSTEAD OF trigger, T-SQL statement
(Stored Procedure), support foreign key,
support cursor
Gratis, extensive online documentation,
mendukung berbagai OS, kebutuhan
hardware minimum
Kerugian Lebih mahal, membutuhkan minimal OS
Windows 2000 Server
Versi gratis tidak menawarkan support,
tidak bisa mengunci objek di bawah level
tabel, beberapa bagian tidak kompatibel
dengan SQL99, tidak support general
view, indexed view, Distributed
Partitioned View, trigger, T-SQL
statement, cursor
Keterbatasan Terbatas hingga 2 milyar objek pada basis data Terbatas hingga 32 indeks per tabel,
ukuran basis data terbatas hingga ukuran
file maksimal dari OS
109
Dari tabel di atas, penulis memutuskan untuk menggunakan DBMS SQL
Server 2000 dengan pertimbangan-pertimbangan sebagai berikut :
1. Mempertimbangkan skala perusahaan yang masuk ke kategori
menengah, DBMS SQL Server 2000 sudah sangat memadai untuk
memenuhi kebutuhan perusahaan. Penggunaan SQL Server juga lebih
mudah digunakan dibandingkan MySQL.
2. Walaupun ukuran file mencapai TeraByte, performansi SQL Server
masih tetap baik dalam hal kecepatan pencarian data.
4.1.3.2 Perancangan Relasional Basis Data
Tujuan dari tahap ini adalah untuk mengidentifikasikan
relasional basis data dalam model data logikal global yang digunakan
dalam DBMS dengan menggunakan DBDL (Database Design
Language). DBDL yang digunakan adalah sebagai berikut :
1. Pelanggan
Domain kdPelanggan Fixed length character string, length 8, P####### Domain namaPelanggan Variable length character string,length 30 Domain alamatPelanggan Variable length character string,length 100 pelanggan( kdPelanggan kode pelanggan NOT NULL namaPelanggan nama pelanggan NOT NULL alamatPelanggan alamat pelanggan NOT NULL PRIMARY KEY (kdPelanggan) )
2. telpPelanggan
Domain telpPelanggan Variable length character string, length 15 Domain kdPelanggan Fixed length character string, length 8 telpPelanggan( telpPelanggan telepon pelanggan NOT NULL kdPelanggan kode pelanggan NOT NULL PRIMARY KEY (telpPelanggan)
110
FOREIGN KEY (kdPelanggan) REFERENCES pelanggan(kdPelanggan) ON DELETE CASCADE, ON UPDATE CASCADE )
3. faxPelanggan
Domain faxPelanggan Variable length character string, length 15 Domain kdPelanggan Fixed length character string, length 8 faxPelanggan( faxPelanggan fax pelanggan NOT NULL kdPelanggan kode pelanggan NOT NULL PRIMARY KEY (faxPelanggan) FOREIGN KEY (kdPelanggan) REFERENCES pelanggan(kdPelanggan) ON DELETE CASCADE, ON UPDATE CASCADE )
4. Pemasok
Domain kdPemasok Fixed length character string, length 8, M####### Domain namaPemasok Variable length character string, length 30 Domain alamatPemasok Variable length character string, length 100 pemasok( kdPemasok kode pemasok NOT NULL namaPemasok nama pemasok NOT NULL alamatPemasok alamat pemasok NOT NULL PRIMARY KEY (kdPemasok) )
5. telpPemasok
Domain telpPemasok Variable length character string, length 15 Domain kdPemasok Fixed length character string, length 8 telpPemasok( telpPemasok telepon pemasok NOT NULL kdPemasok kode pemasok NOT NULL PRIMARY KEY (telpPemasok) FOREIGN KEY (kdPemasok) REFERENCES pemasok(kdPemasok) ON DELETE CASCADE, ON UPDATE CASCADE )
6. faxPemasok
Domain faxPemasok Variable length character string, length 15 Domain kdPemasok Fixed length character string, length 8 faxPemasok( faxPemasok fax pemasok NOT NULL kdPemasok kode pemasok NOT NULL PRIMARY KEY (faxPemasok) FOREIGN KEY (kdPemasok) REFERENCES pemasok(kdPemasok)
111
ON DELETE CASCADE, ON UPDATE CASCADE )
7. sales
Domain kdSales Fixed length character string, length 3, S## Domain namaSales Variable length character string, length 20 Domain alamatSales Variable length character string, length 100 sales( kdSales kode sales NOT NULL namaSales nama sales NOT NULL alamatSales alamat sales NOT NULL PRIMARY KEY (kdSales) )
8. telpSales
Domain telpSales Variable length character string, length 15 Domain kdSales Fixed length character string, length 3 telpSales( telpSales telepon sales NOT NULL kdSales kode sales NOT NULL PRIMARY KEY (telpSales) FOREIGN KEY (kdSales) REFERENCES sales(kdSales) ON DELETE CASCADE, ON UPDATE CASCADE )
9. barang
Domain kdBarang Fixed length char string, length 10, BR######## Domain namaBarang Variable length character string, length 40 Domain satuanBarang Variable length character string, length 20 Domain keterangan Teks character string barang( kdBarang kode barang NOT NULL namaBarang nama barang NOT NULL satuanBarang satuan barang NOT NULL keterangan keterangan barang NULL PRIMARY KEY (kdBarang) )
10. bahanHeader
Domain kdBahan Fixed length character string, length 8, BH###### Domain namaBahan Variable length character string, length 40 Domain satuanBahan Variable length character string, length 20 Domain jumMin bilangan Domain jumStok bilangan Domain tglBeliAkhir Variable date
112
Domain keterangan Teks character string bahanHeader( kdBahan kode bahan NOT NULL namaBahan nama bahan NOT NULL satuanBahan satuan bahan NOT NULL jumMin bilangan NOT NULL jumStok bilangan NOT NULL tglBeliAkhir Tanggal beli akhir NOT NULL keterangan keterangan bahan NULL PRIMARY KEY (kdBahan) )
11. bahanDetail
Domain kdBahan Fixed length character string, length 8, BH###### Domain kdPemasok Fixed length character string, length 8, M####### bahanDetail ( kdBahan kode bahan NOT NULL kdPemasok kode pemasok NOT NULL PRIMARY KEY (kdBahan, kdPemasok) FOREIGN KEY (kdBahan) REFERENCES bahanHeader (kdBahan) ON DELETE CASCADE, ON UPDATE CASCADE FOREIGN KEY (kdPemasok) REFERENCES pemasok (kdPemasok) ON DELETE CASCADE, ON UPDATE CASCADE )
12. orderDitolakHeader
Domain kdOrder Fixed length character string, length 10, O######### Domain kdPelanggan Fixed length character string, length 8, P####### Domain tglOrder Variabel Date orderDitolakHeader( kdOrder kode order NOT NULL kdPelanggan kode pelanggan NOT NULL tglOrder tanggal order NOT NULL PRIMARY KEY (kdOrder) FOREIGN KEY (kdPelanggan) REFERENCES pelanggan (kdPelanggan) ON UPDATE CASCADE ON DELETE NO ACTION )
13. orderDitolakDetail
Domain kdOrder Fixed length char string, length 10, O######### Domain namaBarangTolak Variable length character string, length 40 Domain keterangan Variabel Teks character string Domain alasanPenolakan Variabel Teks character string orderDitolakDetail( kdOrder kode order NOT NULL
113
namaBarangTolak nama barang ditolak NOT NULL keterangan keterangan NULL alasanPenolakan alasanPenolakan NOT NULL PRIMARY KEY (kdOrder, kdBarang) FOREIGN KEY (kdOrder) REFERENCES orderDitolakHeader (kdOrder) ON UPDATE CASCADE ON DELETE CASCADE FOREIGN KEY (kdBarang) REFERENCES barang (kdBarang) ON UPDATE CASCADE ON DELETE NO ACTION )
14. penjualanHeader
Domain kdSO Fixed length character string, length 10, J######### Domain kdPelanggan Fixed length character string, length 8, P######## Domain kdSales Fixed length character string, length 3, S## Domain tglSO Variabel Date Domain totalPenjualan Desimal, 10 digits, 2 points precision Domain keterangan Teks character string penjualanHeader( kdSO kode SO NOT NULL kdPelanggan kode pelanggan NOT NULL kdSales kode sales NOT NULL tglSO tanggal SO NOT NULL totalPenjualan total penjualan NOT NULL keterangan keterangan NULL PRIMARY KEY (kdSO) FOREIGN KEY (kdPelanggan) REFERENCES pelanggan (kdPelanggan) ON UPDATE CASCADE ON DELETE NO ACTION FOREIGN KEY (kdSales) REFERENCES sales (kdSales) ON UPDATE CASCADE ON DELETE NO ACTION )
15. penjualanDetail
Domain kdSO Fixed length character string, length 10, J######### Domain kdBarang Fixed length character string, length 10, BR####### Domain hargaSatuan Desimal, 10 digits, 2 points precision Domain kuantitas Bilangan penjualanDetail( kdSO kode SO NOT NULL kdBarang kode barang NOT NULL hargaSatuan harga satuan NOT NULL kuantitas kuantitas NOT NULL PRIMARY KEY (kdSO, kdBarang) FOREIGN KEY (kdSO) REFERENCES penjualanHeader (kdSO) ON UPDATE CASCADE ON DELETE CASCADE FOREIGN KEY (kdBarang) REFERENCES barang (kdBarang) ON UPDATE CASCADE ON DELETE NO ACTION
114
)
16. pembelianHeader
Domain kdPO Fixed length character string, length 10, L######### Domain kdPemasok Fixed length character string, length 8, M####### Domain tglPO Variabel Date Domain totalPembelian Desimal, 10 digits, 2 points precision Domain keterangan Teks character string pembelianHeader( kdPO kode PO NOT NULL kdPemasok kode pemasok NOT NULL tglPO tanggal PO NOT NULL totalPembelian total pembelian NOT NULL keterangan keterangan NULL PRIMARY KEY (kdPO) FOREIGN KEY (kdPemasok) REFERENCES pemasok (kdPemasok) ON UPDATE CASCADE ON DELETE NO ACTION )
17. pembelianDetail
Domain kdPO Fixed length character string, length 10, L######### Domain kdBahan Fixed length character string, length 8, BH###### Domain hargaSatuan Desimal, 10 digits, 2 points precision Domain kuantitas Bilangan pembelianDetail( kdPO kode PO NOT NULL kdBahan kode bahan NOT NULL hargaSatuan harga satuan NOT NULL kuantitas kuantitas NOT NULL PRIMARY KEY (kdPO, kdBahan) FOREIGN KEY (kdPO) REFERENCES pembelianHeader (kdPO) ON UPDATE CASCADE ON DELETE CASCADE FOREIGN KEY (kdBahan) REFERENCES bahanHeader (kdBahan) ON UPDATE CASCADE ON DELETE NO ACTION )
18. produksiHeader
Domain kdProduksi Fixed length char string, length 12, D########### Domain kdSO Fixed length char string, length 10, J######### Domain kdBarang Fixed length char string, length 10, BR####### Domain kuantitasBarang bilangan Domain tglAwalProduksi Variabel Date Domain deadline Variabel Date Domain caraCetak Variable length character string,length 30 Domain finishing Variable length character string,length 40
115
Domain keterangan Teks character string produksiHeader( kdProduksi kode Produksi NOT NULL kdSO kode SO NOT NULL kdBarang kode barang NOT NULL kuantitasBarang kuantitas barang NOT NULL tglAwalProduksi tanggal mulai produksi NOT NULL deadline deadline NOT NULL caraCetak cara cetak NULL finishing finishing NULL keterangan keterangan NULL PRIMARY KEY (kdProduksi) FOREIGN KEY (kdSO) REFERENCES penjualanHeader (kdSO) ON UPDATE CASCADE ON DELETE NO ACTION FOREIGN KEY (kdBarang) REFERENCES barang (kdBarang) ON UPDATE CASCADE ON DELETE NO ACTION )
19. produksiDetail
Domain kdProduksi Fixed length char string, length 12, D########### Domain kdBahan Fixed length char string, length 8, BH###### Domain kuantitasBahan Bilangan produksiDetail( kdProduksi kode produksi NOT NULL kdBahan kode bahan NOT NULL kuantitasBahan kuantitas bahan NOT NULL PRIMARY KEY (kdProduksi, kdBahan) FOREIGN KEY (kdProduksi) REFERENCES produksiHeader (kdProduksi) ON UPDATE CASCADE ON DELETE CASCADE FOREIGN KEY (kdBahan) REFERENCES bahanHeader (kdBahan) ON UPDATE CASCADE ON DELETE NO ACTION )
20. pengirimanHeader
Domain kdDO Fixed length char string, length 10, DO######## Domain kdSO Fixed length character string, length 10, J######### Domain tglPengiriman Variable date Domain namaPenerima Variable length character string, length 30 pengirimanHeader( kdDO kode DO NOT NULL kdSO kode SO NOT NULL tglPengiriman tanggal pengiriman NOT NULL namaPenerima nama penerima NOT NULL PRIMARY KEY (kdDO) FOREIGN KEY (kdSO) REFERENCES penjualanHeader (kdSO) ON UPDATE CASCADE ON DELETE CASCADE )
116
21. pengirimanDetail
Domain kdDO Fixed length char string, length 10, DO######## Domain kdBarang Fixed length char string, length 10, BR######## Domain kuantitasBarang bilangan pengirimanDetail( kdDO kode DO NOT NULL kdBarang kode barang NOT NULL kuantitasBarang kuantitas barang NOT NULL PRIMARY KEY (kdDO, kdBarang) FOREIGN KEY (kdDO) REFERENCES pengirimanHeader (kdDO) ON UPDATE CASCADE ON DELETE CASCADE FOREIGN KEY (kdBarang) REFERENCES barang (kdBarang) ON UPDATE CASCADE ON DELETE NO ACTION )
22. returPenjualanHeader
Domain kdReturPenjualan Fixed length character string, length 8, RJ###### Domain kdSO Fixed length char string, length 10, J######### Domain tglRetur Variable date returPenjualanHeader( kdReturPenjualan kode retur penjualan NOT NULL kdSO kode SO NOT NULL tglRetur tanggal retur NOT NULL PRIMARY KEY (kdReturPenjualan) FOREIGN KEY (kdSO) REFERENCES penjualanHeader (kdSO) ON UPDATE CASCADE ON DELETE CASCADE )
23. returPenjualanDetail
Domain kdReturPenjualan Fixed length character string, length 8, RJ###### Domain kdBarang Fixed length char string, length 10, BR######## Domain kuantitasBarang bilangan Domain keterangan Teks character string returPenjualanDetail( kdReturPenjualan kode retur penjualan NOT NULL kdBarang kode barang NOT NULL kuantitasBarang kuantitas barang NOT NULL keterangan keterangan NULL PRIMARY KEY (kdReturPenjualan, kdBarang) FOREIGN KEY (kdReturPenjualan) REFERENCES returPenjualanHeader (kdReturPenjualan) ON UPDATE CASCADE ON DELETE CASCADE FOREIGN KEY (kdBarang) REFERENCES barang (kdBarang) ON UPDATE CASCADE ON DELETE NO ACTION
117
) 24. returPembelianHeader
Domain kdReturPembelianFixed length character string, length 8, RB###### Domain kdPO Fixed length char string, length 10, L######### Domain tglRetur Variable date returPembelianHeader( kdReturPembelian kode retur pembelian NOT NULL kdPO kode PO NOT NULL tglRetur tanggal retur NOT NULL PRIMARY KEY (kdReturPembelian) FOREIGN KEY (kdPO) REFERENCES pembelianHeader (kdPO) ON UPDATE CASCADE ON DELETE CASCADE )
25. returPembelianDetail
Domain kdReturPembelian Fixed length character string, length 8, RB###### Domain kdBahan Fixed length character string, length 8, BH###### Domain kuantitasBahan bilangan Domain keterangan Teks character string returPembelianDetail( kdReturPembelian kode retur pembelian NOT NULL kdBahan kode bahan NOT NULL kuantitasBahan kuantitas bahan NOT NULL keterangan keterangan NULL PRIMARY KEY (kdReturPembelian, kdBahan) FOREIGN KEY (kdReturPembelian) REFERENCES returPembelianHeader (kdReturPenjualan) ON UPDATE CASCADE ON DELETE CASCADE FOREIGN KEY (kdBahan) REFERENCES bahanHeader (kdBahan) ON UPDATE CASCADE ON DELETE CASCADE )
26. pembayaranJual
Domain kdBayarJual Fixed character string, length 10, BJ######## Domain kdSO Fixed character string, length 10, J######### Domain kdBank Fixed character string, length 3, B## Domain noGiro Variable character string, length 10 Domain tglBayar Variable date DomaincaraBayar Variable character string, length 30 Domain jumlahBayar Desimal, 10 digits, 2 points precision Domain tglJatuhTempo Variable date Domain keterangan Teks character string pembayaranJual ( kdBayarJual kode bayar jual NOT NULL kdSO kode SO NOT NULL
118
kdBank kode bank NOT NULL noGiro nomor giro NULL tglBayar tanggal bayar NOT NULL caraBayar cara bayar NULL jumlahBayar jumlah bayar NOT NULL tglJatuhTempo tanggal jatuh tempo NULL keterangan keterangan pembayaran NULL PRIMARY KEY (kdBayarJual) FOREIGN KEY (kdSO) REFERENCES penjualanHeader (kdSO) ON UPDATE CASCADE ON DELETE CASCADE FOREIGN KEY (kdBank) REFERENCES bank (kdBank) ON UPDATE CASCADE ON DELETE NO ACTION )
27. pembayaranBeli
Domain kdBayarBeli Fixed character string, length 10, BB######## Domain kdPO Fixed character string, length 10, L######### Domain kdBank Fixed character string, length 3, B## Domain noGiro Variable character string, length 10 Domain tglBayar Variable date Domain caraBayar Variable character string, length 30 Domain jumlahBayar Desimal, 10 digits, 2 points precision Domain tglJatuhTempo Variable date Domain keterangan Teks character string pembayaranBeli ( kdBayarBeli kode bayar beli NOT NULL kdSO kode SO NOT NULL kdBank kode bank NOT NULL noGiro nomor giro NULL tglBayar tanggal bayar NOT NULL caraBayar cara bayar NULL jumlahBayar jumlah bayar NOT NULL tglJatuhTempo tanggal jatuh tempo NULL keterangan keterangan pembayaran NULL PRIMARY KEY (kdBayarBeli) FOREIGN KEY (kdPO) REFERENCES pembelianHeader (kdPO) ON UPDATE CASCADE ON DELETE CASCADE FOREIGN KEY (kdBank) REFERENCES bank (kdBank) ON UPDATE CASCADE ON DELETE NO ACTION )
28. bank
Domain kdBank Fixed length character string, length 3, B## Domain namaBank Variable length character string, length 30 Domain namaCabang Variable length character string, length 30 bank(
119
kdBank kode bank NOT NULL namaBank nama bank NOT NULL namaCabang nama cabang NOT NULL PRIMARY KEY (kdBank) )
4.1.3.3 Merancang Representasi Derived Data
Tujuan dari langkah ini adalah untuk memutuskan bagaimana
menampilkan kembali derived data yang ada pada perancangan pada
DBMS yang digunakan. Dimana atribut yang nilainya dapat dihasilkan
dari memeriksa nilai atribut lainnya disebut atribut derived atau calculate.
Adapun derived attribute yang didefinisikan yaitu :
a. totalPenjualan
totalPenjualan merepresentasikan total harga penjualan yang
dilakukan. Nilai ini diperoleh dari hasil penambahan jumlahHarga
yang ada pada penjualanDetail. jumlahHarga didapat dari
perkalian antara hargaSatuan dan kuantitas yang ada pada
penjualanDetail. totalPenjualan yang telah didapat akan disimpan
dalam program. Hal ini untuk mempermudah pembacaan
selanjutnya, dimana program tidak perlu lagi melakukan proses
perhitungan untuk mendapatkan totalPenjualan. Tujuan
penampilan derived data ini adalah pengurangan waktu yang
dibutuhkan dalam proses menampilkan kembali penjualan yang
telah dilakukan, misalkan ketika sedang membuat laporan
penjualan.
120
b. totalPembelian
totalPembelian merepresentasikan total harga pembelian yang
dilakukan. Nilai ini diperoleh dari hasil penambahan jumlahHarga
yang ada pada pembelianDetail. jumlahHarga didapat dari
perkalian antara hargaSatuan dan kuantitas yang ada pada
pembelianDetail. totalPenjualan yang telah didapat akan disimpan
dalam program. Hal ini untuk mempermudah pembacaan
selanjutnya, dimana program tidak perlu lagi melakukan proses
perhitungan untuk mendapatkan totalPembelian. Tujuan
penampilan derived data ini adalah pengurangan waktu yang
dibutuhkan dalam proses menampilkan kembali pembelian yang
telah dilakukan, misalkan ketika sedang membuat laporan
pembelian.
4.1.3.4 Merancang Constraint
Tujuan dari langkah ini adalah untuk merancang constraint
perusahaan dalam DBMS untuk masing-masing entitas.
Tabel pelanggan
Alter table pelanggan
Add constraints PK_kdPelanggan primary key(kdPelanggan)
Tabel telpPelanggan
Alter table telpPelanggan
Add constraints PK_telpPelanggan primary key(telpPelanggan),
121
Constraint FK_kdPelanggan_telpPelanggan foreign key
(kdPelanggan) references pelanggan(kdPelanggan) on update
cascade on delete cascade
Tabel faxPelanggan
Alter table faxPelanggan
Add constraints PK_faxPelanggan primary key(faxPelanggan),
Constraint FK_kdPelanggan_faxPelanggan foreign key
(kdPelanggan) references pelanggan(kdPelanggan) on update
cascade on delete cascade
Tabel pemasok
Alter table Pemasok
Add constraints PK_kdPemasok primary key(kdPemasok)
Tabel telpPemasok
Alter table telpPemasok
Add constraints PK_telpPemasok primary key(telpPemasok),
Constraint FK_kdPemasok_telpPemasok foreign key (kdPemasok)
references pemasok(kdPemasok) on update cascade on delete
cascade
Tabel faxPemasok
Alter table faxPemasok
Add constraints PK_faxPemasok primary key(faxPemasok),
Constraint FK_kdPemasok_faxPemasok foreign key (kdPemasok)
references pemasok(kdPemasok) on update cascade on delete
cascade
122
Tabel sales
Alter table sales
Add constraints PK_kdSales primary key(kdSales)
Tabel telpSales
Alter table telpSales
Add constraints PK_telpSales primary key(telpSales),
Constraint FK_kdSales_telpSales foreign key (kdSales) references
sales(kdSales) on update cascade on delete cascade
Tabel barang
Alter table barang
Add constraints PK_kdBarang primary key(kdBarang)
Tabel bahanHeader
Alter table bahan
Add constraints PK_kdBahan primary key(kdBahan)
Tabel bahanDetail
Alter table bahanDetail
Add constraints FK_kdBahan_bahanDetail foreign key(kdBahan)
references bahanHeader(kdBahan) on update cascade on delete
cascade,
Constraint FK_kdPemasok_bahanDetail foreign key(kdPemasok)
references pemasok(kdPemasok) on update cascade on delete
cascade
123
Tabel orderDitolakHeader
Alter table orderDitolakHeader
Add constraints PK_kdOrder_orderDitolakHeader primary
key(kdOrder),
Constraint FK_kdPelanggan_orderDitolakHeader foreign
key(kdPelanggan) references pelanggan(kdPelanggan) on update
cascade on delete no action
Tabel orderDitolakDetail
Alter table orderDitolakDetail
Add constraints FK_kdOrder_orderDitolakDetail foreign
key(kdOrder) references orderDitolakHeader(kdOrder) on update
cascade on delete cascade,
Tabel penjualanHeader
Alter table penjualanHeader
Add constraints PK_kdSO_penjualanHeader primary key(kdSO),
Constraint FK_kdPelanggan_penjualanHeader foreign
key(kdPelanggan) references pelanggan(kdPelanggan) on update
cascade on delete no action
Constraint FK_kdSales_penjualanHeader foreign key(kdSales)
references sales(kdSales) on update cascade on delete no action
124
Tabel penjualanDetail
Alter table penjualanDetail
Add constraints FK_kdSO_penjualanDetail foreign key(kdSO)
references penjualanHeader(kdSO) on update cascade on delete
cascade,
Constraint FK_kdBarang_penjualanDetail foreign key(kdBarang)
references barang(kdBarang) on update cascade on delete no action
Tabel pembelianHeader
Alter table pembelianHeader
Add constraints PK_kdPO_pembelianHeader primary key(kdPO),
Constraint FK_kdPemasok_pembelianHeader foreign
key(kdPemasok) references pemasok(kdPemasok) on update
cascade on delete no action
Tabel pembelianDetail
Alter table pembelianDetail
Add constraints FK_kdPO_pembelianDetail foreign key(kdPO)
references pembelianHeader(kdPO) on update cascade on delete
cascade,
Constraint FK_kdBahan_pembelianDetail foreign key(kdBahan)
references bahanHeader(kdBahan) on update cascade on delete no
action
125
Tabel produksiHeader
Alter table produksiHeader
Add constraints PK_kdProduksi_produksiHeader primary
key(kdProduksi),
Constraints FK_kdSO_produksiHeader foreign key(kdSO)
references penjualanHeader(kdSO) on update cascade on delete no
action,
Constraint FK_kdBarang_produksiHeader foreign key(kdBarang)
references barang(kdBarang) on update cascade on delete no action
Tabel produksiDetail
Alter table produksiDetail
Add constraints FK_kdProduksi_produksiDetail foreign
key(kdProduksi) references produksiHeader(kdProduksi) on update
cascade on delete cascade,
Constraint FK_kdBahan_produksiDetail foreign key(kdBahan)
references bahanHeader(kdBahan) on update cascade on delete no
action
Tabel pengirimanHeader
Alter table pengirimanHeader
Add constraints PK_kdDO_pengirimanHeader primary key(kdDO),
Constraint FK_kdSO_pengirimanHeader foreign key(kdSO)
references penjualanHeader (kdSO) on update cascade on delete
cascade
126
Tabel pengirimanDetail
Alter table pengirimanDetail
Add constraints FK_kdDO_pengirimanDetail foreign key(kdDO)
references pengirimanHeader(kdDO) on update cascade on delete
cascade,
Constraint FK_kdBarang_pengirimanDetail foreign key(kdBarang)
references barang(kdBarang) on update cascade on delete no action
Tabel returPenjualanHeader
Alter table returPenjualanHeader
Add constraints PK_kdReturPenjualan_returPenjualanHeader
primary key(kdReturPenjualan),
Constraint FK_kdSO_returPenjualanHeader foreign key(kdSO)
references penjualanHeader(kdSO) on update cascade on delete
cascade
Tabel returPenjualanDetail
Alter table returPenjualanDetail
Add constraints FK_kdReturPenjualan_returPenjualanDetail foreign
key(kdReturPenjualan) references
returPenjualanHeader(kdReturPenjualan) on update cascade on
delete cascade,
Constraint FK_kdBarang_returPenjualanDetail foreign
key(kdBarang) references barang(kdBarang) on update cascade on
delete no action
127
Tabel returPembelianHeader
Alter table returPembelianHeader
Add constraints PK_kdReturPenjualan_returPembelianHeader
primary key(kdReturPenjualan),
Constraint FK_kdPO_returPembelianHeader foreign key(kdPO)
references pembelianHeader(kdPO) on update cascade on delete
cascade
Tabel returPembelianDetail
Alter table returPembelianDetail
Add constraints FK_kdReturPembelian_returPembelianDetail
foreign key(kdReturPembelian) references
returPembelianHeader(kdReturPembelian) on update cascade on
delete cascade,
Constraint FK_kdBahan_returPembelianDetail foreign
key(kdBahan) references bahanHeader(kdBahan) on update cascade
on delete no action
Tabel pembayaranJual
Alter table pembayaranJual
Add constraints PK_kdBayarJual_pembayaranJual primary
key(kdBayarJual),
Constraint FK_kdSO_pembayaranJual foreign key(kdSO)
references penjualanHeader(kdSO) on update cascade on delete
cascade
128
Constraint FK_kdBank_pembayaranJual foreign key(kdBank)
references bank(kdBank) on update cascade on delete no action
Tabel pembayaranBeli
Alter table pembayaranBeli
Add constraints PK_kdBayarBeli_pembayaranBeli primary
key(kdBayarBeli),
Constraint FK_kdPO_pembayaranBeli foreign key(kdPO)
references pembelianHeader(kdPO) on update cascade on delete
cascade
Constraint FK_kdBank_pembayaranBeli foreign key(kdBank)
references bank(kdBank) on update cascade on delete no action
Tabel bank
Alter table bank
Add constraints PK_kdBank_bank primary key(kdBank)
4.1.3.5 Analisis Transaksi
Tujuan daru langkah ini adalah untuk memahami fungsionalitas
dari transaksi yang akan berjalan pada basis data dan untuk menganalisa
transaksi yang penting. Transaksi-transaksi yang terjadi adalah sebagai
berikut :
(A) Mengedit data barang
(B) Mengedit data pelanggan
(C) Mengedit data pemasok
(D) Mengedit data bahan
129
Tabel 4.22 Tabel Analisis Transaksi
Transaksi (A) (B) (C) (D)
Relation R U D I R U D I R U D I R U D I
bahanHeader X X X X
bahanDetail X X X X
barang X X X X
pelanggan X X X X
telpPelanggan X X X X
faxPelanggan X X X X
pemasok X X X X
telpPemasok X X X X
faxPemasok X X X X
sales
telpSales
orderDitolakHeader
orderDitolakDetail
penjualanHeader
penjualanDetail
pembelianHeader
pembelianDetail
produksiHeader
produksiDetail
pengirimanHeader
pengirimanDetail
returPenjualanHeader
returPenjualanDetail
returPembelianHeader
returPembelianDetail
pembayaranJual
pembayaranBeli
bank
R= Read ; U = Update; D = Delete; I = Insert
130
(E) Mengedit data sales
(F) Mengedit data bank
(G) Memasukkan dan merubah data penjualan
(H) Memasukkan dan merubah data pembelian Transaksi (E) (F) (G) (H)
Relation R U D I R U D I R U D I R U D I
bahanHeader
bahanDetail
barang
pelanggan
telpPelanggan
faxPelanggan
pemasok
telpPemasok
faxPemasok
sales X X X X
telpSales X X X X
orderDitolakHeader
orderDitolakDetail
penjualanHeader X X
penjualanDetail X X
pembelianHeader X X
pembelianDetail X X
produksiHeader
produksiDetail
pengirimanHeader
pengirimanDetail
returPenjualanHeader
returPenjualanDetail
returPembelianHeader
returPembelianDetail
pembayaranJual
pembayaranBeli
bank X X X X
R= Read ; U = Update; D = Delete; I = Insert
131
(I) Memasukkan data retur penjualan
(J) Memasukkan data retur pembelian
(K) Memasukkan data order yang ditolak
(L) Memasukkan data pengiriman
Transaksi (I) (J) (K) (L)
Relation R U D I R U D I R U D I R U D I
bahanHeader
bahanDetail
barang
pelanggan
telpPelanggan
faxPelanggan
pemasok
telpPemasok
faxPemasok
sales
telpSales
orderDitolakHeader X
orderDitolakDetail X
penjualanHeader X X
penjualanDetail X X
pembelianHeader X
pembelianDetail X
produksiHeader
produksiDetail
pengirimanHeader X
pengirimanDetail X
returPenjualanHeader X
returPenjualanDetail X
returPembelianHeader X
returPembelianDetail X
pembayaranJual
pembayaranBeli
bank
R= Read ; U = Update; D = Delete; I = Insert
132
(M) Memasukkan data pembayaran penjualan
(N) Memasukkan data pembayaran pembelian
(O) Memasukkan data produksi
(P) Menampilkan rincian data penjualan.
(Q) Menampilkan rincian data pembelian. Transaksi (M) (N) (O) (P) (Q)
Relation R U D I R U D I R U D I R U D I R U D I
bahanHeader
bahanDetail
barang
pelanggan
telpPelanggan
faxPelanggan
pemasok
telpPemasok
faxPemasok
sales
telpSales
orderDitolakHeader
orderDitolakDetail
penjualanHeader X X X
penjualanDetail X X X
pembelianHeader X X
pembelianDetail X X
produksiHeader X
produksiDetail X
pengirimanHeader
pengirimanDetail
returPenjualanHeader
returPenjualanDetail
returPembelianHeader
returPembelianDetail
pembayaranJual X
pembayaranBeli X
bank
R= Read ; U = Update; D = Delete; I = Insert
133
(R) Menampilkan rincian data retur penjualan
(S) Menampilkan rincian data retur pembelian
(T) Menampilkan pengiriman
(U) Menampilkan rincian produksi
Transaksi (R) (S) (T) (U)
Relation R U D I R U D I R U D I R U D I
bahanHeader
bahanDetail
barang
pelanggan
telpPelanggan
faxPelanggan
pemasok
telpPemasok
faxPemasok
sales
telpSales
orderDitolakHeader
orderDitolakDetail
penjualanHeader
penjualanDetail
pembelianHeader
pembelianDetail
produksiHeader X
produksiDetail X
pengirimanHeader X
pengirimanDetail X
returPenjualanHeader X
returPenjualanDetail X
returPembelianHeader X
returPembelianDetail X
pembayaranJual
pembayaranBeli
bank
R= Read ; U = Update; D = Delete; I = Insert
134
(V) Menampilkan data order yang pernah ditolak.
(W) Menampilkan rincian pembayaran pembelian dengan PO tertentu.
(X) Menampilkan rincian pembayaran penjualan dengan SO tertentu.
(Y) Menampilkan rincian retur pembelian
(Z) Menampilkan rincian retur penjualan Transaksi (V) (W) (X) (Y) (Z)
Relation R U D I R U D I R U D I R U D I R U D I
bahanHeader
bahanDetail
barang
pelanggan
telpPelanggan
faxPelanggan
pemasok
telpPemasok
faxPemasok
sales
telpSales
orderDitolakHeader X
orderDitolakDetail X
penjualanHeader
penjualanDetail
pembelianHeader
pembelianDetail
produksiHeader
produksiDetail
pengirimanHeader
pengirimanDetail
returPenjualanHeader X
returPenjualanDetail X
returPembelianHeader X
returPembelianDetail X
pembayaranJual X
pembayaranBeli X
bank
R= Read ; U = Update; D = Delete; I = Insert
135
4.1.3.6 Pembuatan Indeks Setiap Entity
Tujuan dari langkah ini adalah untuk menentukan apakah
penambahan index akan meningkatkan performa dari sistem. Index yang
digunakan adalah :
1) pelanggan
CREATE UNIQUE INDEX kdPelangganIdx ON
pelanggan(kdPelanggan)
CREATE INDEX namaPelangganIdx ON pelanggan
(namaPelanggan)
2) telpPelanggan
CREATE UNIQUE INDEX telpPelangganIdx ON
telpPelanggan(telpPelanggan)
CREATE INDEX kdTelpPelIdx ON telpPelanggan (kdPelanggan)
3) faxPelanggan
CREATE UNIQUE INDEX faxPelangganIdx ON
faxPelanggan(faxPelanggan)
CREATE INDEX kdFaxPelIdx ON faxPelanggan (kdPelanggan)
4) pemasok
CREATE UNIQUE INDEX kdPemasokIdx ON
pemasok(kdPemasok)
CREATE INDEX namaPemasokIdx ON pemasok (namaPemasok)
5) telpPemasok
CREATE UNIQUE INDEX telpPemasokIdx ON
telpPemasok(telpPemasok)
136
CREATE INDEX kdTelpPemIdx ON telpPemasok (kdPemasok)
6) faxPemasok
CREATE UNIQUE INDEX faxPemasokIdx ON
faxPemasok(faxPemasok)
CREATE INDEX kdFaxPemIdx ON faxPemasok (kdPemasok)
7) sales
CREATE UNIQUE INDEX kdSalesIdx ON sales(kdSales)
CREATE INDEX namaSalesIdx ON sales(namaSales)
8) telpSales
CREATE UNIQUE INDEX telpSalesIdx ON telpSales(telpSales)
CREATE INDEX kdTelpSalesIdx ON telpSales(kdSales)
9) pembelianHeader
CREATE UNIQUE INDEX kdPOPembHIdx ON
pembelianHeader(kdPO)
CREATE INDEX kdPemPembHIdx ON pembelianHeader
(kdPemasok)
10) pembelianDetail
CREATE UNIQUE INDEX kdPOPembDIdx ON
pembelianDetail(kdPO)
CREATE INDEX kdBhnPembDIdx ON pembelianDetail
(kdBahan)
11) penjualanHeader
CREATE UNIQUE INDEX kdSOPenjHIdx ON
penjualanHeader(kdSO)
137
CREATE INDEX kdPelPenjHIdx ON penjualanHeader
(kdPelanggan)
CREATE INDEX kdSalesPenjHIdx ON penjualanHeader
(kdSales)
12) penjualanDetail
CREATE UNIQUE INDEX kdSOPenjDIdx ON
penjualanDetail(kdSO)
CREATE INDEX kdBrgPenjDIdx ON penjualanDetail (kdBarang)
13) bank
CREATE UNIQUE INDEX kdBankIdx ON bank(kdBank)
CREATE INDEX namaBankIdx ON bank(namaBank)
CREATE INDEX namaCabangIdx ON bank(namaCabang)
14) barang
CREATE UNIQUE INDEX kdBrgIdx ON barang(kdBarang)
CREATE INDEX namaBarangIdx ON barang(namaBarang)
CREATE INDEX satuanBarangIdx ON barang(satuanBarang)
15) bahanDetail
CREATE UNIQUE INDEX kdBhnDIdx ON bahanDetail
(kdBahan)
CREATE INDEX kdPemBhnDIdx ON bahanDetail (kdPemasok)
16) bahanHeader
CREATE UNIQUE INDEX kdBhnHIdx ON
bahanHeader(kdBahan)
CREATE INDEX namaBahanIdx ON bahanHeader (namaBahan)
138
CREATE INDEX satuanBahanIdx ON bahanHeader
(satuanBahan)
17) pengirimanHeader
CREATE UNIQUE INDEX kdDOPengHIdx ON
pengirimanHeader(kdDO)
CREATE INDEX kdSOPengHIdx ON pengirimanHeader (kdSO)
18) pengirimanDetail
CREATE UNIQUE INDEX kdDOPengDIdx ON
pengirimanDetail(kdDO)
CREATE INDEX kdBrgPengDIdx ON pengirimanDetail
(kdBarang)
19) orderDitolakHeader
CREATE UNIQUE INDEX kdOrderDHIdx ON
orderDitolakHeader(kdOrder)
CREATE INDEX kdPelOrderDHIdx ON orderDitolakHeader
(kdPelanggan)
20) orderDitolakDetail
CREATE UNIQUE INDEX kdOrderDDIdx ON
orderDitolakDetail(kdOrder)
CREATE INDEX namaBrgTolakDDIdx ON
orderDitolakDetail(namaBarangTolak)
21) produksiHeader
CREATE UNIQUE INDEX kdProdHIdx ON
produksiHeader(kdProduksi)
139
CREATE INDEX kdSOProdHIdx ON produksiHeader (kdSO)
CREATE INDEX kdBrgProdHIdx ON produksiHeader (kdBarang)
22) produksiDetail
CREATE UNIQUE INDEX kdProdDIdx ON
produksiDetail(kdProduksi)
CREATE INDEX kdBhnProdDIdx ON produksiDetail (kdBahan)
23) returPenjualanHeader
CREATE UNIQUE INDEX kdReturPenjHIdx ON
returPenjualanHeader(kdReturPenjualan)
CREATE INDEX kdSOReturPenjHIdx ON returPenjualanHeader
(kdSO)
24) returPenjualanDetail
CREATE UNIQUE INDEX kdReturPenjDIdx ON
returPenjualanDetail (kdReturPenjualan)
CREATE INDEX kdBrgReturPenjDIdx ON returPenjualanDetail
(kdBarang)
25) returPembelianHeader
CREATE UNIQUE INDEX kdReturPembHIdx ON
returPembelianHeader(kdReturPembelian)
CREATE INDEX kdPOReturPembHIdx ON
returPembelianHeader (kdPO)
26) returPembelianDetail
CREATE UNIQUE INDEX kdReturPembDIdx ON
returPembelianDetail (kdReturPembelian)
140
CREATE INDEX kdBhnReturPenjDIdx ON returPembelianDetail
(kdBahan)
27) pembayaranJual
CREATE UNIQUE INDEX kdBayarJualIdx ON pembayaranJual
(kdBayarJual)
CREATE INDEX kdSOPembJualIdx ON pembayaranJual (kdSO)
28) pembayaranBeli
CREATE UNIQUE INDEX kdBayarBeliIdx ON pembayaranBeli
(kdBayarBeli)
CREATE INDEX kdPOPembBeliIdx ON pembayaranBeli (kdPO)
4.1.3.7 Mengestimasi Kapasitas Penyimpanan yang Dibutuhkan
Tujuan dari langkah ini adalah untuk mengetahui kapasitas
penyimpanan yang dibutuhkan oleh basis data. Perkiraan kapasitas setiap
tabel adalah sebagai berikut :
Tabel 4.23 Penyimpanan barang
Field Type Ukuran kdBarang namaBarang satuanBarang keterangan
Char Karakter Karakter Teks
10 40 20 200
Kapasitas dari Tabel barang adalah 270 bytes Diperkirakan dalam satu hari terjadi 3 penambahan barang baru Dalam satu tahun pertumbuhan tabel ini adalah (asumsikan 1 bulan terdapat 30 hari dengan 26 hari kerja) : 3*26*12*270 = 252.720 byte atau 252,72 Kbyte
141
Tabel 4.24 Penyimpanan bahanHeader
Field Type Ukuran kdBahan namaBahan satuanBahan jumMin jumStok tglBeliAkhir keterangan
Char Karakter Karakter Bilangan Bilangan Date teks
8 40 20 4 4 8 200
Kapasitas dari Tabel bahanHeader adalah 284 bytes Diperkirakan dalam satu hari terjadi 3 penambahan bahan baru Dalam satu tahun pertumbuhan tabel ini adalah (asumsikan 1 bulan terdapat 30 hari dengn 26 hari kerja) : 3*26*12*284 = 265.824 byte atau 265,824 Kbyte
Tabel 4.25 Penyimpanan bahanDetail
Field Type Ukuran kdBahan kdPemasok
Char Char
8 8
Kapasitas dari Tabel bahanDetail adalah 16 bytes Diperkirakan dalam satu hari terjadi 3 penambahan bahan baru Diperkirakan dalam 1 bahan disediakan oleh 2 pemasok Dalam satu tahun pertumbuhan tabel ini adalah (asumsikan 1 bulan terdapat 30 hari dengn 26 hari kerja) : 3*2*26*12*16 = 29.952 byte atau 29,952 Kbyte
Tabel 4.26 Penyimpanan pemasok
Field Type Ukuran kdPemasok namaPemasok alamatPemasok
Char Karakter Karakter
8 30 100
Kapasitas dari Tabel pemasok adalah 138 bytes Diperkirakan dalam satu hari terjadi 3 penambahan pemasok baru Dalam satu tahun pertumbuhan tabel ini adalah (asumsikan 1 bulan terdapat 30 hari dengn 26 hari kerja) : 3*26*12*138 = 129.168 byte atau 129,168 Kbyte
142
Tabel 4.27 Penyimpanan telpPemasok
Field Type Ukuran telpPemasok kdPemasok
Karakter Char
15 8
Kapasitas dari Tabel telpPemasok adalah 23 bytes Diperkirakan dalam satu hari terjadi 3 penambahan pemasok baru Diperkirakan setiap kali penambahan ada 3 nomor telepon Dalam satu tahun pertumbuhan tabel ini adalah (asumsikan 1 bulan terdapat 30 hari dengn 26 hari kerja) : 3*3*26*12*23 = 64.584 byte atau 64,584 Kbyte
Tabel 4.28 Penyimpanan faxPemasok
Field Type Ukuran telpPemasok kdPemasok
Karakter Char
15 8
Kapasitas dari Tabel faxPemasok adalah 23 bytes Diperkirakan dalam satu hari terjadi 3 penambahan pemasok baru Diperkirakan setiap kali penambahan ada 2 nomor fax Dalam satu tahun pertumbuhan tabel ini adalah (asumsikan 1 bulan terdapat 30 hari dengn 26 hari kerja) : 3*2*26*12*23 = 43.056 byte atau 43,056 Kbyte
Tabel 4.29 Penyimpanan pelanggan
Field Type Ukuran kdPelanggan namaPelanggan alamatPelanggan
Char Karakter Karakter
8 30 100
Kapasitas dari Tabel pelanggan adalah 138 bytes Diperkirakan dalam satu hari terjadi 3 penambahan pelanggan baru Dalam satu tahun pertumbuhan tabel ini adalah (asumsikan 1 bulan terdapat 30 hari dengn 26 hari kerja) : 3*26*12*138 = 129.168 byte atau 129,168 Kbyte
Tabel 4.30 Penyimpanan telpPelanggan
Field Type Ukuran telpPelanggan kdPelanggan
Karakter Char
15 8
Kapasitas dari Tabel telpPelanggan adalah 23 bytes Diperkirakan dalam satu hari terjadi 3 penambahan pelanggan baru Diperkirakan setiap kali penambahan ada 3 nomor telepon Dalam satu tahun pertumbuhan tabel ini adalah (asumsikan 1 bulan terdapat 30 hari dengn 26 hari kerja) : 3*3*26*12*23 = 64.584 byte atau 64,584 Kbyte
143
Tabel 4.31 Penyimpanan faxPelanggan
Field Type Ukuran telpPelanggan kdPelanggan
Karakter Char
15 8
Kapasitas dari Tabel faxPelanggan adalah 23 bytes Diperkirakan dalam satu hari terjadi 3 penambahan pelanggan baru Diperkirakan setiap kali penambahan ada 2 nomor fax Dalam satu tahun pertumbuhan tabel ini adalah (asumsikan 1 bulan terdapat 30 hari dengn 26 hari kerja) : 3*2*26*12*23 = 43.056 byte atau 43,056 Kbyte
Tabel 4.32 Penyimpanan sales
Field Type Ukuran kdSales namaSales alamatSales
Char Karakter Karakter
3 20 100
Kapasitas dari Tabel sales adalah 123 bytes Diperkirakan dalam satu tahun terjadi 10 penambahan sales baru Dalam satu tahun pertumbuhan tabel ini adalah : 10*123 = 1.230 byte atau 1,23 Kbyte
Tabel 4.33 Penyimpanan telpSales
Field Type Ukuran telpSales kdSales
Karakter Char
15 3
Kapasitas dari Tabel telpSales adalah 18 bytes Diperkirakan dalam satu tahun terjadi 10 penambahan sales baru Diperkirakan satu sales memiliki 2 nomor telepon Dalam satu tahun pertumbuhan tabel ini adalah : 10*18*2 = 360 byte atau 0.36 Kbyte
Tabel 4.34 Penyimpanan bank
Field Type Ukuran kdBank namaBank namaCabang
Char Karakter Karakter
3 30 30
Kapasitas dari Tabel produksiDetail adalah 63 bytes Diperkirakan dalam satu hari terjadi 3 pemasukan bank Dalam satu tahun pertumbuhan tabel ini adalah (asumsikan 1 bulan terdapat 30 hari dengn 26 hari kerja) : 3*26*12*63 = 58.968 byte atau 58,968 Kbyte
144
Tabel 4.35 Penyimpanan produksiHeader
Field Type Ukuran kdProduksi kdSO kdBarang kuantitasBarang tglAwalProduksi deadline caraCetak finishing keterangan
Char Char Char Bilangan Date Date Karakter Karakter Teks
12 10 10 4 8 8 30 40 200
Kapasitas dari Tabel produksiHeader adalah 322 bytes Diperkirakan dalam satu hari terjadi 3 kali produksi Dalam satu tahun pertumbuhan tabel ini adalah (asumsikan 1 bulan terdapat 30 hari dengn 26 hari kerja) : 3*26*12*322 = 301.392 byte atau 301,392 Kbyte
Tabel 4.36 Penyimpanan produksiDetail
Field Type Ukuran kdProduksi kdBahan kuantitasBahan
Char Char Bilangan
12 8 4
Kapasitas dari Tabel produksiDetail adalah 24 bytes Diperkirakan dalam satu hari terjadi 3 kali produksi Diperkirakan dalam satu kali produksi membutuhkan 3 bahan Dalam satu tahun pertumbuhan tabel ini adalah (asumsikan 1 bulan terdapat 30 hari dengn 26 hari kerja) : 3*3*26*12*24 = 67.392 byte atau 67,392 Kbyte
Tabel 4.37 Penyimpanan pembayaranJual
Field Type Ukuran kdBayarJual kdSO kdBank noGiro tglBayar caraBayar jumlahBayar tglJatuhTempo keterangan
Char Char Char Karakter Date Karakter Desimal Date Teks
10 10 3 10 8 30 10 8 200
Kapasitas dari Tabel pembayaranJual adalah 289 bytes Diperkirakan dalam satu hari terjadi 3 kali transaksi pembayaran penjualan Dalam satu tahun pertumbuhan tabel ini adalah (asumsikan 1 bulan terdapat 30 hari dengn 26 hari kerja) : 3*26*12*289 = 270.504 byte atau 270,504 Kbyte
145
Tabel 4.38 Penyimpanan pembayaranBeli
Field Type Ukuran kdBayarBeli kdPO kdBank noGiro tglBayar jumlahBayar tglJatuhTempo keterangan
Char Char Char Karakter Date Desimal Date Teks
10 10 3 10 8 10 8 200
Kapasitas dari Tabel pembeyaranBeli adalah 259 bytes Diperkirakan dalam satu hari terjadi 3 kali transaksi pembayaran pembelian Dalam satu tahun pertumbuhan tabel ini adalah (asumsikan 1 bulan terdapat 30 hari dengn 26 hari kerja) : 3*26*12*259 = 242.424 byte atau 242,424 Kbyte
Tabel 4.39 Penyimpanan returPenjualanHeader
Field Type Ukuran kdReturPenjualan kdSO tglRetur
Char Char Date
8 10 8
Kapasitas dari Tabel returPenjualanHeader adalah 26 bytes Diperkirakan dalam satu hari terjadi 2 kali retur penjualan Dalam satu tahun pertumbuhan tabel ini adalah (asumsikan 1 bulan terdapat 30 hari dengn 26 hari kerja) : 2*26*12*26 = 16.224 byte atau 16,224 Kbyte
Tabel 4.40 Penyimpanan returPenjualanDetail
Field Type Ukuran kdReturPenjualan kdBarang kuntitasBarang keterangan
Char Char Bilangan Teks
8 10 4 200
Kapasitas dari Tabel returPenjualanDetail adalah 222 bytes Diperkirakan dalam satu hari terjadi 2 kali retur penjualan Diperkirakan dalam satu kali retur penjualan terdapat 2 jenis barang Dalam satu tahun pertumbuhan tabel ini adalah (asumsikan 1 bulan terdapat 30 hari dengn 26 hari kerja) : 2*2*26*12*222 = 277.056 byte atau 277,056 Kbyte
146
Tabel 4.41 Penyimpanan returPembelianHeader
Field Type Ukuran kdReturPembelian kdPO tglRetur
Char Char Date
8 10 8
Kapasitas dari Tabel returPembelianHeader adalah 26 bytes Diperkirakan dalam satu hari terjadi 2 kali retur pembelian Dalam satu tahun pertumbuhan tabel ini adalah (asumsikan 1 bulan terdapat 30 hari dengn 26 hari kerja) : 2*26*12*26 = 16.224 byte atau 16,224 Kbyte
Tabel 4.42 Penyimpanan returPembelianDetail
Field Type Ukuran kdReturPembelian kdBahan kuantitasBahan keterangan
Char Char Bilangan Teks
8 8 4 200
Kapasitas dari Tabel returPembelianDetail adalah 220 bytes Diperkirakan dalam satu hari terjadi 2 kali retur pembelian Diperkirakan dalam satu kali terjadi retur maka terdapat 2 bahan Dalam satu tahun pertumbuhan tabel ini adalah (asumsikan 1 bulan terdapat 30 hari dengn 26 hari kerja) : 2*2*26*12*220 = 274.560 byte atau 274,56 Kbyte
Tabel 4.43 Penyimpanan penjualanHeader
Field Type Ukuran kdSO kdPelanggan kdSales tglSO totalPenjualan keterangan
Char Char Char Date Desimal Teks
10 8 3 8 10 200
Kapasitas dari Tabel penjualanHeader adalah 239 bytes Diperkirakan dalam satu hari terjadi 5 transaksi penjualan Dalam satu tahun pertumbuhan tabel ini adalah (asumsikan 1 bulan terdapat 30 hari dengn 26 hari kerja) : 5*26*12*239 = 372.840 byte atau 372,84 Kbyte
147
Tabel 4.44 Penyimpanan penjualanDetail
Field Type Ukuran kdSO kdBarang hargaSatuan kuantitas
Char Char Desimal Bilangan
10 10 10 4
Kapasitas dari Tabel penjualanDetail adalah 34 bytes Diperkirakan dalam satu hari terjadi 5 transaksi penjualan Diperkirakan dalam satu penjualan terdapat 2 barang Dalam satu tahun pertumbuhan tabel ini adalah (asumsikan 1 bulan terdapat 30 hari dengn 26 hari kerja) : 5*2*26*12*34 = 106.080 byte atau 106,08 Kbyte
Tabel 4.45 Penyimpanan pembelianHeader
Field Type Ukuran kdPO kdPemasok tglPO totalPembelian keterangan
Char Char Date Desimal Teks
10 8 8 10 200
Kapasitas dari Tabel pembelianHeader adalah 236 bytes Diperkirakan dalam satu hari terjadi 5 transaksi pembelian Dalam satu tahun pertumbuhan tabel ini adalah (asumsikan 1 bulan terdapat 30 hari dengn 26 hari kerja) : 5*26*12*236 = 368.160 byte atau 368,16 Kbyte
Tabel 4.46 Penyimpanan pembelianDetail
Field Type Ukuran kdPO kdBahan hargaSatuan kuantitas
Char Char Desimal Bilangan
10 8 10 4
Kapasitas dari Tabel pembelianDetail adalah 32 bytes Diperkirakan dalam satu hari terjadi 5 transaksi pembelian Diperkirakan setiap pembelian terdapat 2 bahan Dalam satu tahun pertumbuhan tabel ini adalah (asumsikan 1 bulan terdapat 30 hari dengn 26 hari kerja) : 5*2*26*12*32 = 99.840 byte atau 99,84 Kbyte
148
Tabel 4.47 Penyimpanan pengirimanHeader
Field Type Ukuran kdDO kdSO tglPengiriman namaPengirim
Char Char Date Karakter
10 10 8 30
Kapasitas dari Tabel pengirimanHeader adalah 58 bytes Diperkirakan dalam satu hari terjadi 3 kali pengiriman Dalam satu tahun pertumbuhan tabel ini adalah (asumsikan 1 bulan terdapat 30 hari dengn 26 hari kerja) : 3*26*12*58 = 54.288 byte atau 54,288 Kbyte
Tabel 4.48 Penyimpanan pengirimanDetail
Field Type Ukuran kdDO kdBarang kuantitasBarang
Char Char Bilangan
10 10 4
Kapasitas dari Tabel pengirimanDetail adalah 24 bytes Diperkirakan dalam satu hari terjadi 3 kali pengiriman Diperkirakan dalam satu kali pengiriman terdapat 2 jenis barang Dalam satu tahun pertumbuhan tabel ini adalah (asumsikan 1 bulan terdapat 30 hari dengn 26 hari kerja) : 3*2*26*12*24 = 44.928 byte atau 44,928 Kbyte
Tabel 4.49 Penyimpanan orderDitolakHeader
Field Type Ukuran kdOrder kdPelanggan tglOrder
Char Char Date
10 8 8
Kapasitas dari Tabel orderDitolakHeader adalah 26 bytes Diperkirakan dalam satu hari terjadi 10 penolakan order Dalam satu tahun pertumbuhan tabel ini adalah (asumsikan 1 bulan terdapat 30 hari dengn 26 hari kerja) : 10*26*12*26 = 81.120 byte atau 81,12 Kbyte
149
Tabel 4.50 Penyimpanan orderDitolakDetail
Field Type Ukuran kdOrder namaBarangTolak keterangan alasanPenolakan
Char Karakter Teks Teks
10 40 200 200
Kapasitas dari Tabel orderDitolakDetail adalah 450 bytes Diperkirakan dalam satu hari terjadi 10 penolakan order Diperkirakan dalam 1 order penolakan terdapat 2 barang Dalam satu tahun pertumbuhan tabel ini adalah (asumsikan 1 bulan terdapat 30 hari dengn 26 hari kerja) : 10*2*26*12*450 = 2.808.000 byte atau 2.808,00 Kbyte
Tabel 4.51 Estimasi Disk Space
Nama Tabel Kapasitas dibutuhkan dalam 1 tahun orderDitolakHeader orderDitolakDetail pengirimanHeader pengirimanDetail pembelianHeader pembelianDetail penjualanHeader penjualanDetail barang bahanHeader bahanDetail pemasok telpPemasok faxPemasok pelanggan telpPelanggan faxPelanggan sales telpSales bank produksiHeader produksiDetail pembayaranJual pembayaranBeli returPenjualanHeader returPenjualanDetail returPembelianHeader returPembelianDetail
81,12 Kbyte 2808,00 Kbyte 54,288 Kbyte 44,928 Kbyte 368,16 Kbyte 99,84 Kbyte 372,84 Kbyte 106,08 Kbyte 252,72 Kbyte 265,824 Kbyte 29,952 Kbyte 129,168 Kbyte 64,584 Kbyte 43,056 Kbyte 129,168 Kbyte 64,584 Kbyte 43,056 Kbyte 1,23 Kbyte 0,36 Kbyte 58,968 Kbyte 301,392 Kbyte 67,392 Kbyte 270,504 Kbyte 242,424 Kbyte 16,224 Kbyte 277,056 Kbyte 16,224 Kbyte 274,56 Kbyte
Total space yang dibutuhkan dalam 1 tahun : 6483.702 Kbyte atau 6,483702 Mbyte
150
Total space yang dibutuhkan dalam 5 tahun : 5*6,483702 Mbyte = 32,41851 Mbyte
4.1.3.8 Merancang Mekanisme Keamanan
Tujuan dari langkah ini adalah untuk merancang mekanisme
keamanan pada basis data sesuai dengan spesifikasi user. Dimana
spesifikasi user dibagi menjadi dua, yaitu user admin (mengetahui
password) dan user biasa (masuk tanpa password):
• User Admin
GRANT ALL PRIVILEGES ON pelanggan TO Admin;
GRANT ALL PRIVILEGES ON telpPelanggan TO Admin;
GRANT ALL PRIVILEGES ON faxPelanggan TO Admin;
GRANT ALL PRIVILEGES ON orderDitolakHeader TO Admin;
GRANT ALL PRIVILEGES ON orderDitolakDetail TO Admin;
GRANT ALL PRIVILEGES ON penjualanHeader TO Admin;
GRANT ALL PRIVILEGES ON penjualanDetail TO Admin;
GRANT ALL PRIVILEGES ON pembelianHeader TO Admin;
GRANT ALL PRIVILEGES ON pembelianDetail TO Admin;
GRANT ALL PRIVILEGES ON pemasok TO Admin;
GRANT ALL PRIVILEGES ON telpPemasok TO Admin;
GRANT ALL PRIVILEGES ON faxPemasok TO Admin;
GRANT ALL PRIVILEGES ON produksiHeader TO Admin;
GRANT ALL PRIVILEGES ON produksiDetail TO Admin;
GRANT ALL PRIVILEGES ON pengirimanHeader TO Admin;
GRANT ALL PRIVILEGES ON pengirimanDetail TO Admin;
151
GRANT ALL PRIVILEGES ON returPenjualanHeader TO Admin;
GRANT ALL PRIVILEGES ON returPenjualanDetail TO Admin;
GRANT ALL PRIVILEGES ON returPembelianHeader TO Admin;
GRANT ALL PRIVILEGES ON returPembelianDetail TO Admin;
GRANT ALL PRIVILEGES ON pembayaranJual TO Admin;
GRANT ALL PRIVILEGES ON pembayaranBeli TO Admin;
GRANT ALL PRIVILEGES ON bahanHeader TO Admin;
GRANT ALL PRIVILEGES ON bahanDetail TO Admin;
GRANT ALL PRIVILEGES ON barang TO Admin;
GRANT ALL PRIVILEGES ON sales TO Admin;
GRANT ALL PRIVILEGES ON telpSales TO Admin;
GRANT ALL PRIVILEGES ON bank TO Admin;
• User Biasa
GRANT Select, Insert PRIVILEGES ON pelanggan TO Biasa;
GRANT Select, Insert PRIVILEGES ON telpPelanggan TO Biasa;
GRANT Select, Insert PRIVILEGES ON faxPelanggan TO Biasa;
GRANT Select, Insert PRIVILEGES ON orderDitolakHeader TO Biasa;
GRANT Select, Insert PRIVILEGES ON orderDitolakDetail TO Biasa;
GRANT Select, Insert PRIVILEGES ON penjualanHeader TO Biasa;
GRANT Select, Insert PRIVILEGES ON penjualanDetail TO Biasa;
GRANT Select, Insert PRIVILEGES ON pembelianHeader TO Biasa;
GRANT Select, Insert PRIVILEGES ON pembelianDetail TO Biasa;
GRANT Select, Insert PRIVILEGES ON pemasok TO Biasa;
152
GRANT Select, Insert PRIVILEGES ON telpPemasok TO Biasa;
GRANT Select, Insert PRIVILEGES ON faxPemasok TO Biasa;
GRANT Select, Insert PRIVILEGES ON produksiHeader TO Biasa;
GRANT Select, Insert PRIVILEGES ON produksiDetail TO Biasa;
GRANT Select, Insert PRIVILEGES ON pengirimanHeader TO Biasa;
GRANT Select, Insert PRIVILEGES ON pengirimanDetail TO Biasa;
GRANT Select, Insert PRIVILEGES ON returPenjualanHeader TO Biasa;
GRANT Select, Insert PRIVILEGES ON returPenjualanDetail TO Biasa;
GRANT Select, Insert PRIVILEGES ON returPembelianHeader TO
Biasa;
GRANT Select, Insert PRIVILEGES ON returPembelianDetail TO Biasa;
GRANT Select, Insert PRIVILEGES ON pembayaranJual TO Biasa;
GRANT Select, Insert PRIVILEGES ON pembayaranBeli TO Biasa;
GRANT Select, Insert PRIVILEGES ON bahanHeader TO Biasa;
GRANT Select, Insert PRIVILEGES ON bahanDetail TO Biasa;
GRANT Select, Insert PRIVILEGES ON barang TO Biasa;
GRANT Select, Insert PRIVILEGES ON sales TO Biasa;
GRANT Select, Insert PRIVILEGES ON telpSales TO Biasa;
GRANT Select, Insert PRIVILEGES ON bank TO Biasa;
153
4.2 Perancangan Aplikasi
4.2.1 Struktur Menu
154
4.2.2 State Transition Diagram
Gambar 4.19 State Transition Diagram Menu Utama
Gambar 4.20 STD Menu Transaksi
155
Gambar 4.21 STD Menu Transaksi Produksi, Pengiriman dan Order Ditolak
Gambar 4.22 STD Menu Transaksi Beli
156
Gambar 4.23 STD Menu Detail Transaksi Beli
Gambar 4.24 STD Menu Transaksi Jual
Gambar 4.25 STD Menu Detail Transaksi Jual
157
Gambar 4.26 STD Menu Master
Gambar 4.27 STD Menu Master Detail Pelanggan dan Pemasok
Gambar 4.28 STD Menu Master Detail Sales, Barang dan Bank
158
Gambar 4.29 STD Menu Master Detail Pemasok dan Bahan
Gambar 4.30 STD Menu Laporan
Gambar 4.31 STD Menu Window
159
Gambar 4.32 STD Menu Aplikasi
4.2.3 Spesifikasi Proses
Dalam perancangan aplikasi basis data pada PT. Multitech Label
Indonesia ini terdapat 51 modul yang menjadi media operasi basis data.
Spesifikasi pseudocode prosedur yang tersembunyi di balik tampilan layar dapat
dilihat secara lengkap di Lampiran A. Berikut adalah ke-51 modul tersebut :
1. Form Login
2. Form Lihat, Tambah dan Ubah Pelanggan
3. Form Lihat, Tambah dan Ubah Pemasok
4. Form Lihat, Tambah dan Ubah Barang
5. Form Lihat, Tambah dan Ubah Bahan
6. Form Lihat, Tambah dan Ubah Sales
7. Form Lihat, Tambah dan Ubah Bank
8. Form Lihat, Tambah dan Ubah Produksi
9. Form Lihat, Tambah dan Ubah Order
10. Form Lihat, Tambah dan Ubah Penjualan
160
11. Form Lihat, Tambah dan Ubah Pembelian
12. Form Lihat, Tambah dan Ubah Pengiriman
13. Form Lihat, Tambah dan Ubah Retur Jual
14. Form Lihat, Tambah dan Ubah Retur Beli
15. Form Lihat, Tambah dan Ubah Bayar Beli
16. Form Lihat, Tambah dan Ubah Bayar Jual
17. Form Pilihan Laporan Pembelian
18. Form Pilihan Laporan Penjualan
19. Form Pilihan Laporan Retur Pembelian
20. Form Pilihan Laporan Retur Penjualan
4.2.4 Perancangan Input dan Output
4.2.4.1 Perancangan Input
Perancangan antarmuka aplikasi basis data dibuat berdasarkan hasil
diskusi antara penulis dengan karyawan PT Multitech Label Indonesia
yang akan menggunakan sistem.
Perancangan antarmuka aplikasi basis data dilakukan menggunakan
Visual Basic. Terdapat 51 rancangan input untuk masing-masing modul
yang telah dispesifikasikan sebelumnya. Hasil perancangan input
lengkapnya dapat dilihat di Lampiran B, yang akan menampilkan 51
bentuk tampilan aplikasi yang telah dirancang.
161
4.2.4.2 Perancangan Output
Berikut merupakan rancangan hasil keluaran yang dapat dilakukan
oleh sistem, yaitu rancangan keluaran laporan penjualan barang, laporan
pembelian bahan, laporan retur penjualan dan laporan retur pembelian.
PT Multitech Label Indonesia
JL. Baru Kubur Koja III No. 12, Penjaringan, Jakarta Utara, 14440
Tanggal : DD-MM-YY
Laporan Penjualan Barang
Periode : MM
Tanggal
Penjualan
Nomor
Faktur Pelanggan
Nama
Barang Jumlah
dd-mm-yy x-8-x
x-8-x
x-6-x
x-6-x
xx-25-xx
xx-25-xx
xx.xxx.xxx
xx.xxx.xxx
Total Per Tanggal xxx.xxx.xxx
dd-mm-yy x-8-x
x-8-x
x-6-x
x-6-x
xx-25-xx
xx-25-xx
xx.xxx.xxx
xx.xxx.xxx
Total Per Tanggal xxx.xxx.xxx
Total Keseluruhan xx.xxx.xxx.xxx
Gambar 4.33 Perancangan Output Laporan Penjualan
162
PT Multitech Label Indonesia
JL. Baru Kubur Koja III No. 12, Penjaringan, Jakarta Utara, 14440
Tanggal : DD-MM-YY
Laporan Pembelian Bahan
Periode : MM
Tanggal
Pembelian
Nomor
Faktur
Nama
Pemasok
Nama
Bahan Jumlah
dd-mm-yy x-8-x
x-8-x
xx-25-xx
xx-25-xx
x-8-x
x-8-x
xx.xxx.xxx
xx.xxx.xxx
Total Per Tanggal xxx.xxx.xxx
dd-mm-yy x-8-x
x-8-x
xx-25-xx
xx-25-xx
x-8-x
x-8-x
xx.xxx.xxx
xx.xxx.xxx
Total Per Tanggal xxx.xxx.xxx
Total Keseluruhan xx.xxx.xxx.xxx
Gambar 4.34 Perancangan Output Laporan Pembelian
163
PT Multitech Label Indonesia
JL. Baru Kubur Koja III No. 12, Penjaringan, Jakarta Utara, 14440
Tanggal : DD-MM-YY
Laporan Retur Penjualan Barang
Periode : MM
Tanggal
Retur
Kode Retur
Penjualan
Nomor
Faktur
Kode
Barang
Nama
Barang Kuantitas
dd-mm-yy x-6-x
x-6-x
x-8-x
x-8-x
x-8-x
x-8-x
xx-36-xx
xx-36-xx
xxxx
xxxx
dd-mm-yy x-6-x
x-6-x
x-8-x
x-8-x
x-8-x
x-8-x
xx-36-xx
xx-36-xx
xxxx
xxxx
Gambar 4.35 Perancangan Output Laporan Retur Penjualan
164
PT Multitech Label Indonesia
JL. Baru Kubur Koja III No. 12, Penjaringan, Jakarta Utara, 14440
Tanggal : DD-MM-YY
Laporan Retur Pembelian Bahan
Periode : MM
Tanggal
Retur
Kode Retur
Pembelian
Nomor
Faktur
Kode
Bahan
Nama
Bahan Kuantitas
dd-mm-yy x-6-x
x-6-x
x-8-x
x-8-x
x-8-x
x-8-x
xx-36-xx
xx-36-xx
xxxx
xxxx
dd-mm-yy x-6-x
x-6-x
x-8-x
x-8-x
x-8-x
x-8-x
xx-36-xx
xx-36-xx
xxxx
xxxx
Gambar 4.36 Perancangan Output Laporan Retur Pembelian
165
4.2.5 Rencana Implementasi
4.2.5.1 Spesifikasi Perangkat Keras
Spesifikasi perangkat keras minimal yang dibutuhkan untuk
implementasi sistem dan aplikasi basis data pada PT Multitech Label
Indonesia adalah sebagai berikut :
1. Prosesor : Pentium Intel / AMD 800 MHz
2. RAM : 128 MB
3. Harddisk : 20GB
4. Printer : Printer inkjet standar
5. Backup storage : 1 GB
4.2.5.2 Spesifikasi Perangkat Lunak
Spesifikasi perangkat lunak minimal yang dibutuhkan untuk
implementasi sistem dan aplikasi basis data pada PT Multitech Label
Indonesia adalah sebagai berikut :
1. Sistem Operasi : Microsoft Windows 9x dengan VB
Runtime 6.0
2. Database SQL Server 2000
3. Microsoft Visual Basic 6.0
166
4.2.5.3 Cara Pengoperasian Aplikasi
Gambar 4.37 Layar Login Aplikasi
Awalnya user dihadapkan pada layar login. Di sini user dapat
memilih untuk login atau masuk sebagai user biasa. Bagi yang mengetahui
password admin dapat login dan mendapatkan hak akses update dan delete
data. Pengguna biasa hanya dapat melakukan operasi baca terhadap data.
Gambar 4.38 Layar Kesalahan Login
Jika password yang dimasukkan salah, maka akan tampil
pemberitahuan dan kotak password dikosongkan kembali.
167
Gambar 4.39 Layar Utama Aplikasi
Setelah melewati layar login, user dihadapkan pada menu utama
aplikasi ini. Semua layar dialog yang dapat dipilih akan muncul di dalam
halaman utama ini. Menu yang ada adalah sebagai berikut : Transaksi,
Master, Laporan, Window dan Aplikasi. Menu Transaksi memiliki
submenu sebagai berikut : Beli, Jual, Produksi, Pengiriman dan Order
Ditolak. Menu Master memiliki submenu Pelanggan, Pemasok, Sales,
Bahan, Barang dan Bank. Menu Laporan berisi Laporan Penjualan, Laporan
Pembelian, Laporan Retur Penjualan dan Laporan Retur Pembelian. Menu
Window adalah menu dinamis yang menampilkan daftar windows dialog
yang terbuka. Menu ini dapat digunakan untuk berpindah antar dialog yang
mungkin saling tumpang tindih. Menu terakhir, Aplikasi, berisi submenu
Logout dan Exit. Jika user masuk sebagai user biasa, menu Logout akan
dinonaktifkan. Baik menu Exit maupun Logout akan membawa user
kembali ke layar Login.
168
Gambar 4.40 Layar Lihat Pelanggan
Layar ini akan muncul ketika user memilih menu Master>Pelanggan.
Di sini user dapat melihat data pelanggan perusahaan. Untuk melihat nomor
telepon dan nomor fax pelanggan yang bersangkutan, user dapat men-
double click baris data pelanggan tersebut, atau dapat juga dengan memilih
baris data kemudian memilih menu Update. Pada layar Lihat Pelanggan ini
dapat dilakukan pencarian atas data pelanggan yang ada. Pencarian dapat
dilakukan atas beberapa kategori, yaitu Kode Pelanggan, Nama Pelanggan,
Alamat Pelanggan, Telepon Pelanggan dan Fax Pelanggan. Jika user
memilih menu “Cari” tapi belum memilih kategori pencarian dan belum
memasukkan kata kunci pencarian, maka akan keluar kotak pesan yang
berisi permintaan untuk memilih kategori pencarian dan mengisi kata kunci
169
terlebih dahulu. Jika syarat pencarian telah dipenuhi, hasil pencarian akan
ditampilkan di layar setelah user mengklik menu “Cari”.
Gambar 4.41 Layar Tambah Pelanggan
Pada layar ini, user dapat melakukan penambahan data pelanggan.
Kode Pelanggan akan dihasilkan secara otomatis. User cukup mengisi
rincian pelanggan seperti nama, alamat, nomor telepon dan fax. Untuk data
telepon dan fax, user dapat memasukkan lebih dari satu nomor untuk
masing-masing pelanggan. Ketika user meng-klik tombol “Tambah”, akan
muncul kotak dialog yang meminta masukan user. Jika tombol “Hapus”
dipilih dan user telah memilih salah satu nomor untuk dihapus maka nomor
tersebut akan dihapus dari daftar. Jika user belum memilih nomor maka
akan ditampilkan pesan bahwa tidak ada nomor telepon / fax yang terpilih
untuk dihapus. Tombol “Save” digunakan untuk menyimpan data baru ke
170
database. Jika penyimpanan berhasil dilakukan akan keluar pesan bahwa
data telah disimpan dengan sukses.
Gambar 4.42 Layar Ubah Pelanggan
Layar pengubahan data pelanggan dapat diakses dengan dua cara,
pertama adalah dengan memilih satu baris data pada layar Lihat Pelanggan
kemudian mengklik tombol “Update”, dan cara kedua adalah dengan men-
double-click salah satu baris data pada layar Lihat Pelanggan. Pertama-tama
layar ini me-load isi baris data yang dipilih untuk diubah ke dalam dialog
Update Data Pelanggan. Jika user mengklik tombol “Save” maka
pengubahan akan disimpan setelah sebelumnya dilakukan validasi
kelengkapan data (nama dan alamat terisi). Jika penyimpanan berhasil
dilakukan akan keluar pesan bahwa data telah diubah dengan sukses.
171
Gambar 4.43 Layar Lihat Sales
Layar Lihat Sales ini akan terbuka setelah user memilih menu
Master > Sales. Di sini user dapat melihat detil data sales yang bekerja di
PT. Multitech Label Indonesia. Seperti Layar Lihat Pelanggan, pada layar
ini juga dapat dilakukan pencarian atas beberapa kategori yaitu Kode,
Nama dan Alamat sales.
172
Gambar 4.44 Layar Tambah Sales
Pada layar Tambah Data Sales, Kode Sales akan dihasilkan secara
otomatis. User dapat mengisikan rincian sales seperti nama, alamat dan
nomor telepon. Proses pengisian nomor telepon sama seperti pada layar
Tambah data Pelanggan. Jika penyimpanan berhasil dilakukan akan keluar
pesan bahwa data telah disimpan dengan sukses.
173
Gambar 4.45 Layar Ubah Sales
Layar Update Data Sales ini dapat diakses melalui tombol Update
maupun double-click pada baris data Lihat Sales. Pada layar ini dapat
dilakukan pengubahan pada data sales yang telah dipilih. Jika data telah
dimasukkan secara lengkap, maka tombol “Save” akan menyimpan
perubahan yang telah dilakukan. Tombol “Exit” akan membatalkan
perubahan dan menutup layar pengubahan data sales. Jika penyimpanan
berhasil dilakukan akan keluar pesan bahwa data telah disimpan dengan
sukses.
174
Gambar 4.46 Layar Lihat Bahan
Data master berikutnya adalah data bahan. Pada layar ini dapat
dilihat dua jenis layar data. Layar data yang berada di atas menampilkan
data bahan secara umum. Data bahan umum yang ditampilkan adalah data
Kode Bahan, Nama Bahan, Satuan Bahan, Jumlah Stok, Jumlah Minimal,
Tanggal Pembelian Akhir dan Keterangan. Layar data di bawah akan
menampilkan data daftar pemasok bahan yang dipilih user. Terlihat pada
gambar di atas, layar data bawah sedang menampilkan data pemasok-
pemasok yang memasok bahan HVS pada PT Multitech Label Indonesia.
Detil pemasok yang ditampilkan adalah Kode Pemasok, Nama Pemasok
175
dan alamat Pemasok. Jika layar data bawah di-double click, maka akan
muncul Layar Update Pemasok yang bersangkutan. Pencarian dapat
dilakukan dalam kategori Kode Bahan, Nama Bahan, Satuan Bahan, Jumlah
minimal, Jumlah Stok, Keterangan, Kode Pemasok, Nama Pemasok dan
Alamat Pemasok. Tombol “Insert” akan memunculkan layar Tambah
Bahan. Tombol “Update” akan memunculkan layar Ubah Data Bahan dan
tombol “Delete” akan menghapus data bahan yang bersangkutan. Tombol
Refresh akan mengupdate tampilan baris data bahan jika terjadi perubahan
pada data bahan luar layar ini.
Gambar 4.47 Layar Tambah Bahan
176
Pada layar Tambah Data Bahan ini user dapat menambah data bahan.
Rincian yang perlu diisi user adalah Nama Bahan, Satuan Bahan, Jumlah
Minimal, Jumlah Stok dan daftar pemasok yang memasok bahan ini.
Keterangan tidak harus diisi. Kode Bahan telah dihasilkan secara otomatis.
Untuk menambah pemasok ke dalam daftar, user dapat memilih kode
pemasok dari daftar combo kode pemasok yang berada di sisi kanan atas
layar. Nama pemasok dapat dilihat namun tidak dapat diubah. Nama
pemasok ini ditampilkan sebagai sarana untuk membantu user menemukan
pemasok yang diinginkan. Ketika tombol “Tambah” diklik, akan dilakukan
pemeriksaan apakah kode pemasok ini telah ada di dalam daftar. Jika belum
maka pemasok akan ditambahkan ke daftar. Tombol “Hapus” digunakan
untuk menghapus kode pemasok dari daftar. User harus memilih salah satu
kode pemasok dalam daftar sebelum dapat menghapusnya. Tombol Save
akan menyimpan data bahan yang baru dimasukkan ke dalam database. Jika
daftar pemasok bahan masih kosong, akan ditampilkan pesan bahwa data
bahan belum lengkap. Jika penyimpanan berhasil dilakukan akan keluar
pesan bahwa data telah disimpan dengan sukses.
177
Gambar 4.48 Layar Ubah Bahan
Pengubahan data bahan dapat dilakukan di layar ini. Masing-masing
kotak teks rincian data bahan telah diisi dengan nilai asli baris data yang
dipilih. Seperti pada Layar Tambah Data Bahan, user dapat melakukan
penambahan dan penghapusan ke dan dari daftar pemasok bahan. Klik
“Save” untuk menyimpan perubahan dan “Exit” untuk membatalkan
perubahan. Jika daftar pemasok bahan masih kosong, akan ditampilkan
pesan bahwa data bahan belum lengkap. Jika penyimpanan berhasil
dilakukan akan keluar pesan bahwa data telah disimpan dengan sukses.
178
Gambar 4.49 Layar Lihat Barang
Pada Layar Lihat Barang user dapat melihat daftar barang yang ada
di PT Multitech Label Indonesia. Rincian data yang ditampilkan adalah
Kode Barang, Nama Barang, Satuan Barang dan Keterangan. Pencarian
dapat dilakukan dalam kategori Kode, Nama, Satuan dan Keterangan
barang. Tombol “Insert” akan menampilkan layar Tambah Data Barang,
tombol “Update” akan menampilkan layar Ubah Data Barang. Tombol
“Refresh” akan mengupdate tampilan baris data barang jika terjadi
perubahan pada data barang luar layar ini.
179
Gambar 4.50 Layar Tambah Barang
Penambahan data Barang dilakukan di layar ini. Kode Barang
dihasilkan secara otomatis. Setelah mengisi rincian Nama Barang dan
Satuan Barang, user dapat mengklik “Save” untuk menyimpan data atau
“Exit” untuk membatalkan penambahan.
Gambar 4.51 Layar Ubah Barang
180
Seperti layar-layar pengubahan data sebelumnya, pada layar ini
dapat dilakukan pengubahan data. Data barang yang dipilih untuk diubah
di-load ke tempatnya masing-masing untuk kemudian dapat diubah oleh
user. Save akan menyimpan perubahan dan Exit akan membatalkan
perubahan.
Gambar 4.52 Layar Lihat Bank
Data bank ditampilkan pada layar ini. Nama Bank dan Nama
Cabang adalah detil data bank yang tampil. Dapat dilakukan pencarian atas
data bank dalam kategori Kode Bank, Nama Bank dan Nama Cabang.
181
Gambar 4.53 Layar Tambah Bank
Penambahan data bank dapat dilakukan di layar Tambah Data Bank.
Jika penyimpanan berhasil dilakukan akan keluar pesan bahwa data telah
disimpan dengan sukses.
Gambar 4.54 Layar Ubah Bank
182
Layar Ubah Data Bank digunakan untuk mengubah data bank.
Tombol “Save” digunakan untuk menyimpan perubahan.
Gambar 4.55 Layar Lihat Pemasok
Data master terakhir adalah data pemasok. Layar ini menampilkan
daftar pemasok bahan pada PT. Multitech Label Indonesia. Dapat dilakukan
pencarian dalam kategori Kode Pemasok, Nama Pemasok dan Alamat
Pemasok.
183
Gambar 4.56 Layar Tambah Pemasok
Seperti data pelanggan, data pemasok juga boleh memiliki data
nomor telepon dan nomor fax lebih dari satu. Mekanisme kerja layar
Tambah Data Pemasok ini sama saja dengan mekanisme layar Tambah
Pelanggan, hanya saja ketika tombol “Save” ditekan, data pemasok akan
disimpan ke database ke dalam tabel pemasok sedangkan pada layar
Tambah Data Pelanggan, data akan disimpan ke tabel pelanggan.Data-data
akan disimpan ke tabel pemasok jika kolom nama, alamat dan telepon
pemasok telah diisi.