88
PERANCANGAN DAN IMPLEMENTASI
4.1 Perancangan Basisdata
Dalam merancangan basisdata pada PT. Ippachi Karya Sukses, digunakanlah tiga
tahap utama, yaitu :
1.Perancangan basisdata konseptual 2.Perancangan basisdata logikal 3.Perancangan basisdata fisikal
4.1.1 Perancangan Basisdata Konseptual
Perancangan basisdata konseptual merupakan suatu proses pembuatan
model menggunakan informasi yang diperoleh oleh perusahaan, terlepas dari semua pertimbangan fisik. Langkah-langkah penting dalam merancang basisdata secara konseptual adalah :
1.Identifikasi tipe entitas 2.Identifikasi tipe relasional
3.Identifikasi dan asosiasi atribut suatu entitas 4.Identifikasi kandidat dan primay key setiap entitas 5.Validasi model konseptual lokal dengan transaksi user
4.1.1.1 Identifikasi tipe entitas
Langkah ini bertujuan untuk mengidentifikasi tipe entitas yang utama yang dibutuhkan.Adapun tipe entitas yang diidentifikasi adalah seperti yang terlihat pada tabel di bawah ini.
Nama Entity Keterangan Entity
Supplier Merupakan entitas yang memberikan informasi tentang supplier yang memasok barang ke PT. IKS
Staf Merupakan entitas yang memberikan informasi tentang staf baik sales, staff, manajer ataupun presiden direktur.
Sales Contract Merupakan entitas yang berisi informasi tentang pemesanan yang dilakukan oleh PT. IKS kepada supplier
SC Payment Merupakan entitas yang berisi tentang jumlah pembayaran yang dilakukan oleh PT. IKS kepada supplier
Bill of Lading Merupakan entitas yang berisi total produk yang dibeli dari supplier beserta total beratnya Produk Merupakan entitas yang berisi informasi
tentang produk yang didatangkan dan yang akan dijual oleh PT. IKS yaitu sepeda listrik. Customer Entitas yang berisikan informasi tentang
konsumen dari PT. IKS
dilakukan oleh konsumen.
SP Payment Entitas yang berisi informasi pembayaran yang dilakukan oleh konsumen kepada PT. IKS Delivery Order
Penjualan
Merupakan entitas yang berisi informasi tentang pengiriman barang dari PT. IKS ke alamat konsumen.
Delivery Order Pembelian
Merupakan entitas yang berisi informasi tentang pengiriman barang dari supplier ke PT IKS
Commercial Invoice
Merupakan entitas yang berisi produk-produk beserta jumlah dan harga yang dibeli oleh PT IKS dari supplier
Packing List Entitas yang berisi berat beserta ukuran keseluruhan dari produk yang dibeli dari supplier
Tabel 4.1 Identifikasi Tipe Entitas
4.1.1.2 Identifikasi Tipe Relasional
Tujuan dari tahapan ini adalah untuk menentukan
hubungan-hubungan penting yang ada antara jenis entitas yang telah di identifikasikan.
Langkah-langkah penting dalam identifikasi tipe rasional adalah : 1. Menentukan ER Diagram (gambar 4.1)
Hubungan antara semua entity-entity dapat dilihat pada diagram berikut ini: Gambar 4.1 Diagram ER C o m m e rc ia l In v o ic e B ill o f L a d in g S a le s C o n tra c t S C P a y m e n t S u p p lie r P ro d u k S ta f S u ra t P e s a n a n D e liv e ry O rd e r P e n ju a la n C u s to m e r S P P a y m e n t P a c k in g L is t D e liv e ry O rd e r P e m b e lia n m e m ilik i d is e rta i d is e r ta i m e m ilik i D ik ir im k e m e n a m b a h M e m e r ik s a m e n g u ra n g i b e r d a s a r k a n m e la k u k a n m e m b u a t D ik irim k e m e m ilik i D ib e rik a n k e m e la k u k a n b e r d a s a r k a n D ib e rik a n k e m e m b u a t 1 ..1 1 ..1 1 ..1 1 ..1 1 ..1 1 ..1 1 ..1 1 ..1 1 ..1 1 ..1 1 ..1 1 ..1 1 ..1 1 ..1 1 ..1 1 ..1 0 ..* 0 ..* 1 ..1 1 ..1 0 ..* 0 ..* 0 ..* 0 ..* 0 ..* 0 ..* 0 ..* 0 ..* 1 ..1 1 ..1 1 ..* 1 ..* 0 ..* 1 ..* 1 ..* 1 ..*
Tipe relationship adalah hubungan antara semua tipe entity yang telah di identifikasi dari analisa kebutuhan. Hubungan antara semua entity yang telah di identifikasikan sebelumnya dapat dilihat pada tabel sebagai berikut:
Entity name Mul tipli city
Relationship Entity name Mul
tipli city
1..1 Membuat Sales Contract 0..*
1..1 Melakukan SC Payment 0..*
Staf
1..1 Memeriksa Produk 0..*
1..1 Membuat Surat Pesanan 0..*
Customer
1..1 Melakukan SP Payment 0..*
0..* Diberikan ke Supplier 1..1
Sales Contract
1..1 Memiliki Commercial Invoice 1..1
SC Payment 1..1 Berdasarkan Sales Contract 1..1
0..* Diberikan ke Staf 1..1
Surat Pesanan
1..1 Memiliki Delivery Order Penjualan
1..1
SP Payment 1..1 Berdasarkan Surat Pesanan 1..1
Commercial Invoice
1..1 Disertai Packing List 1..1
Tabel 4.2 Multiplicity Tipe Relasional
4.1.1.3 Identifikasi dan Asosiasi Atribut suatu Entitas
Tujuan dari tahapan ini adalah untuk mengidentifikasikan dan mengasosiasikan atribut dari entitas atau tipe relasi.
a. Staf
NIP, Nama_staf, posisi, Alamat, Telepon, Handphone, sex, komisi, bonus, gaji_pokok, tgl_mulai_kerja.
b. Supplier
Id_supplier, Nama_supplier, Alamat, Telp, Fax, E-mail c. Produk
Id_produk, Nama_produk, Satuan, Warna, Harga_satuanm Stok d. Customer
Id_customer, Nama_customer, Alamat, Telp, Handphone, Fax
Packing List 1..1 Disertai Bill of Lading 1..1
Bill of Lading 1..1 Memiliki Delivery Order Pembelian 1..1 0..* Menambah Produk 1..* Delivery Order Pembelian 0..* Dikirim ke Staf 1..*
e. Packing List
No_PL, Tgl_PL, No_SC, No_CI, Keterangan_produk f. Commercial Invoice
No_CI, Tgl_CI, Id_produk, Rincian_produk, Quan, Harga_Satuan, Jumlah, Total
g. Surat Pesanan
No_SP, Tgl_SP, Nama_customer, Alamat, Telp, Id_produk, Warna, Quantity, Perlengkapan_tambahan, Harga Satuan, Total, Uang_Muka, Sisa h. Bill of Lading
No_BL, Tgl_BL, Keterangan_produk i. Sales Contract
No_SC, Tgl_SC, Id_produk, Quan, Harga_Satuan, Jumlah, Total j. Delivery Order Pembelian
Tgl, No_pengiriman, No_SC, Id_produk, Nama_produk, Quan, harga_satuan, Jumlah, Total
k. Delivery Order Penjualan
Tgl, No_pengiriman, No_SP, Id_produk, Nama_produk, Quan, harga_satuan, Jumlah, Total
l. SC Payment
Tgl, No_SCPayment, No_pengiriman, NIP, Jumlah m. SP Payment
Tgl, No_SPPayment, Id_customer, Nama_customer, Jumlah
Berikut ini merupakan tabel dari mengidentifikasikan dan mengasosiasikan atribut dari entitas atau tipe relasi.
Entity Name Atribute Description Data Type & Lenght
Nulls Multiva lue
NIP Secara unik
mengidentifi kasi staf
5 variabel karakter
Tidak Tidak
Nama_staf Nama Staf 30 variabel
karakter
Tidak Tidak
Posisi Posisi atau
jabatan yang dimiliki 15 variabel karakter Tidak Tidak Alamat Alamat tempat tinggal staf 50 variabel karakter Tidak Tidak
Telepon No telp staf numerik Tidak Ya
Handphone No
handphone staf
numerik Ya Ya
Sex Jenis kelamin
staf 1 variabel karakter (P/W) Tidak Tidak Staf
Bonus Bonus staf numerik Ya Tidak
Gaji_pokok Gaji awal
staf
numerik Tidak Tidak
Tgl_mulai_kerja Tanggal mulai kerja staff
tanggal Tidak Tidak
Id_supplier Mengidentifi kasi supplier 5 variabel karakter Tidak Tidak Nama_supplier Nama_Suppl ier 30 variabel karakter Tidak Tidak Alamat Alamat supplier 50 variabel karakter Tidak Tidak Telp No telpon supplier numerik Tidak Ya Fax No Fax supplier numerik Tidak Ya Supplier E-mail Alamat e-mail supplier 20 variabel karakter Tidak Tidak Id_produk Mengidentifi kasi produk 7 variabel karakter Tidak Tidak Nama_produk Nama_produ k 20 variabel karakter Tidak Tidak Produk
barang karakter
Warna Warna 10 variabel
karakter
Tidak Ya
Harga_satuan Harga dari produk
numerik Tidak Tidak
Stok Stok dari
produk
numerik Tidak Tidak
Id_customer Mengidentifi kasi customer 5 variabel karakter Tidak Tidak Nama_customer Nama_custo mer 15 variabel karakter Tidak Tidak Alamat Alamat customer 30 variabel karakter Tidak Tidak Telp No telpon customer numerik Tidak Ya Handphone No telpon seluler customer numerik Ya Ya Customer Fax No fax customer numerik Tidak Ya Packing List
No_PL Nomor surat
packing list
Tgl_PL Tanggal packing list
tanggal Tidak Tidak
No_SC Nomor Sales
Contract
numerik Tidak Tidak
No_CI Nomor
Commercial Invoice
numerik Tidak Tidak
Keterangan_produk Deskripsi produk yang dikirim 50 variabel karakter Tidak Tidak No_CI Nomor commercial invoice
numerik Tidak Tidak
Tgl_CI Tanggal
invoice dibuat
Tanggal Tidak Tidak
Id_Produk Kode produk
yang dikirim 8 variabel karakter Tidak Tidak Rincian_Produk Deskripsi dan perincian dari produk 30 variabel karakter Tidak Tidak Commercia l Invoice Quan Banyaknya produk
Harga_satuan Harga satuan produk
numerik Tidak Tidak
Jumlah Jumlah
produk
Numerik Tidak Tidak
Total Total harga
yang dipesan
Numerik Tidak Tidak
No_SP Nomor surat
pesanan
numerik Tidak Tidak
Tgl_SP Tanggal surat
pesanan dibikin
Tanggal Tidak Tidak
Nama_customer Nama Customer 15 variabel karakter Tidak Tidak Alamat Alamat customer 30 variabel karakter Tidak Tidak Telp Nomor telepon customer Numerik Tidak Ya
Id_produk Kode produk
yang dipesan customer 7 variabel karakter Tidak Tidak Surat Pesanan Warna Warna produk yang 10 variabel karakter Tidak Tidak
dipesan
Quan Banyaknya
barang yang dipesan
Numerik Tidak Tidak
Perlengkapan_tambaha n Barang lain seperti sparepart yang dipesan 20 variabel karakter Ya Tidak
Harga_satuan Harga satuan barang
Numerik Tidak Tidak
Total Total harga
pesanan
Numerik Tidak Tidak
Uang_muka Uang muka
yang dibayar customer
Numerik Tidak Tidak
Sisa Sisa uang
yang harus dibayar
Numerik Ya Tidak
No_BL Nomor bill
of lading
numerik Tidak Tidak Bill of
Lading
Tgl_BL Tanggal
pembuatan bill of lading
Keterangan_produk Keterngan produk yang dikirim 50 variabel karakter tidak Tidak
No_SC Nomor sales
contract
Numerik Tidak tidak
Tgl_SC Tanggal sales
contract dibuat
Tanggal Tidak Tidak
Id_produk Kode produk 7 variabel karakter
Tidak Tidak
Quan Banyaknya
barang
Numerik Tidak Tidak
Harga_satuan Harga satuan produk
Numerik Tidak Tidak
Jumlah Banyaknya
barang yang dipesan
Numerik Tidak Tidak Sales
Contract
Total Total harga
barang yang dipesan
Numerik Tidak Tidak
Tgl Tanggal DO
pembelian
Tanggal Tidak Tidak Delivery
Order
pengiriman
No_SC Nomor SC Numerik Tidak Tidak
Id_produk Kode produk
yang dipesan 7 variabel karakter Tidak Tidak Nama_produk Nama_produ k yang dipesan 20 variabel karakter Tidak Tidak Quan Banyaknya produk yang dipesan
Numerik Tidak Tidak
Harga_satuan Harga satuan barang
Numerik Tidak Tidak
Jumlah Jumlah
barang yang dipesan
Numerik Tidak Tidak
Total Total harga Numerik Tidak Tidak
Tgl Tanggal DO
dibuat
Tanggal Tidak Tidak
No_pengiriman Nomor
pengiriman
Numerik Tidak Tidak
No_SP Nomor surat Numerik Tidak Tidak
Delivery Order Penjualan
Id_produk Kode produk 7 variabel karakter
Nama_produk Nama_produ k 20 variabel karakter Tidak Tidak Quan Jumlah barang yang dipesan
Numerik Tidak Tidak
Harga_satuan Harga satuan barang
Numerik Tidak Tidak
Jumlah Jumlah
barang yang dipesan
Numerik Tidak Tidak
Total Total harga Numerik Tidak Tidak
Tgl Tanggal
dibuat
Tanggal Tidak Tidak
No_SCPayment Nomor surat Numerik Tidak Tidak No_pengiriman Nomor surat
pengiriman
Numerik Tidak Tidak
NIP Nomor induk
staff 5 variabel karakter Tidak Tidak SC Payment
Jumlah Numerik Tidak Tidak
Tgl Tanggal
dibuat
Tanggal Tidak Tidak
No_SPPayment Nomor surat Numerik Tidak Tidak SP
Payment
kasi customer karakter Nama_customer Nama Customer 15 variabel karakter Tidak Tidak
Jumlah Numerik Tidak Tidak
Tabel 4.3 Identifikasi dan Asosiasi Atribut suatu Entitas
4.1.1.4 Identifikasi kandidat dan primay key setiap entitas
Tahapan ini bertujuan untuk mengidentifikasi kandidat key dan primary key dari field-field pada setiap tabel.
Entity Kandidat Key Primary Key
Staff NIP NIP
Supplier Id_Supplier Id_Supplier
Produk Id_Produk Id_Produk
Customer Id_Customer Id_Customer
Packing List No_PL, No_CI, No_SC No_PL
Commercial Invoice No_CI No_CI
Surat Pesanan No_SP No_SP
Bill of Lading No_BL No_BL
Sales Contract No_SC, Id_Produk No_SC
Pembelian No_SC, Id_Produk Delivery Order Penjualan No_Pengiriman, No_SP, Id_Produk No_Pengiriman SC Payment No_SCPayment, No_Penerimaan, NIP No_SCPayment SP Payment No_SPPayment, Id_Customer No_SCPayment
Berikut ini adalah diagram menentukan primary key dari entity-entity yang ada:
Gambar 4.2 Diagram ERD Konseptual dengan primary key
4.1.1.5 Validasi model konseptual lokal dengan transaksi user
Tahapan ini bertujuan untuk memastikan model konseptual lokal untuk mendukung transaksi yang dibutuhkan oleh transaksi user. Dalam hal ini digunakan jalur arah transaksi (pathways) yang digambarkan dalam diagram ER untuk memeriksa model konseptual lokal untuk mendukung transaksi. Model Konseptual
Lokal dengan transaksi user dapat dilihat pada diagram berikut ini:
Dari model konseptual lokal dengan Transaksi user di atas, didapat deskripsi transaksi-transaksi sebagai berikut:
(a) Menampilkan order pembelian yang ada (b) Mengidentifikasi Sales Contract
(c) Mengidentifikasi pembayaran
(d) Mengidentifikasi pembayaran pembelian (e) Mengidentifikasi produk yang di order (f) Mengidentifikasi commercial invoice (g) Mengidentifikasi Packing List
(h) Mengidentifikasi Bill of Lading (i) Menambah produk
(j) Menampilkan staf
(k) Menampilkan pesanan/order penjualan yang ada (l) Menampilkan Surat Pesanan
(m) Menampikan produk yang akan dikirim ke pelanggan (n) Input pembayaran
(o) Mengidentifikasi pembayaran penjualan (p) Menampilkan pelanggan
(q) Mengurangi produk (r) Menampilkan stok produk
4.1.2 Perancangan Basisdata Logikal
Perancangan basis data logikal merupakan suatu proses membangun sebuah model informasi yang digunakan dalam sebuah perusahaan berdasarkan pada sebuah model data khusus, tetapi bebas dari DBMS tertentu dan pertimbangan fisik lainnya.
Tahapan utama dalam fase ini adalah membangun suatu model data logikal lokal dari sebuah model data konseptual lokal yang merepresentasikan view tertentu dari perusahaan dan kemudian memvalidasi model ini untuk meyakinkan bahwa model tersebut secara struktural benar dan model tersebut mendukung semua transaksi yang dibutuhkan. Sehingga pada akhir tahap ini akan dihasilkan hanya satu model data logikal lokal yang sekaligus menjadi model data logikal global. Adapun langkah-langkah dalam merancang basis data logikal yaitu :
1.Menghilangkan feature yang tidak kompatibel dengan model relasional.
2.Membuat relasi untuk model data logikal lokal.
3.Memvalidasi relasi menggunakan teknik normalisasi.
4.Mendefinisikan batasan integritas (integrity constraints).
4.1.2.1 Menghilangkan feature tidak kompatibel dengan model relasional Tujuan dari langkah ini adalah untuk memperhalus model data konseptual lokal dengan menghilangkan feature yang tidak kompatibel dengan model relasional. Adapun cara yang digunakan dalam tahapan ini untuk menghilangkan feature tidak kompatibel dengan model relasional adalah dengan menghilangkan hubungan many-to-many (*:*) binary relationship
types. Hasil dari langkah ini secara keseluruhan dapat dilihat pada gambar diagram ER sebagai berikut:
1. Menghilangkan many-to-many binary relationship
Pada langkah ini, relationship *:* diganti dengan dua relationship one-to-many (1:*) ke sebuah entity baru. Adapun relationship *:* yang perlu dihilangkan yaitu :
a) Hubungan Delivery Order Pembelian dengan Produk
(a)
(b)
Keterangan: a. Kondisi awal b. Kondisi akhir
b) Hubungan antara Delivery Order Penjualan dengan Produk
(b)
Gambar 4.4 Membuang Relasi many to many
2. Menghilangkan atribut multi-valued
Atribut multi-valued memegang banyak nilai untuk sebuah entity. Oleh sebab itu, pada langkah ini kita menghilangkan atribut multi-valued ini dengan mengidentifikasikan sebuah entity baru dimana atribut tersebut direpresentasikan sebagai sebuah atribut tunggal (primary key) dan sebuah relationship 1:* dibuat. Adapun atribut multi-valued yang dihilangkan yaitu:
a) Atribut telepon dan handphone pada entity Staf
a) Entity Staf dengan atribut multi-valued Telepon dan Handphone
b) Membuat entity baru dengan nama Telepon_staf dan memindahkan atribut Telepon ke entity Telepon_staf dengan Telepon sebagai primary key dan relationship 1:* dengan nama memiliki
c) Membuat entity baru dengan nama Handphone_staf dan memindahkan atribut Handphone ke entity Handphone_staf
dengan Handphone sebagai primary key dan relationship 0:* dengan nama memiliki
b) Atribut telepon dan fax pada entity Supplier
Gambar 4.6 Atribut multi-valued pada entity Supplier
a) Entity Supplier dengan atribut multi-valued Telepon dan Fax
b) Membuat entity baru dengan nama Telp_supplier dan memindahkan atribut Telp ke entity Telp_supplier dengan Telp sebagai primary key dan relationship 1:* dengan nama memiliki
c) Membuat entity baru dengan nama Fax_supplier dan memindahkan atribut Fax ke entity Fax_supplier dengan Fax sebagai primary key dan relationship 1:* dengan nama memiliki
c) Atribut telepon, handphone dan fax pada entity Customer
Gambar 4.7 Atribut multi-valued pada entity Customer
a) Entity Supplier dengan atribut multi-valued Telp, Handphone dan Fax
b) Membuat entity baru dengan nama Telp_customer dan memindahkan atribut Telp ke entity Telp_customer dengan Telp sebagai primary key dan relationship 1:* dengan nama memiliki
c) Membuat entity baru dengan nama Handphone_customer dan memindahkan atribut Handphone ke entity Handphone_customer dengan Handphone sebagai primary key dan relationship 0:* dengan nama memiliki
d) Membuat entity baru dengan nama Fax_customer dan memindahkan atribut Fax ke entity Fax_customer dengan Fax sebagai primary key dan relationship 0:* dengan nama memiliki
4.1.2.2 Membuat relasi untuk model data logikal lokal
Langkah ini bertujuan untuk menciptakan relasi bagi model data logikal lokal untuk merepresentasikan entity, relationship dan atribut yang telah diidentifikasikan. Adapun langkah-langkah dalam membuat relasi dari struktur yang mungkin dalam model data antara lain:
1. Strong entity types
Untuk setiap strong entity dalam model data, ciptakan sebuah tabel yang mencakup semua atribut dari entity tersebut. Adapun tabel yang dihasilkan dari strong entity yaitu :
a) Staf (NIP, Nama_staf, posisi, Alamat, sex, komisi, bonus, gaji_pokok, tgl_mulai_kerja)
Primary Key NIP
b) Supplier (Id_supplier, Nama_supplier, Alamat, E-mail) Primary Key Id_supplier
c) Customer (Id_customer, Nama_customer, Alamat) Primary Key Id_customer
d) Produk (Id_produk, Nama_produk, Satuan, Warna, Harga_satuan, Stok)
Primary Key Id_produk
e) Packing List (No_PL, Tgl_PL, No_CI, No_SC, Keterangan_produk)
Primary Key No_PL
Foreign Key No_CI references Commercial Invoice (No_CI) Foreign Key No_SC references Sales Contract (No_SC)
f) Commercial Invoice (No_CI, Tgl_CI, Id_produk, Rincian_produk, Quan, Harga_Satuan, Jumlah, Total)
Primary Key No_CI
Foreign Key Id_produk references Produk (Id_produk)
g) Surat Pesanan (No_SP, Tgl_SP, Nama_customer, Alamat, Telp, Id_produk, Warna, Quantity, Perlengkapan_tambahan, Harga Satuan, Total, Uang_Muka, Sisa)
Foreign Key Id_produk references Produk (Id_produk)
h) Bill of Lading (No_BL, Tgl_BL, Keterangan_produk) Primary Key No_BL
i) Sales Contract (No_SC, Tgl_SC, Id_produk, Quan, Harga_Satuan, Jumlah, Total)
Primary Key No_SC
Foreign Key Id_produk references Produk (Id_produk)
j) Delivery order pembelian (Tgl, No_pengiriman, No_SC, Id_produk, Nama_produk, Quan, harga_satuan, Jumlah, Total)
Primary Key No_pengiriman
Foreign Key No_SC references Sales Contract (No_SC) Foreign Key Id_produk references Produk (Id_produk)
k) Delivery order penjualan (Tgl, No_pengiriman, No_SP, Id_produk, Nama_produk, Quan, harga_satuan, Jumlah, Total Primary Key No_pengiriman
Foreign Key No_SP references Surat Pesanan (No_SP) Foreign Key Id_produk references Produk (Id_produk)
i) SP_payment (Tgl, No_SPPayment, No_pengiriman, Id_customer, Nama_customer, Jumlah)
Primary Key No_SPPPayment
Foreign Key No_pengiriman references Delivery Order Penjualan (No_pengiriman)
j) SC_payment (Tgl, No_SCPayment, No_pengiriman, NIP, Jumlah)
Primary Key No_SCPayment
Foreign Key No_pengiriman references Delivery Order Pembelian (No_pengiriman)
Foreign Key NIP references Staf (NIP) k) Telepon_staf (Telepon)
Primary Key Telepon
l) Handphone_staf (Handphone) Primary Key Handphone m) Telp_supplier (Telp)
Primary Key Telp n) Fax_supplier (Fax)
Primary Key Fax o) Telp_customer (Telp)
Primary Key Telp
p) Handphone_customer (Handphone) Primary Key Handphone
q) Fax_customer (Fax) Primary Key Fax
2. Week entity types
Untuk setiap weak entity dalam model data, ciptakan sebuah tabel yang mencakup semua atribut dari entity tersebut. Adapun tabel yang dihasilkan dari weak entity yaitu :
a) Delivery Order Pembelian detil (No_pengiriman, Id_produk, satuan, harga_satuan, quan, jumlah)
Primary Key No_pengiriman, Id_produk
Foreign Key No_pengiriman reference Delivery Order Pembelian(No_pengiriman)
Foreign Key Id_produk reference Produk(Id_produk) b) Delivery Order Penjualan detil (No_pengiriman, Id_produk,
satuan, harga_satuan, quan, jumlah) Primary Key No_pengiriman, Id_produk
Foreign Key No_pengiriman reference Delivery Order Penjualan(No_pengiriman)
Foreign Key Id_produk reference Produk (Id_produk) 3. Tipe relasi biner one-to-many (1:*)
Untuk setiap relationship biner 1:*, entity pada ‘sisi satu’ dari relationship dianggap sebagai entity induk dan entity pada ‘sisi banyak’ dianggap sebagai entity anak. Untuk merepresentasikan relationship, kita mengirim copy-an atribut primary key dari entity
induk ke dalam tabel yang merepresentasikan entity anak, untuk bertindak sebagai foreign key. Adapun relationship 1:* yang terlibat yaitu :
a). Staf memiliki Telepon_staf
Gambar 4.8 Relationship 1:* Staf Memiliki Telepon_staf
b). Staf memiliki Handphone_staf
c). Supplier memiliki Telp_supplier
Gambar 4.10 Relationship 1:* Supplier Memiliki Telp_supplier
d). Supplier memiliki Fax_supplier
Gambar 4.11 Relationship 1:* Supplier memiliki Fax_supplier
e). Customer memiliki Telp_customer
f). Customer memiliki Fax_customer
Gambar 4.13 Relationship 1:* Customer memiliki Fax_customer
g). Customer memiliki Handphone_customer
Gambar 4.14 Relationship 1:* Customer memiliki Handphone_customer
h). Staf melakukan SC Payment
i). Customer melakukan SP Payment
Gambar 4.16 Relationship 1:* Customer melakukan SP Payment
4. Tipe relasi biner many-to-many (*:*)
Untuk setiap relasi biner many-to-many membuat sebuah hubungan untuk mewakili relasi tersebut dan meliputi atribut-atribut yang merupakan bagian dari relasi tersebut. Adapun relasi *:* yang terlibat, antara lain:
a). Relasional antara Delivery Order Pembelian dengan Produk Gambar 4.17 Relationship *:* antara Delivery Order Pembelian dengan
produk
b) Relasional antara Delivery Order Penjualan dengan Produk
Gambar 4.18 Relationship *:* antara Delivery Order Penjualan dengan Produk
4.1.2.3 Menvalidasi relasi menggunakan teknik normalisasi
Tujuan dari langkah ini adalah untuk memvalidasi relasi-relasi dalam model data logikal lokal menggunakan teknik normalisasi. Teknik normalisasi bertujuan untuk menghasilkan model data yang konsisten, dan memiliki minimal redundansi (pengulangan data yang tidak perlu) dan maksimum stabilitas. Proses normalisasi dimulai dengan menentukan functional dependency antar atribut dalam suatu relasi. Sistemnya telah berada pada kondisi normalisasi pertama karena telah ditentukan primary key dan sistem telah dihilangkan attribute multi value. Jadi kita mulai pada tahap 2NF atau
normalisasi yang ke dua. Untuk 2NF menghilangkan partial depedency dan pada 3NF menghilangkan transitif depedency.
Proses normalisasi adalah sebagai berikut:
Gambar 4.19 Validasi Relasi dengan Normalisasi Staf (primary key)
NIP Nama_staf posisi alamat sex komisi bonus gaji_pokok Tgl_mulai_kerja
Supplier (primary key) Produk (primary key) Customer Id_customer Nama_customer Alamat Id_supplier Nama_supplier Alamat e-mail Id_produk Nama_produk Satuan Warna Harga_satuan
Packing List (primary key) Commercial Invoice (primary key) No_PL Tgl_PL No_SC No_CI Keterangan_produk No_CI Tgl_CI Id_produk Rincian_produk Quan Harga_satuan Jumlah Total
Surat Pesanan
(primary key)
Relasi yang terbentuk:
Surat Pesanan (@No_SP, Tgl_SP, No_customer, Alamat, Telp, Perlengkapan_tambahan, Total, Uang_muka, sisa)
Produk (@Id_produk, Warna, , Harga Satuan) No_SP Tgl_SP Nama_customer Alamat Telp Id_produk Warna Quantity Perlengkapan_tambahan Harga_satuan Total Uang_muka Sisa
Bill of Lading (primary key) Sales Contract (primary key) No_BL Tgl_BL Keterangan_produk No_SC Tgl_SC Id_produk Quan Harga_satuan Jumlah Total
Delivery Order Pembelian
(primary key)
Relasi yang terbentuk adalah:
Delivery Order Pembelian ( @No_pengiriman, Tgl. No_SC, Jumlah, Total)
Id_produk (@Id_produk, Nama_produk, Quan, Harga_satuan) Tgl No_pengiriman No_SC Id_produk Nama_produk Quan Harga_satuan Jumlah Total
Delivery Order Penjualan
(primary key)
Relasi yang terbentuk adalah:
Delivery Order Penjualan ( @No_pengiriman, Tgl. No_SP, Jumlah, Total)
Id_produk (@Id_produk, Nama_produk, Quan, Harga_satuan) Tgl No_pengiriman No_SP Id_produk Nama_produk Quan Harga_satuan Jumlah Total
SC Payment
(primary key)
SP Payment
(primary key)
Relasi yang terbentuk adalah:
SP Payment (@No_SPPayment, Tgl, No_pengiriman, jumlah) Customer (@Id_customer, Nama_customer)
Tgl No_SCPayment No_pengiriman NIP jumlah Tgl No_SPPayment No_pengiriman Id_customer Nama_customer jumlah
Telepon_staf (primary key) Handphone_staf (primary key) Telp_supplier (primary key) Fax_supplier (primary key) Telp_customer (primary key) Telepon NIP Handphone NIP Telp Id_supplier Fax Id_supplier Telp Id_customer
Handphone_customer
(primary key)
Fax_customer
(primary key)
Berdasarkan functional dependency antar atribut dalam suatu relasi tersebut, dapat dilihat bahwa ternyata semua atribut non-primary key dalam suatu relasi tergantung sepenuhnya pada atribut primary key dari relasi tersebut. Penentuan primary key untuk setiap relasi sudah dilakukan pada tahap sebelumnya, sehingga secara otomatis di dalam setiap relasi sudah tidak ada lagi repeating group yang berarti setiap relasi sudah memenuhi 1NF. Di dalam setiap relasi juga tidak terdapat atribut non-primary key yang tergantung pada salah satu atribut primary key (partial dependency), sehingga setiap relasi berarti sudah memenuhi 2NF. Juga tidak ditemukan adanya atribut non-primary key dalam suatu relasi yang tergantung pada atribut non-primary key yang lain dalam relasi tersebut (transitive dependency). Hal ini berarti bahwa setiap relasi juga sudah memenuhi 3NF. Dengan menentukan functional dependency Handphone
Id_customer
Fax
dari setiap relasi, maka dapat diketahui bahwa semua relasi tersebut sudah normal dan tidak perlu dilakukan normalisasi lagi.
4.1.2.4 Mendefinisikan batasan integritas (integrity constraints)
Tujuan dari langkah ini adalah untuk menentukan batasan integritas yang dapat melindungi basis data dari ketidakkonsistenan. Ada lima batasan integritas yang didefinisikan yaitu :
1. Required data
Beberapa atribut harus selalu mengandung sebuah nilai yang valid atau dengan kata lain, atribut-atribut ini tidak diperkenankan untuk mengandung nilai null. Batasan ini sudah diidentifikasikan dalam tahap 4.1.1.3.
2. Attribute domain constraints
Setiap atribut mempunyai sebuah domain, yang merupakan serangkaian nilai yang legal atau sah. Batasan ini juga sudah diidentifikasikan ketika memilih domain atribut untuk model data pada tahap 4.1.1.3.
3. Entity integrity
Primary key dari sebuah entity tidak boleh null. Batasan ini juga sudah
dipertimbangkan ketika mengidentifikasikan primary key untuk setiap entity type yang dilakukan pada tahap 4.1.1.4.
4. Referential integrity
Jika sebuah foreign key mengandung sebuah nilai, maka nilai tersebut harus mengacu pada suatu baris (tuple) yang ada dalam relasi induknya. Adapun referential integrity constraints untuk relasi-relasi yang telah diciptakan sebelumnya adalah seperti terlihat pada tabel berikut ini.
Tabel 4.5 Tabel Menentukan Integrity Constraint
Staf (NIP, Nama_staf, posisi, alamat, sex, komisi, bonus, gaji_pokok, tgl_mulai_kerja)
Primary Key NIP
Supplier (Id_supplier, Nama_supplier, Alamat, E-mail Primary Key Id_supplier
Produk (Id_produk, Nama_produk, Satuan, Warna, Harga_satuan, Stok) Primary Key Id_produk
Customer (Id_customer, Nama_customer, alamat Primary Key Id_customer
Packing List (No_PL, Tgl_PL, No_SC, No_CI, Keterangan_produk) Primary Key No_PL
Foreign Key No_SC references Sales Contract(No_SC) on update cascade on delete no action
cascade on delete no action
Commercial Invoice (No_CI, Tgl_CI, Id_produk, Rincian_produk, Quan, Harga_satuan, Jumlah, Total)
Primary Key No_CI
Foreign Key Id_produk references Produk(Id_produk) on update cascade on delete no action
Surat Pesanan (No_SP, Tgl_SP, Nama_customer, Alamat, Telp, Id_produk, Warna, Quan, Perlengkapan_tambahan, Harga_satuan, Total, Uang_muka, Sisa
Primary Key No_SP
Foreign Key Id_produk references Produk(Id_produk) on update cascade on delete no action
Bill of Lading (No_BL, Tgl_BL, Keterangan_produk) Primary Key No_BL
Sales Contract (No_SC, Tgl_SC, Id_produk, Quan, Harga_satuan, Jumlah, Total)
Primary Key No_SC
Foreign Key Id_produk references Produk(Id_produk) on update cascade on delete no action
Nama_produk, Quan, harga_satuan, jumlah, total)
Primary Key No_pengiriman
Foreign Key No_SC references Sales Contract(No_SC) on update cascade on delete no action
Foreign Key Id_produk references Produk(Id_produk) on update cascade on delete no action
Delivery Order Penjualan (No_pengiriman, Tgl, No_SP, Id_produk, Nama_produk, Quan, Harga_satuan, jumlah, total
Primary Key No_pengiriman
Foreign Key No_SP references Surat Pesanan(No_SP) on update cascade on delete no action
Foreign Key Id_produk references Produk(Id_produk) on update cascade on delete no action
SC Payment (No_SCPayment, Tgl, No_pengiriman, NIP, jumlah Primary Key No_SCPayment
Foreign Key No_pengiriman references Delivery Order
Pembelian(No_pengiriman) on update cascade on delete no action
Foreign Key NIP references Staf(NIP) on update cascade on delete no action
Primary Key No_SPPayment
Foreign Key Id_customer references Customer(Id_customer) on update cascade on delete no action
Telepon_staf (Telepon, NIP) Primary Key Telepon
Foreign Key NIP references Staf(NIP) on update cascade on delete no action
Handphone_staf (Handphone, NIP) Primary Key Handphone
Foreign Key NIP references Staf(NIP) on update cascade on delete no action
Telp_supplier (Telp, Id_supplier) Primary Key Telp
Foreign Key Id_supplier references Supplier(Id_supplier) on update cascade on delete no action
Fax_supplier (Fax, Id_supplier) Primary Key Fax
Foreign Key Id_supplier references Supplier(Id_supplier) on update cascade on delete no action
Primary Key Telp
Foreign Key Id_customer references Customer(Id_customer) on update cascade on delete no action
Handphone_customer (Handphone, Id_customer) Primary Key Handphone
Foreign Key Id_customer references Customer(Id_customer) on update cascade on delete no action
Fax_customer (Fax, Id_customer) Primary Key Fax
Foreign Key Id_customer references Customer(Id_customer) on update cascade on delete no action
Delivery Order Penjualan detil (No_pengiriman, Id_produk, Satuan, Harga_satuan, Quan, Jumlah)
Primary Key No_pengiriman, Id_produk
Foreign Key No_pengiriman references Delivery Order
Penjualan(No_pengiriman) on update cascade on delete no action
Foreign Key Id_produk references Produk(Id_produk) on update cascade on delete no action
Delivery Order Pembelian detil (No_pengiriman, Id_produk, Satuan, Harga_satuan, Quan, Jumlah)
Primary Key No_pengiriman, Id_produk
Foreign Key No_pengiriman references Delivery Order
Pembelian(No_pengiriman) on update cascade on delete no action
Foreign Key Id_produk references Produk(Id_produk) on update cascade on delete no action
4.1.3 Perancangan Basisdata Fisikal
Perancangan basis data fisik merupakan proses untuk memutuskan bagaimana struktur logika diimplementasikan secara fisik (sebagai relasi) ke target DBMS. Adapun langkah-langkah dalam perancangan basis data secara fisik yaitu :
1.Merancang relasional basis data.
2.Menganalisis transaksi.
3.Memilih index
4.Memperkirakan kebutuhan kapasitas penyimpanan.
5.Merancang mekanisme keamanan.
6.Pemilihan DBMS
4.1.3.1 Merancang Relasional Basis data
Tujuan dari langkah ini adalah untuk memutuskan bagaimana
merepresentasikan relasi dasar yang diidentifikasikan dalam model data logikal global ke dalam target DBMS. Informasi yang diperlukan untuk proses ini dapat diperoleh dari kamus data dan definisi dari relasi dideskripsikan menggunakan Database Definition Language (DBDL). Adapun DBDL yang didefinisikan adalah sebagai berikut :
DBDL Staf
Domain NIP variable length character string, length 5
Domain NamaStaf variable length character string, length 30
Domain Posisi variable length character string, length 15
Domain Alamat variable length character string, length 50
Domain Sex single character must be one of ’P’, ’W’
Domain Komisi monetary value
Domain Bonus monetary value
Domain GajiPokok monetary value
Domain TanggalMulaiKerja date
Staf (
NIP NIP NOT NULL,
Nama_staf NamaStaf NOT NULL,
Posisi Posisi NOT NULL,
Alamat Alamat NOT NULL,
sex Sex NOT NULL,
komisi Komisi
DBDL Supplier
Domain IdSupplier variable length character string, length 5
Domain NamaSupplier variable length character string, length 30
Domain Alamat variable length character sting, length 50
Domain E-mail variable length character string, length 20
Supplier (
Id_supplier IdSupplier NOT NULL,
Nama_supplier NamaSupplier NOT NULL,
Alamat Alamat NOT NULL,
E-mail E-mail
Primary Key (Id_supplier));
Gaji_pokok GajiPokok NOT NULL,
Tgl_mulai_kerja TanggalMulaiKerja NOT NULL,
DBDL Produk
Domain IdProduk variable length character string, length 7
Domain NamaProduk variable length character string, length 20
Domain Satuan variable length character string, length 7
Domain Warna variable length character string, length 10
Domain HargaSatuan monetary value
Domain Stok Integer
Produk (
Id_produk IdProduk NOT NULL,
Nama_produk NamaProduk NOT NULL,
Satuan Satuan
Warna Warna NOT NULL,
Harga_satuan HargaSatuan NOT NULL,
Stok Stok NOT NULL,
DBDL Customer
Domain IdCustomer variable length character string, length 5
Domain NamaCustomer variable length character string, length 15
Domain Alamat variable length character string, length 30
Customer (
Id_customer IdCustomer NOT NULL,
Nama_customer NamaCustomer NOT NULL,
Alamat Alamat NOT NULL,
Primary Key (Id_customer));
DBDL Packing List Domain NoPackingList integer
Domain TanggalPackingList date
Domain NoSalesContract integer
Domain NoCommercialInvoice integer
Domain KeteranganProduk variable length character string, length 50
Packing List (
No_PL NoPackingList NOT NULL,
No_SC NoSalesContract NOT NULL,
No_CI NoCommercialInvoice NOT NULL,
Keterangan_produk KeteranganProduk NOT NULL,
Primary Key (No_PL),
Foreign Key (No_SC) references Sales Contract(No_SC) on update cascade on delete no action,
Foreign Key (No_CI) references Commercial Invoice (No_CI) on update cascade on delete no action);
DBDL Commercial Invoice Domain NoCommercialInvoice integer
Domain TanggalCommercialInvoice date
Domain IdProduk variable length character string, length 8
Domain RincianProduk variable length character string, length 30
Domain Quantity integer
Domain HargaSatuan monetary value
Domain Jumlah monetary value
Domain Total monetary value
No_CI NoCommercialInvoice NOT NULL,
Tgl_CI TanggalCommercialInvoice NOT NULL,
Id_produk IdProduk NOT NULL,
Rincian_produk RincianProduk NOT NULL,
Quan Quantity NOT NULL,
Harga_satuan HargaSatuan NOT NULL,
Jumlah Jumlah NOT NULL,
Total Total NOT NULL,
Primary Key (No_CI),
Foreign Key (Id_produk) references Produk (Id_produk) on update cascade on delete no action);
DBDL Surat Pesanan Domain NoSuratPesanan integer
Domain TanggalSuratPesanan date
Domain NamaCustomer variable length character string, length 15
Domain Alamat variable length character string, length 30
Domain Telepon integer
Domain IdProduk variable length character string, length 7
Domain Warna variable length character string, length 10
Domain Quantity integer
Domain PerlengkapanTambahan variable length character string, length 20
Domain HargaSatuan monetary value
Domain Total monetary value
Domain UangMuka monetary value
Domain Sisa monetary value
Surat Pesanan (
No_SP NoSuratPesanan NOT NULL,
Tgl_SP TanggalSuratPesanan NOT NULL,
Nama_customer NamaCustomer NOT NULL,
Alamat Alamat NOT NULL,
Telp Telepon NOT NULL,
Id_produk IdProduk NOT NULL,
Quan Quantity NOT NULL,
Perlengkapan_Tambahan PerlengkapanTambahan
Harga_satuan Harga_satuan NOT NULL,
Total Total NOT NULL,
Uang_muka UangMuka NOT NULL,
Sisa Sisa
Primary Key (No_SP),
Foreign Key (Id_produk) references Produk (Id_produk) on update cascade on delete no action);
DBDL Bill of Lading Domain NoBillOfLading integer Domain TanggalBillOfLading date
Domain KeteranganProduk variable length character string, length 50 Bill of Lading (
No_BL NoBillOfLading NOT NULL, Tgl_BL TanggalBillOfLading NOT NULL, Keterangan Produk KeteranganProduk NOT NULL, Primary Key (No_BL));
DBDL Sales Contract Domain NoSalesContract integer Domain TanggalSalesContract date
Domain IdProduk variable length character string, length 7 Domain Quantity integer
Domain HargaSatuan monetary value Domain Jumlah monetary value Domain Total monetary value Sales Contract (
No_SC NoSalesContract NOT NULL, Tgl_SC TanggalSalesContract NOT NULL, Id_produk IdProduk NOT NULL, Quan Quantity NOT NULL, Harga_satuan HargaSatuan NOT NULL, Jumlah Jumlah NOT NULL, Total Total NOT NULL, Primary Key (No_SC),
Foreign Key (Id_produk) references Produk(Id_produk) on update cascade on delete no action);
DBDL Delivery Order Pembelian Domain NoPengiriman integer
Domain Tanggal date Domain NoSalesContract integer
Domain IdProduk variable length character string, length 7 Domain NamaProduk variable length character string, length 20 Domain Quantity integer
Domain HargaSatuan monetary value Domain Jumlah monetary value Domain Total monetary value Delivery Order Pembelian (
No_pengiriman NoPengiriman NOT NULL, Tgl Tanggal NOT NULL, No_SC NoSalesContract NOT NULL, Id_produk IdProduk NOT NULL, Nama_produk NamaProduk NOT NULL, Quan Quantity NOT NULL, Harga_satuan HargaSatuan NOT NULL, Jumlah Jumlah NOT NULL, Total Total NOT NULL, Primary Key (No_pengiriman),
Foreign Key (No_SC) references Sales Contract (No_SC) on update cascade on delete no action,
Foreign Key (Id_produk) references Produk (Id_produk) on update cascade on delete no action);
DBDL Delivery Order Penjualan Domain NoPengiriman integer
Domain Tanggal date Domain NoSuratPesanan integer
Domain IdProduk variable length character string, length 7 Domain NamaProduk variable length character string, length 20 Domain Quantity integer
Domain HargaSatuan monetary value Domain Jumlah monetary value Domain Total monetary value Delivery Order Penjualan (
No_pengiriman NoPengiriman NOT NULL, Tgl Tanggal NOT NULL, No_SP NoSuratPesanan NOT NULL, Id_produk IdProduk NOT NULL, Nama_produk NamaProduk NOT NULL, Quan Quantity NOT NULL, Harga_satuan HargaSatuan NOT NULL, Jumlah Jumlah NOT NULL, Total Total NOT NULL, Primary Key (No_pengiriman),
Foreign Key (No_SP) references Surat Pesanan (No_SP) on update cascade on delete no action,
Foreign Key (Id_produk) references Produk (Id_produk) on update cascade on delete no action);
DBDL SC Payment Domain NoSalesContractPayment integer Domain Tanggal date Domain NoPengiriman integer
Domain NIP variable length character string, length 5 Domain Jumlah monetary value
SC Payment (
No_SCPayment NoSalesContractPayment NOT NULL, Tgl Tanggal NOT NULL, No_pengiriman NoPengiriman NOT NULL, NIP NIP NOT NULL, Jumlah Jumlah NOT NULL, Primary Key (No_SCPayment),
Foreign Key (No_pengiriman) references Delivery Order Pembelian (No_pengiriman) on update cascade on delete no action,
Foreign Key (NIP) references Staf (NIP) on update cascade on delete no action);
DBDL SP Payment Domain NoSuratPesananPayment integer Domain Tanggal date
Domain IdCustomer variable length character string, length 5 Domain NamaCustomer variable length character string, length 15 Domain Jumlah monetary value
SP Payment (
No_SPPayment NoSuratPesananPayment NOT NULL, Tgl Tanggal NOT NULL, Id_customer IdCustomer NOT NULL, Nama_customer NamaCustomer NOT NULL, Jumlah Jumlah NOT NULL, Primary Key (No_SPPayment),
Foreign Key (Id_customer) references Customer (Id_customer) on update cascade on delete no action);
DBDL Delivery Order Pembelian Detil Domain NoPengiriman integer
Domain IdProduk variable length character string, length 7 Domain Satuan integer
Domain Quantity integer
Domain HargaSatuan monetary value Domain Jumlah monetary value Delivery Order Pembelian detil (
No_pengiriman NoPengiriman NOT NULL, Id_produk IdProduk NOT NULL
Satuan Satuan NOT NULL, Quan Quantity NOT NULL, Harga_satuan HargaSatuan NOT NULL, Jumlah Jumlah NOT NULL, Primary Key (No_pengiriman),
Primary Key (Id_produk),
Foreign Key (No_pengiriman) references Delivery Order Pembelian (No_pengiriman) on update cascade on delete no action,
Foreign Key (Id_produk) references Produk (Id_produk) on update cascade on delete no action);
DBDL Delivery Order Penjualan Detil Domain NoPengiriman integer
Domain IdProduk variable length character string, length 7 Domain Satuan integer
Domain Quantity integer
Domain HargaSatuan monetary value Domain Jumlah monetary value Delivery Order Penjualan Detil (
No_pengiriman NoPengiriman NOT NULL, Id_produk IdProduk NOT NULL, Satuan Satuan NOT NULL, Quan Quantity NOT NULL,
Harga_satuan HargaSatuan NOT NULL, Jumlah Jumlah NOT NULL, Primary Key (No_pengiriman),
Primary Key (Id_produk),
Foreign Key (No_pengiriman) references Delivery Order Penjualan (No_pengiriman) on update cascade on delete no action,
Foreign Key (Id_produk) references Produk (Id_produk) on update cascade on delete no action);
DBDL Telepon_staf Domain Telepon integer
Domain NIP variable length character string, length 5 Telepon_staf (
Telepon Telepon NOT NULL, NIP NIP NOT NULL, Primary Key (Telepon),
DBDL Handphone_staf Domain Handphone integer
Domain NIP variable length character string, length 5 Handphone_staf (
Handphone Handphone
NIP NIP NOT NULL, Primary Key (Handphone),
Foreign Key (NIP) references Staf (NIP) on update cascade on delete no action);
DBDL Telp_supplier Domain Telepon integer
Domain Id_supplier variable length character string, length 5 Telp_supplier (
Telp Telepon NOT NULL, Id_supplier Id_supplier NOT NULL, Primary Key (Telp),
Foreign Key (Id_supplier) references Supplier (Id_supplier) on update cascade on delete no action);
DBDL Fax_supplier Domain Fax integer
Domain Id_supplier variable length character string, length 5 Fax_supplier (
Fax Fax NOT NULL, Id_supplier Id_supplier NOT NULL, Primary Key (Fax),
Foreign Key (Id_supplier) references Supplier (Id_supplier) on update cascade on delete no action);
DBDL Fax_ customer Domain Fax integer
Domain Id_customer variable length character string, length 5 Fax_customer (
Fax Fax NOT NULL, Id_customer Id_customer NOT NULL, Primary Key (Fax),
Foreign Key (Id_customer) references Customer (Id_customer) on update cascade on delete no action);
DBDL Telp_customer Domain Telepon integer
Domain Id_customer variable length character string, length 5 Telp_customer (
Id_customer Id_customer NOT NULL, Primary Key (Telp),
Foreign Key (Id_customer) references Customer (Id_customer) on update cascade on delete no action);
DBDL Handphone_customer Domain Handphone integer
Domain Id_customer variable length character string, length 5 Handphone_customer(
Handphone Handphone
Id_customer Id_customer NOT NULL, Primary Key (Handphone),
Foreign Key (Id_customer) references Customer (Id_customer) on update cascade on delete no action);
4.1.3.2 Menganalisis Transaksi
Langkah ini bertujuan untuk memahami fungsionalitas dari transaksi yang akan berjalan pada basis data dan untuk menganalisis transaksi-transaksi yang penting. Transaksi – transaksi-transaksi yang terjadi adalah sebagai berikut:
(a) Menampilkan order pembelian yang ada (b) Mengidentifikasi Sales Contract
(c) Mengidentifikasi pembayaran
(e) Mengidentifikasi produk yang di order (f) Mengidentifikasi commercial invoice (g) Mengidentifikasi Packing List
(h) Mengidentifikasi Bill of Lading (i) Menambah produk
(j) Menampilkan staf
(k) Menampilkan pesanan/order penjualan yang ada (l) Menampilkan Surat Pesanan
(m) Menampikan produk yang akan dikirim ke pelanggan (n) Input pembayaran
(o) Mengidentifikasi pembayaran penjualan (p) Menampilkan pelanggan
(q) Mengurangi produk (r) Menampilkan stok produk
163
Tabel 4.6 Analisis Transaksi bagian I
I = Insert; R = Read; U = Update; D = Delete
(A) (B) (C) (D) (E) (F) (G) Transaksi/ Relasi I R U D I R U D I R U D I R U D I R U D I R U D I R U D Staf X X X X Supplier X Produk X X X X X X Customer Packing List X Commercial Invoice X X Surat Pesanan Bill of Lading Sales Contract X X X
Delivery Order Pembelian X X
Delivery Order Penjualan
SC Payment X X
SP Payment
Delivery Order Pembelian detil Delivery Order Penjualan detil
Telepon_staf X Handphone_staf Telp_supplier Fax_supplier Telp_customer Handphone_customer Fax_customer
164
Tabel 4.7 Analisis Transaksi bagian II
I = Insert; R = Read; U = Update; D = Delete
(H) (I) (J) (K) (L) (M) (N) Transaksi/ Relasi I R U D I R U D I R U D I R U D I R U D I R U D I R U D Staf X X X X Supplier Produk X X X X X X Customer X X Packing List Commercial Invoice Surat Pesanan X Bill of Lading X Sales Contract
Delivery Order Pembelian
Delivery Order Penjualan X X
SC Payment X X X
SP Payment X X X
Delivery Order Pembelian detil Delivery Order Penjualan detil
Telepon_staf X X X X Handphone_staf X X X X Telp_supplier Fax_supplier Telp_customer Handphone_customer Fax_customer
165
Tabel 4.7 Analisis Transaksi bagian III
I = Insert; R = Read; U = Update; D = Delete Transaksi/ Relasi (O) (P) (Q) (R) I R U D I R U D I R U D I R U D Staf Supplier Produk X X X X Customer X X X X X Packing List Commercial Invoice Surat Pesanan Bill of Lading Sales Contract
Delivery Order Pembelian Delivery Order Penjualan SC Payment
SP Payment X
Delivery Order Pembelian detil Delivery Order Penjualan detil Telepon_staf Handphone_staf Telp_supplier Fax_supplier Telp_customer X X X X Handphone_customer X X X X Fax_customer X X X X
4.1.3.3 Memilih index
Tujuan dari langkah ini adalah untuk menentukan apakah penambahan index akan meningkatkan performa sistem. Index yang digunakan adalah sebagai berikut:
a). Staf
CREATE UNIQUE INDEX NIPInd ON Staf (NIP) CREATE INDEX NmStafInd ON Staf (Nama_staf) b) Telepon_staf
CREATE UNIQUE INDEX TelpInd ON Telepon_staf (Telepon) c). Handphone_staf
CREATE UNIQUE INDEX HpInd ON Handphone_staf (Handphone) d). Supplier
CREATE UNIQUE INDEX IdSupInd ON Supplier (Id_supplier) CREATE INDEX NmSupInd ON Supplier (Nama_supplier) e). Telp_supplier
CREATE UNIQUE INDEX TelpInd ON Telp_supplier (Telp) f). Fax_supplier
CREATE UNIQUE INDEX FaxInd ON Fax_suppier (Fax) g). Customer
CREATE UNIQUE INDEX IdCustInd ON Customer (Id_customer) CREATE INDEX NmCustInd ON Customer (Nama_customer) h). Telp_customer
CREATE UNIQUE INDEX TelpInd ON Telp_customer (Telp) i). Handphone_customer
CREATE UNIQUE INDEX HpInd ON Handphone_customer (Handphone) j). Fax_customer
CREATE UNIQUE INDEX FaxInd ON Fax_customer (Fax) k). Produk
CREATE UNIQUE INDEX IdProdInd ON Produk (Id_produk) CREATE INDEX NmProdInd ON Produk (Nama_produk) l). Packing List
CREATE UNIQUE INDEX NoPLInd ON Packing List (No_PL)
4.1.3.4 Memperkirakan Kebutuhan Kapasitas Penyimpanan
Tujuan dari langkah ini adalah untuk menghitung kapasitas penyimpanan yang dibutuhkan oleh basisdata. Perkiraan kapasitas setiap tabel adalah sebagai berikut :
Tabel 4.9 Staff
Field Tipe Ukuran
NIP Varchar 5 Nama_staff Varchar 30 Posisi Varchar 15 Alamat Varchar 50 Sex Varchar 1 Komisi Integer 4 Bonus Integer 4 Gaji_pokok Integer 4
Tgl_mulai_kerja Date 8 Kapasitas dari tabel staff adalah 121 byte
Total staff yang sudah ada di perusahaan adalah 30
Total kapasitas penyimpanan tablel ini adalah 121*30 = 3630 byte
Tabel 4.10 Supplier
Field Tipe Ukuran
Id_Supplier Varchar 5
Nama_Supplier Varchar 30
Alamat Varchar 50
E-mail Varchar 20
Kapasitas dari table supplier adalah 105 byte. Total supplier yang sudah ada sekarang adalah 3
Total kapasitas penyimpanan table ini adalah 105*3 = 315 byte
Tabel 4.11 Produk
Field Tipe Ukuran
Id_Produk Varchar 7
Nama_Produk Varchar 20
Warna Varchar 10
Harga_satuan Integer 4
Stok Integer 4
Total produk yang ada sekarang adalah 15
Total kapasitas penyimpanan tabel ini adalah 675 byte
Tabel 4.12 Customer
Field Tipe Ukuran
Id_Customer Varchar 5
Nama_Customer Varchar 15
Alamat Varchar 30
Kapasitas dari tabel customer adalah 50 byte Diperkirakan dalam satu hari ada 5 customer baru
Dalam satu tahun pertumbuhan tabel ini adalah 50*5*26*12 = 78000 byte
Tabel 4.13 Packing_List
Field Tipe Ukuran
No_PL Integer 4
Tgl_PL Date 8
No_SC Integer 4
No_CI Integer 4
Keterangan Produk Varchar 50
Kapasitas dari tabel packing_list adalah 70 byte
Diperkirakan dalam satu tahun ada 4 packing list pembelian barang Dalam satu tahun pertumbuhan tabel ini adlaah 70*4 = 280byte
Tabel 4.14 Commercial Invoice
Field Tipe Ukuran
No_CI Integer 4 Tgl_CI Date 8 Id_Produk Varchar 8 Rincian_produk Varchar 30 Quantity Integer 4 Harga_satuan Integer 4 Jumlah Integer 4 Total Integer 4
Total kapasitas tabel commercial invoice adalah 66 byte Diperkirakan dalam satu hari terjadi 5 transaksi
Dalam satu tahun perkembangan tabel ini adalah 66*5*26*12 = 102960 byte atau 102.96Kbyte
Tabel 4.15 Surat Pesanan
Field Tipe Ukuran
No_SP Integer 4
Tgl_SP Date 8
Nama_customer Varchar 15
Alamat Varchar 30
Id_produk Varchar 7 Warna Varchar 10 Quantity Integer 4 Perlengkapan_tambahan Varchar 20 Harga_satuan Integer 4 Total Integer 4 Uang_muka Integer 4 Sisa Integer 4
Total kapasitas tabel curat pesanan adalah 118 byte Diperkirakan dalam satu hari terjadi 5 transaksi
Dalam satu tahun perkembangan tabel ini adalah 118*5*26*12 = 184080 byte atau 184.08 Kbyte
Tabel 4.16 Bill of Lading
Field Tipe Ukuran
No_BL Integer 4
Tgl_BL Date 8
Keterangan Produk Varchar 50
Total kapasitas tabel bill of lading adalah 62 byte
Diperkirakan dalam satu tahun ada 4 bill of lading pembelian barang Dalam satu tahun pertumbuhan tabel ini adalah 62*4 = 248 byte
Tabel 4.17 Sales Contract
Field Tipe Ukuran
No_SC Integer 4 Tgl_SC Date 8 Id_Produk Varchar 7 Quantity Integer 4 Harga_satuan Integer 4 Jumlah Integer 4 Total Integer 4
Total kapasitas tabel sales contract adalah 35 byte Diperkirakan dalam satu hari terjadi 5 transaksi
Dalam satu tahun pertumbuhan tabel ini adalah 54600 byte atau 54.6 Kbyte
Tabel 4.18 Delivery Order Pembelian
Field Tipe Ukuran
No_Pengiriman Integer 4 Tanggal Date 8 No_SC Integer 4 Id_Produk Varchar 7 Nama_produk Varchar 20 Quantity Integer 4 Harga_satuan Integer 4 Jumlah Integer 4
Total Integer 4 Total kapasitas tabel delivery order pembelian adalah 59 byte
Diperkirakan dalam satu tahun ada 4 kali pembelian barang Dalam satu tahun pertumbuhan tabel ini adalah 59*4 = 236 byte
Tabel 4.19 Delivery Order Penjualan
Field Tipe Ukuran
No_Pengiriman Integer 4 Tanggal Date 8 No_SP Integer 4 Id_Produk Varchar 7 Nama_produk Varchar 20 Quantity Integer 4 Harga_satuan Integer 4 Jumlah Integer 4 Total Integer 4
Total kapasitas tabel delivery order penjualan adalah 59 byte Diperkirakan dalam satu hari ada 5 kali transaksi
Dalam satu tahun pertumbuhan tabel ini adalah 59*5*26*12 = 92040 byte atau 92.04 Kbyte
Tabel 4.20 SC Payment
Field Tipe Ukuran
No_SCPayment Integer 4
Tanggal Date 8
No_Pengiriman Integer 4
NIP Varchar 5
Jumlah Integer 4
Total kapasitas tabel SC Payment adalah 25 byte Diperkirakan dalam satu hari ada 5 kali transaksi
Dalam satu tahun pertumbuhan tabel ini adalah 25*5*26*12 = 39000 byte atau 39 Kbyte
Tabel 4.21 SP Payment
Field Tipe Ukuran
No_SPPayement Integer 4
Tanggal Date 8
Id_Customer Varchar 5
Nama_Customer Varchar 15
Jumlah Integer 4
Total kapasitas tabel SP Payment adalah 36 byte
Diperkirakan dalam satu tahun ada 4 kali transaksi pembelian Dalam satu tahun pertumbuhan tabel ini adalah 36*4 = 144 byte
Tabel 4.22 Telepon_Staff
Field Tipe Ukuran
Telepon Integer 4
NIP varchar 5
Total kapasitas tabel telepon_staff adalah 9 byte
Jumlah karyawan yang sudah ada di perusahaan adalah 30 orang Total kapasitas tabel ini adalah 30*9 = 270 byte
Tabel 4.23 Handphone Staff
Field Tipe Ukuran
Handphone Integer 4
NIP Varchar 5
Total kapasitas tabel telepon_staff adalah 9 byte
Jumlah karyawan yang sudah ada di perusahaan adalah 30 orang Total kapasitas tabel ini adalah 30*9 = 270 byte
Tabel 4.24 Telp_supplier
Field Tipe Ukuran
Telepon Integer 4
Id_Supplier Varchar 5
Total kapasitas tabel telepon_staff adalah 9 byte
Jumlah karyawan yang sudah ada di perusahaan adalah 5 orang Total kapasitas tabel ini adalah 5*9 = 45 byte
Tabel 4.25 Fax_supplier
Field Tipe Ukuran
Fax Integer 4
Id_Supplier Varchar 5
Total kapasitas tabel telepon_staff adalah 9 byte
Jumlah karyawan yang sudah ada di perusahaan adalah 5 orang Total kapasitas tabel ini adalah 5*9 = 45 byte
Tabel 4.26 Telp_Customer
Field Tipe Ukuran
Telepon Integer 4
Id_Customer Varchar 5
Total kapasitas tabel telepon_staff adalah 9 byte Diperkirakan dalam satu hari ada 5 customer baru
Dalam satu tahun pertumbuhan tabel ini adalah 9*5*26*12 = 14040 byte atau 14.04 Kbyte
Tabel 4.27 Handphone_customer
Field Tipe Ukuran
Handphone Integer 4
Id_Customer Varchar 5
Total kapasitas tabel telepon_staff adalah 9 byte Diperkirakan dalam satu hari ada 5 customer baru
Dalam satu tahun pertumbuhan tabel ini adalah 9*5*26*12 = 14040 byte atau 14.04 Kbyte
Tabel 4.28 Fax_customer
Field Tipe Ukuran
Fax Integer 4
Id_Customer Varchar 5
Total kapasitas tabel telepon_staff adalah 9 byte Diperkirakan dalam satu hari ada 5 customer baru
Dalam satu tahun pertumbuhan tabel ini adalah 9*5*26*12 = 14040 byte atau 14.04 Kbyte
Tabel 4.29 Delivery order penjualan detil
Field Tipe Ukuran
No_Pengiriman Integer 4 Id_Produk Varchar 5 Satuan Integer 4 Harga_Satuan Integer 4 Quantity Integer 4 Jumlah Integer 4
Total kapasitas tabel delivery order penjualan detil adalah 25 byte Diperkirakan dalam satu hari ada 5 transaksi
Dalam satu tahun perkembangan tabel ini adalah 25*5*26*12 = 39000 byte atau 39 Kbyte
Tabel 4.30 Delivery Order Pembelian detil
Field Tipe Ukuran
No_Pengiriman Integer 4 Id_Produk Varchar 5 Satuan Integer 4 Harga_Satuan Integer 4 Quantity Integer 4 Jumlah Integer 4
Total kapasitas tabel delivery order penjualan detil adalah 25 byte Diperkirakan dalam satu tahun ada 4 kali transaksi pembelian Dalam satu tahun perkembangan tabel ini adalah 25*4 = 125 byte
Tabel 4.31 Estimasi disk space
Nama Tabel Kapasitas yang dibutuhkan dalam 1 tahun
Staff 3630 byte
Supplier 315 byte
Produk 675 byte
Customer 78000 byte
Packing List 280 byte Commercial Invoice 102960 byte Surat Pesanan 184080 byte Bill of Lading 248 byte Sales Contract 54600 byte Delivery order Pembelian 236 byte Delivery order Penjualan 92040 byte SC Payment 39000 byte SP Payment 144 byte Telepon_staff 270 byte Handphone_staff 270 byte Telp_supplier 45 byte Fax_supplier 45 byte Telp_Customer 14040 byte Handphone_Customer 14040 byte