BAB 4
HASIL DAN BAHASAN 4.1 Definisi Sistem
4.1.1 Mission Statement
Tujuan dari pembuatan aplikasi database yang berbasis web ini yaitu untuk integrasi data mempermudah pencatatan transaksi dan laporan antara lain purchase report, sales report, purchase retur, sales retur. Selain itu pembuatan aplikasi ini juga mempermudah pengambilan keputusan berdasarkan aturan yang akurat, misalnya pembelian barang untuk persediaan yang hampir habis, dan menjaga keamanan data dari resiko kehilangan data.
4.1.2 Mission Objective
1. Pengelolahan data (Insert, Update) Customer. 2. Pengelolahan data (Insert, Update) Product. 3. Pengelolahan data (Insert, Update) Employee. 4. Pengelolahan data (Insert, Update) Vendor. 5. Pengelolahan data (Insert, Update) Sales. 6. Pengelolahan data (Insert, Update) Sales Retur. ` 7. Pengelolahan data (Insert, Update) Purchase.
8. Pengelolahan data (Update) Testimonial. 9. Pengelolahan data (Insert, Update) Payment.
10. Pengelolahan data (Insert, Update) Purchase Retur. 11. Menampilkan data Customer.
12. Menampilkan data Product. 13. Menampilkan data Employee.
14. Menampilkan data Vendor. 15. Menampilkan data Testimonial. 16. Menampilkan data Sales. 17. Menampilkan data Sales Retur. 18. Menampilkan data Purchase. 19. Menampilkan data Purchase Retur. 20. Menampilkan data Payment.
21. Membuat laporan Penjualan (Sales).
22. Membuat laporan Retur Penjualan (Sales Retur). 23. Membuat laporan Pembelian (Purchase).
4.1.3 System Boundary
4.1.4 User Requirement Specification 4.1.4.1 Data Requirement 1. Product
Informasi yang berisi tentang data - data vendor yang tersedia di perusahaan. Data yang diperlukan antara lain kode product, nama product, dan stock product.
2. Vendor
Informasi yang berisi tentang data-data vendor. Data yang diperlukan antara lain kode vendor dan nomer telephone vendor.
3. Customer
Informasi yang berisi tentang data-data customer. Data yang diperlukan antara lain kode customer, password, nama customer, alamat customer, email customer, nomer telephone customer, nomer rekening customer dan jenis kelamin customer.
4. Employee
Informasi yang berisi tentang data-data karyawan. Data yang diperlukan antara lain kode employee, nama employee dan status employee.
5. Testimonial
Informasi yang berisi tentang comment dari customer. Data yang diperlukan antara lain kode testimonial, isi comment dan status comment.
6. Sales
Informasi yang berisi tentang data–data penjualan yang dilakukan perusahaan kepada customer. Data yang dibutuhkan antara lain kode sales, status, status pembayaran, nama customer, nama barang, QTY barang, harga barang, tanggal pemesanan, tanggal transaksi, sub total, grand total, kode barang dan kode customer.
7. Payment
Informasi yang berisi tentang data – data pembayaran yang dilakukan oleh customer. Data yang dibutuhkan antara lain kode payment, nama bank, kode customer, nomer rekening, jumlah pembayaran, status pembayaran, grand total, tanggal pembayaran dan kode sales.
8. Sales Retur
Informasi yang berisi tentang data – data penjualan barang yang dijual oleh perusahaan kepada customer kerusakan atau ketidaksesuaian barang. Data yang diperlukan antara lain kode sales retur, nama customer, kode product, quantity barang yang diretur, harga barang, tanggal transaksi, nama product dan kode sales.
9. Purchase
Informasi berisi tentang data – data pembelian barang yang dilakukan perusahaan kepada vendor. Data yang diperlukan antara lain kode purchase, deskripsi barang, nama product, nama vendor, quantity barang, sub total, grand total, tanggal transaksi, harga barang, kode barang dan kode vendor.
10. Purchase Retur
Informasi yang berisi tentang data–data pengembalian barang yang dibeli oleh perusahaan dari vendor yang disebabkan kerusakan atau ketidaksesuaian barang. Data yang diperlukan antara lain kode purchase retur, quantity barang, nama vendor, kode product, nama product, harga, tanggal transaksi dan kode purchase.
4.1.4.2 Transaction Requirement 4.1.4.2.1 Data Entry 1. Insert Data Customer. 2. Insert Data Employee. 3. Insert Data Product. 4. Insert Data Vendor. 5. Insert Data Sales. 6. Insert Data Sales Retur. 7. Insert Data Purchase. 8. Insert Data Purchase Retur. 9. Insert Data Payment. 4.1.4.2.2 Data Update 1. Update data Customer. 2. Update data Employee. 3. Update data Product. 4. Update data Testimonial. 5. Update data Vendor. 6. Update data Sales.
7. Update data Sales Retur. 8. Update data Purchase. 9. Update data Purchase Retur. 10. Update data Payment. 4.1.4.2.3 Data Queries
1. Menampilkan data customer berdasarkan penjualan. 2. Menampilkan data vendor berdasarkan pembelian. 3. Menampilkan data karyawan berdasarkan pembelian. 4. Menampilkan data stock barang berdasarkan nama barang. 5. Menampilkan status pembayaran penjualan kepada
karyawan (admin) berdasarkan nomer sales. 6. Menghasilkan laporan sales berdasarkan tanggal. 7. Menghasilkan laporan purchase berdasarkan tanggal. 8. Menghasilkan laporan sales retur berdasarkan tanggal. 9. Menghasilkan Purchase retur berdasarkan tanggal.
4.1.4.3 General System Requirement A. Initial Database Size
1. Terdapat sekitar 50 barang yang dibeli dalam proses pembelian yang ada dalam 1 bulan.
2. Terdapat sekitar 20 barang yang dijual dalam proses penjualan yang ada dalam 1 bulan.
3. Terdapat 1 karyawan yang bertugas sebagai admin.
5. Terdapat sekitar 10 perusahaan yang menjadi vendor PT. Multec Steel.
6. Terdapat 30 customer yang melakukan pembelian pada PT. Multec Steel.
B. Database Growth
1. Sekitar 50 purchase yang ada dalam 1 bulan. 2. Sekitar 5 purchase retur yang ada dalam 1 bulan. 3. Sekitar 20 sales yang ada dalam 1 bulan.
4. Sekitar 5 sales retur yang ada 1 bulan.
5. Sekitar 3 karyawan yang masuk dalam 1 tahun.
6. Sekitar 10 customer baru yang melakukan pembelian dalam 1 tahun.
7. Sekitar 2 vendor baru dalam 1 tahun.
8. Sekitar 40 purchase detail yang ada dalam 1 bulan. 9. Sekitar 60 sales detail yang ada dalam 1 bulan.
C. Networking And Shared Access
1. Sistem dapat diakses secara bersamaan oleh dua atau lebih pengguna.
D. Security
1. Database dilindungi dengan password.
2. Setiap staff perusahaan diberikan hak akses kedalam database sesuai dengan kebutuhan dan jabatan.
E. Back Up And Recovery
1. Database di back up sekali dalam sehari.
4.2 Perancangan Basis Data
Perancangan basis data meliputi tiga tahap, yaitu perancangan basis data konseptual, perancangan basis data logikal dan perancangan basis data fisikal.
4.2.1 Perancangan Konseptual
Perancangan basis data konseptual adalah proses membangun sebuah rancangan informasi yang dipusatkan pada pemrosesan suatu model dari informasi yang akan digunakan dalam suatu organisasi dan bebas dari pertimbangan fisikal. Tujuan dari perancangan ini untuk membuat representasi konseptual dari basis data yang meliputi identifikasi dari entitas, relasi dan atribut.
Perancangan basis data konseptual terdiri dari Sembilan tahap perancangan, yaitu (Connolly dan Begg, 2010, p468):
1. Identifikasi tipe entitas. 2. Identifikasi tipe relasi.
3. Identifikasi dan asosiasi atribut dengan entitas atau tipe relasi. 4. Menentukan domain atribut.
5. Identifikasi candidate dan primary key. 6. Penggunaan enhanced modeling concept. 7. Memeriksa redundansi.
8. Validasi transaksi dengan transasksi user. 9. Peninjauan model data konseptual dengan user.
4.2.1.1 Identifikasi Tipe Entitas
Tabel berikut merupakan tabel yang menjelaskan entity yang menjadi kebutuhan perusahaan.
Tabel 4.1 Identifikasi Tipe Entitas
No Entity Name Description Aliases Occurece
1 Pelanggan Informasi yang berisi data pelanggan
Customer Semua pelanggan yang melakuakan pembelian 2 Penjualan Informasi mengenai
pelanggan
Sales Semua pembelian yang dilakuakan oleh pelanggan
3 Barang Informasi mengenai semua produk
Product Produk yang ada untuk dijual
4 Pembelian Informasi mengenai semua persediaan
Purchase Semua pembelian yang dilakukan oleh perusahaan
5 Pembayaran Informasi mengenai pembayaran
Payment Cara pembayaran yang dilakukan oleh
pelanggan 6 Pemasok Informasi mengenai
pemasok
Vendor Semua pemasok dimana perusahaan membeli persediaan 7 Karyawan Berisi keterangan
mengenai data employee
Employee Bertugas sebagai karyawan yang menangani produk,penjualan, pembayaran,dll 8 Komentar Informasi mengenai
komentar
Testimony Setiap pelanggan dapat memberikan komentar mengenai produk 9 Retur Penjualan Informasi mengenai retur penjulan
Sales Retur Pembelian barang yang cacat dan tidak sesuai dengan permintaan customer 10 Retur pembelian Informasi mengenai retur pembelian Purchase Retur Pengembalian barang kepada pemasok karena barang cacat atau tidak sesuai dengan order perusahaan
4.2.1.2 Identifikasi Tipe Relasi
Menggunakan Entity Relational Diagram (ERD)
Tabel 4.2 Batasan Multiplicity dari Tipe Relasi
Nama Entitas Multiplicity Relationship Nama Entitas Multiplicity
Customer 1…1 Membuat Testimonial 0…*
Sales 1…* Mencantumkan Product 1…*
1…1 Memiliki Payment 1…1
1…* Mencantumkan Customer 1…1
Employee 1…1 Mengelola Testimonial 1…*
Purchase 1…* Mencatat Vendor 1…1
1…* Mencatat Product 1…*
SalesRetur 0…* Memasukan Sales 1…1
1...* Mencantumkan Product 1...* PurchaseRetur 0…* Mencantumkan Purchase 1…1
1...* Mencantumkan Product 1...* Payment 1...1 Mencantumkan Customer 1...1
4.2.1.3 Identifikasi dan Asosiasi Atribut dengan Entitas atau Tipe Relasi
Tabel 4.3 Identifikasi Atribut dengan Tipe Relasi
Nama Entitas Atribut Deskripsi
Tipe Data & Panjang Null
s Mult i Valu ed MsCustomer UserId Mengidentifikasi customer secara unik Char (8) No No
Pasword Password Varchar
(10) No No FirstName Nama depan
customer
Varchar
(15) No No LastName Nama belakang
customer
Varchar
(15) No No Address Alamat customer Varchar
(100) No No Email Alamat email
customer
Varchar
(30) Yes Yes BankAccountNo Nomer rekening Varchar
(15) No No PhoneNo No. Tlp customer Varchar No Yes
(15)
Gender Jenis kelamin INT No No
MsProduct ProductId Mengidentifikasi Product secara unik Char(8) No No
ProductName Nama produk Varchar
(10) No No Stock Stock pada
gudang INT No No
Price Harga produk Decimal
(10,2) No No
TrSales
SalesNo Mengidentifikasi
Sales secara unik Char (12) No No UserId
Mengidentifikasi customer secara
unik
Char(8) No No FirstName Nama depan
customer
Varchar
(15) No No ProductId Mengidentifikasi
product secara unik Char (8) No No ProductName Nama product Varchar
(10) No No Price Harga product Decimal
(10,2) No No
Status Status sales INT No No
RequestDate Tanggal
permintaan DateTime No No
Qty Kuantitas INT No No
SubTotal Total harga per item
Decimal
(10,2) No No GrandTotal Total harga
keseluruhan
Decimal
(10,2) No No PaymantStatus Status
pembayaran INT No No
TransactionDate Tanggal transaksi DateTime No No
Tr Purchase PurchaseNo Mengidentifikasi purchase secara unik Char (12) No No VendorId Mengidentifikasi
vendor secara unik Char (8) No No VendorName Nama vendor Varchar
(20) No No ProductId Mengidentifikasi
product secara unik Char (8) No No ProductName Nama product Varchar
(10) No No Price Harga product Decimal
(10,2) No No Description Deskripsi Varchar
(50) No No
SubTotal Total harga per item
Decimal
(10,2) No No GrandTotal Total harga
keseluruan
Decimal
(10,2) No No TransactionDate Tanggal transaksi DateTime No No
Payment PaymentNo Mengidentifikasi payment secara unik Char (12) No No
BankName Nama bank Varchar
(20) No No BankAccountNo Nomer rekening Varchar
(20) No No
Amount Jumlah INT No No
Status Status INT No No
TransactionDate Tanggal transaksi DateTime No No SalesNo Mengidentifikasi
Sales secara unik Char (12) No No UserId
Mengidentifikasi customer secara
unik
Char (8) No No GrandTotal Total harga
keseluruhan Decimal (10,2) No No MsVendor VendorId Mengidentifikasi vendor secara unik Char (8) No No
VendorName Nama vendor Varchar
(20) No No Anddress Alamat vendor Varchar
(100) No No Email Alamat email
vendor
Varchar
(30) Yes Yes PhoneNo No. Tlp vendor Varchar
(15) No Yes MsEmploye EmployeId Mengidentifikasi employee secara unik Char (8) No No
EmployeName Nama employee Varchar
(10) No No
Status Status INT No No
Testimonial TestimonialID Mengidentifikasi testimonial secara unik Char (8) No No FirstName Nama Customer Varchar
(15) No No
Comment Komentar Varchar
(100) No No
Status Status INT No No
EmployeeId
Mengidentifikasi employee secara
unik
UserId Mengidentifikasi customer secara unik Char (8) No No SalesRetur SelesReturId Mengidentifikasi SalesRetur secara unik Char (12) No No SalesNo Mengidentifikasi Sales secara unik
Char (12) No No FirstName Nama depan
customer
Varchar (15)
No No ProductId Mengidentifikasi
product secara unik
Char (8) No No ProductName Nama Product Varchar
(10)
No No
QTY Kuantitas INT No No
Price Harga Decimal
(10,2)
No No TransactionDate Tanggal DateTime No No
PurchaseRetur PurchaseReturId Mengidentifikasi PurchaseRetur secara unik Char (12) No No PurchaseNo Mengidentifikasi Purchase secara unik Char (12) No No
VendorName Nama Vendor Varchar (12) No No ProductId Mengidentifikasi product secara unik Char (8) No No
ProductName Nama Product Varchar (10)
No No
QTY Kuantitas INT No No
TransactionDate Tanggal DateTime No No
Price Harga Decimal
(10,2)
4.2.1.4 Menentukan Domain Atribut
Domain untuk setiap atribut dapat dijelaskan dengan tabel seperti dibawah ini:
Tabel 4.4 Identifikasi Domain Atribut No Nama Entitas Atribut Tipe Data
& Length Domain Atribut
1 MsCustmer UserId Char (8) Diisi dengan angka dan huruf Password Varchar
(10)
Diisi dengan angka atau huruf
FirstName Varchar (15)
Diisi dengan huruf maksimum 15
LastName Varchar (15)
Diisi dengan huruf maksimum 15
Address Varchar
(100)
Diisi dengan huruf maksimum 100
Email Varchar
(30)
Diisi dengan huruf atau angka maksimum 30
PhoneNo Varchar
(15)
Diisi dengan huruf maksimum 15
BankAccountNo Varchar (15)
Diisi dengan angka maksimum 15
Gender INT Male atau Female
2 MsProduct ProductId Char (8) Diisi dengan angka dan huruf ProductName Varchar
(10)
Diisi dengan huruf maksimum 10
Stock INT Diisi dengan angka
Price Decimal
(10,2)
Diisi dengan angka maksimum 10 di depan koma dan 2 dibelakang koma 3 TrSales SalesNo Char (12) Diisi dengan angka dan huruf
UserId Char (8) Diisi dengan angka dan huruf FirstName Varchar (15) Diisi dengan huruf maksimum
15
ProductId Char (8) Diisi dengan angka dan huruf ProductName Varchar (10) Diisi dengan huruf maksimum
10
Price Decimal
(10,2)
Diisi dengan angka maksimum 10 di depan koma dan 2 dibelakang koma
Status INT True / False
Qty INT Diisi dengan angka
SubTotal Decimal (10,2)
Diisi dengan angka maksimum 10 di depan koma dan 2 dibelakang koma
GrandTotal Decimal (10,2)
Diisi dengan angka maksimum 10 di depan koma dan 2 dibelakang koma RequestDate DateTime Format yyyy-mm-dd PaymentStatus INT Done or not done TransactionDate DateTime Format yyyy-mm-dd
4 TrPurchase PurchaseNo Char (12) Diisi dengan angka dan huruf VendorId Char (8) Diisi dengan angka dan huruf VendorName Varchar (20) Diisi dengan huruf
maksimum 20
ProductId Char (8) Diisi dengan angka dan huruf ProductName Varchar (10) Diisi dengan huruf
maksimum 10
Price Decimal
(10,2)
Diisi dengan angka maksimum 10 di depan koma dan 2 dibelakang koma Description Varchar
(50)
Diisi dengan huruf maksimum 50
TransactionDate DateTime Format yyyy-mm-dd
Qty INT Diisi dengan angka
SubTotal Decimal (10,2)
Diisi dengan angka maksimum 10 di depan koma dan 2 dibelakang koma GrandTotal Decimal
(10,2)
Diisi dengan angka maksimum 10 di depan koma dan 2 dibelakang koma 5 MsVendor VendorId Char (8) Diisi dengan angka dan huruf
VendorName Varchar (20)
Diisi dengan huruf maksimum 20
Address Varchar
(100)
Diisi dengan huruf maksimum 100
Email Varchar
(30)
Diisi dengan huruf atau angka maksimum 30
PhoneNo Varchar
(15)
Diisi dengan huruf maksimum 15
6 PurchaseRetur PurchaseReturId Char (12) Diisi dengan angka dan huruf PurchaseNo Char (12) Diisi dengan angka dan huruf VendorName Varchar (20) Diisi dengan huruf
maksimum 20
ProductId Char (8) Diisi dengan angka dan huruf
ProductName Varchar (10) Diisi dengan huruf
maksimum 10
Qty INT Diisi dengan Angka
Price Decimal
(10,2)
Diisi dengan angka maksimum 10 didepan koma dan 2 dibelakang koma TransactionDate DateTime Format yyyy-mm-dd
7 SalesRetur SalesReturId Char (12) Diisi dengan angka dan huruf SalesNo Char (12) Diisi dengan angka dan huruf
FirstName Varchar (15) Diisi dengan huruf maksimum 15
ProductId Char (8) Diisi dengan angka dan huruf ProductName Varchar (10) Diisi dengan huruf
maksimum 10
Qty INT Diisi dengan angka
Price Decimal
(10,2)
Diisi dengan angka maksimum 10 didepan koma dan 2 dibelakang koma TransactionDate DateTime Format yyyy-mm-dd
8 Testimonial TestimonialId Char(8) Diisi dengan angka dan huruf FirstName Varchar(15) Diisi dengan huruf
maksimum 15
EmployeeId Char (8) Diisi dengan angka dan huruf UserId Char (8) Diisi dengan angka dan huruf
Comment Varchar
(100)
Diisi dengan huruf maksimum 100
Status INT Approve / No
9 MsEmployee EmployeeId Char (8) Diisi dengan angka dan huruf EmployeeName Varchar(10) Diisi dengan huruf max10 Status INT Admin / Bagian Gudang /
Delivery
10 Payment PaymentNo Char (12) Diisi dengan angka dan huruf SalesNo Char (12) Diisi dengan angka dan huruf UserId Char (8) Diisi dengan angka dan huruf GrandTotal Decimal
(10,2)
Diisi dengan angka maksimum 10 didepan koma dan 2 dibelakang koma BankName Varchar
(20)
Diisi dengan huruf max 20 BankAccountNo Varchar
(10)
Diisi dengan angka dan huruf
Amount INT Diisi dengan angka
Status INT Done or not done
4.2.1.5 Menentukan Candidate dan Primary Key
Berikut merupakan identifikasi atribut dan domain atribut:
Tabel 4.5 Candidate dan Primary Key
No Entity Name Candidate Key Primary Key
1 Customor UserId UserId
2 Product ProductId ProductId
3 Sales SalesNo UserId ProductId SalesNo 4 Purchase PurchaseNo VendorId ProductId PurchaseNo 5 Payment PaymentNo SalesNo UserId PaymentNo
6 Vendor VendorId VendorId
7 Employee EmployeeId EmployeeId
8 Testimonial TestimonialId UserId EmployeeId TestimonialId 9 SalesRetur SalesReturId SalesNo ProductId SalesReturId 10 PurchaseRetur PurchaseReturId PurchaseNo ProductId PurchaseReturId
Gambar 4.3 Model Data Konseptual dengan PrimaryKey
4.2.1.6 Peninjauan Model Data Konseptual dengan User
Model data konseptual dan dokumen pendukung yang mendeskripsikan model adalah representasi yang sudah didiskusikan dan dinyatakan benar oleh user.
4.2.2 Perancangan Logikal
Perancangan basis data logikal adalah suatu proses membangun sebuah model dari informasi yang digunakan perusahaan berdasarkan sebuah model data spesifik, terlepas dari DBMS dan pertimbangan fisik lain. Tujuan perancangan logikal adalah untuk merepresentasikan konseptual ke struktur logikal dari basis data yang meliputi perancangan relasi.
Perancangan basis data logikal terdiri dari tahap perancangan, yaitu : 1. Menghilangkan fitur yang tidak kompatibel dengan model relasi.
2. Derive relation untuk model data logical. 3. Validasi relasi menggunakan normalisasi. 4. Validasi relasi terhadap transaksi user. 5. Menentukan batasan integritas.
6. Peninjauan model data logikal dengan user. 7. Merger model data logikal ke dalam model global. 8. Validasi logikal data model secara global.
9. Periksa untuk pertumbuhan di masa dating.
4.2.2.1 Menghilangkan Fitur yang Tidak Kompatibel dengan Model Relasi
Remove many to many binary relationship types
Gambar 4.4 Hubungan Relasi Sales dan Product yang Sudah Dipecah
Keterangan:
Pisahkan hubungan many to many antara Sales dan Product dengan menambahkan SalesDetail. Langkah ini bertujuan untuk menghilangkan redudansi data.
Gambar 4.5 Hubungan Relasi Purchase dan Product yang Sudah Dipecah
Gambar 4.6 Hubungan Relasi Purchase Retur dan Product yang Sudah Dipecah
Keterangan:
Pisahkan antara many to many antara PurchaseRetur dan Product dengan menambahkan PurchaseReturDetail untuk menghilangkan redudansi data.
Gambar 4.7 Hubungan Relasi Sales Retur dan Product yang Sudah Dipecah
Keterangan:
Pisahkan antara many to many antara SalesRetur dan Product dengan menambahkan SalesReturDetail untuk menghilangkan redudansi data.
Remove multi-valued attributes
Keterangan:
Memisahkan CustomerPhone dan atribut CustomerEmail dari customer untuk menghilangkan redudansi data.
Gambar 4.8 Multi-Valued Atribut yang Sudah Dihilangkan Keterangan:
Memisahkan VendorPhone dan VendorEmail dari atribut vendor untuk menghilangkan redudansi data.
4.2.2.2 Derive Relation untuk Model Data Logikal Tipe Entitas Strong
Tipe entitas strong yang terdapat dalam basis data kami dapat dijelaskan sebagai berikut:
Tabel 4.6 Strong Entity
1 MsCustomer (UserId, Password, FirstName, LastName, Gender, PhoneNo, Address, Email, BankAccountNo)
Primary Key: UserId
2 MsProduct (ProductId, ProductName,Stock, Price) Primary Key: ProductId
3 TrSales (SalesNo,UserId, FirstName, ProductId, ProductName, Price, Status, RequestDate, PaymentStatus,QTY, SubTotal, GrandTotal, TransactionDate)
Primary Key: SalesNo
4 TrPurchase (PurchaseNo, VendorId, VendorName, ProductId, ProductName, Price, Description, TransactionDate, QTY,SubTotal, GrandTotal)
Primary Key: PurchaseNo
5 MsVendor (VendorId, VendorName, Address, PhoneNo, Email) Primary Key: VendorId
6 PurchaseRetur (PurchaseReturId, PruchaseNo, VendorName, ProductId, ProductName, Quantity, Price, TransactionDate)
Primary Key: PurchaseReturId
7 SalesRetur (SalesReturId, SalesNo, FirstName, ProductId, ProductName Quantity, Price,TransactionDate)
Primary Key: SalesReturId
8 Testimonial (TestimonialId, EmployeeId, FirstName, UserId, Comment, Status)
Primary Key: TestimonialId
9 MsEmployee (EmployeeId, EmployeeName, Status) Primary Key: EmployeeId
10 Payment (PaymentNo, SalesNo, UserId, GrandTotal, BankName, BankAccountNo, Amount, Status, TransactionDate)
Primary Key: PaymentNo
Tipe Entitas Weak
Tipe entitas weak dapat dijelaskan sebagai berikut: Tabel 4.7 Weak Entity
1 TrPurchaseDetail (PurchaseNo, Price, ProductlId, QTY) Primary Key: PurchaseNo, ProductlId
2 TrSalesDetail (SalesNo, ProductId, Price, QTY) Primary Key: SalesNo, ProductId
3 TrPurchaseReturDetail (PurchaseReturNo, Price, ProductlId, QTY) Primary Key: PurchaseReturNo, ProductlId
4 TrSalesReturDetail (SalesReturNo, ProductId, Price, QTY) Primary Key: SalesReturNo, ProductId
Tipe Hubungan Binary 1:*
Untuk setiap relasi binary one-to-many, entitas ‘oneside’ dari relasi dijadikan sebagai entitas dan entitas ‘many-side’ dijadikan sebagai entitas child. Untuk menunjukkan relasi ini, kita mengirimkan atribut primary key dari parent kedalam entitas child dan memegang peranan sebagai foreign key (Connolly dan Begg, 2010, p493)
Masukkan UserId ke Testimonial
Masukkan EmployeeId ke testimonial
MsEmployee (EmployeeId, EmployeeName, Status) Primary Key: EmployeeId
Testimonial (TestimonialId, FirstName, UserId, Comment, Status, EmployeeId) Primary Key: TestimonialId
Foreign Key: UserId References MsCustomer (UserId)
EmployeeId References MsEmployee MsCustomer (UserId, Password,
FirstName, LastName, Gender, Address, PhoneNo, Email, BankAccountNo) Primary Key: UserId
Testimonial (TestimonialId, EmployeeId, Comment, FirstName, UserId, Status)
Primary key: TestimonialId Foreign Key: UserId References MsCustomer (UserId)
(EmployeeId)
Masukkan UserId ke TrSales
Mscustomer (UserId, Password, FirstName, Address, PhoneNo, Email, BankAccountNo, Gender)
Primary Key: UserId
TrSales (SalesNo, UserId, FirstName, ProductId, ProductName, Price, Status, RequestDate, PaymentStatus, UserId, QTY, SubTotal, GrandTotal,
TransactionDate) Primary Key: SalesNo
Foreign Key: UserId References MsCustomer (UserId)
Masukkan VendorId ke TrPurchase
MsVendor (VendorId, VendorName, Address, PhoneNo,Email)
Primary key: VendorId
TrPurchase (PurcahaseNo, VendorId, VendorName, ProductId, ProductName, Price, Description, VendorId,
TransactionDate, SubTotal, GrandTotal) Primary Key: PurchaseNo
Foreign Key: VendorId References MsVendor (VendorId)
Masukkan PurchaseNo ke PurchaseRetur
TrPurchase (PurcahaseNo,VendorName, ProductId, ProductName, Price,
Description, VendorId, TransactionDate, SubTotal, GrandTotal)
Primary Key: PurchaseNo
PurchaseRetur (PurcahseReturId, VendorName, ProductId, ProductName, PurchaseNo, QTY, Price,
TransactionDate)
Primary Key: PurchaseReturId Foreign Key: PurchaseNo References TrPurchase (PurchaseNo)
Masukkan SalesNo ke SalesRetur
TrSales (SalesNo, UserId, FirstName, ProductId, ProductName, Price, Status, RequestDate, PaymentStatus, UserId, QTY, SubTotal, GrandTotal,
TransactionDate) Primary Key: SalesNo
SalesRetur (SelesReturId, FirstName, ProductId, ProductName, Quantity, Price, SalesNo, TransactionDate) Primary key: SalesReturId Foreign Key: SalesNo References TrSales (SalesNo)
Tipe Hubungan Binary 1:1
Masukkan SalesNo ke Payment
TrSales (SalesNo, UserId, FirstName, ProductId, ProductName, Price, Status, RequestDate, PaymentStatus, SubTotal, QTY GrandTotal, TransactionDate) Primary Key: SalesNo
Payment (PaymentNo, UserId, GrandTotal, BankName, Amount, SalesNo, BankAccountNo, Status, TranactionDate)
Primary Key: PaymentNo
Foreign Key: SalesNo References TrSales (SalesNo)
Tipe Hubungan Binary *:*
MsProduct (ProductId,ProductName, Stock, Price)
Primary Key: ProductId
TrSales (SalesNo, FirstName, ProductId, ProductName, Price, UserId,
RequestDate, PaymentStatus, SubTotal, QTY, GrandTotal, TransactionDate) Primary Key: SalesNo
Foreign Key: UserId References MsCustomer (UserId)
Keterangan : Buat entitas baru dengan Primary key Product (ProductId) dan Primary Key Sales (SalesNo) sebagai Primary Key dan Foreign Key entitas tersebut
TrSalesDetail (ProductId, SalesNo, Price, QTY) Primary Key: ProductId, SalesNo
Foreign Key: SalesNo References TrSales (SalesNo) ProductId References MsProduct (ProductId)
MsProduct (ProductId,ProductName, Stock, Price)
Primary Key: ProductId
TrPurchase (PurcahaseNo,
VendorName, ProductId, ProductName, Price, Description, VendorId,
TransactionDate, QTY, SubTotal, GrandTotal)
Primary Key: PurchaseNo
Foreign Key: VendorId References MsVendor (VendorId)
Keterangan : Buat entitas baru dengan Primary key Product (ProductId) dan Primary Key Purchase (PurchaseNo) sebagai Primary Key dan Foreign Key entitas tersebut.
TrPurchaseDetail (ProductId, PurchaseNo,Price, QTY) Primary Key: ProductId, PurchaseNo
Foreign Key: PurchaseNo References TrPurchase (PurchaseNo) ProductId References MsProduct (ProductId)
MsProduct (ProductId,ProductName, Stock, Price)
Primary Key: ProductId
TrSalesRetur (SalesReturId, FirstName, ProductId, ProductName, Price,
SalesNo,UserId, RequestDate, QTY, TransactionDate)
Primary Key: SalesReturNo
Foreign Key: SalesNo References TrSales (SalesNo)
Keterangan : Buat entitas baru dengan Primary key Product (ProductId) dan Primary Key SalesRetur (SalesReturId) sebagai Primary Key dan Foreign Key entitas tersebut.
TrSalesReturDetail (ProductId, SalesReturNo, Price, QTY) Primary Key: ProductId, SalesReturId
Foreign Key: SalesReturId References TrSalesRetur (SalesReturId) ProductId References MsProduct (ProductId)
MsProduct (ProductId,ProductName, Stock, Price)
Primary Key: ProductId
TrPurchaseRetur
(PurcahaseReturId,PurchaseNo,
VendorName, ProductId, ProductName, Price, TransactionDate, QTY)
Primary Key: PurchaseReturId Foreign Key: PurchaseNo References TrPurchase (PurchaseNo)
Keterangan : Buat entitas baru dengan Primary key Product (ProductId) dan Primary Key PurchaseRetur (PurchaseReturId) sebagai Primary Key dan Foreign Key entitas tersebut
TrPurchaseReturDetail (ProductId, PurchaseReturId,Price, QTY) Primary Key: ProductId, PurchaseReturId
Foreign Key: PurchaseReturId References TrPurchaseRetur (PurchaseReturId) ProductId References MsProduct (ProductId)
Atribut Multi-Valued
Pada desain basis data kami, ditemukan adanya atribut multi-value pada size dan price. Untuk produk Tart mempunyai variasi ukuran yang beragam.
Masukkan UserId ke CustomerPhone
MsCustomer (UserId, Password, FirstName, LastName, Address, Email, BankAccountNo, Gender)
Primary Key: UserId
CustomerPhone (CustomerPhoneNo, UserId)
Primary Key: CustomerPhoneNo Foreign Key: UserId References MsCustomer (UserId)
Masukkan UserId ke CustomerEmail
MsCustomer (UserId, Password, FirstName, LastName, Address, BankAccountNo, Gender) Primary Key: UserId
CustomerEmail(CustomerEmailNo, UserId)
Primary Key: CustomerEmailNo Foreign Key: UserId References MsCustomer (UserId)
Masukkan VendorId ke VendorPhone
MsVendor (VendorId, VendorName, Email, Address)
Primary Key: VendorId
VendorPhone (VendorPhoneNo, VendorId)
Primary Key: VendorPhoneNo Foreign Key: VendorId References MsVendor (VendorId)
Masukkan VendorId ke VendorEmail
MsVendor (VendorId, VendorName, Address)
Primary Key: VendorId
VendorEmail (VendorEmailNo, VendorId)
Primary Key: VendorEmailNo Foreign Key: VendorId References MsVendor (VendorId)
4.2.2.3 Validasi Relasi Menggunakan Normalisasi
Di dalam tahap perancangan basis data logikal, normalisasi kembali dilakukan terhadap basis data yang sudah terbentuk ditahap konseptual untuk memvalidasi relasi. Normalisasi yang dilakukan dapat dijelaskan sebagai berikut :
1. Sales
Normalisasi dalam entitas sales adalah sebagai berikut : UNF
Sales (SalesNo, FirstName, Status, RequestDate, PaymentStatus, TransactionDate, UserId, (ProductId, ProductName, QTY, Price, SubTotal), GrandTotal)
1NF
SalesH (SalesNo, UserId, FirstName, TransactionDate, PaymentStatus, RequestedDate, Status)
2NF
SalesH (SalesNo, UserId, FirstName, TransactionDate, PaymentStatus, RequestedDate, Status)
SalesD (SalesNo, PoductId, ProductName, Price, QTY) Product (ProductId, ProductName)
3NF
SalesH (SalesNo, UserId, FirstName, TransactionDate, PaymentStatus, RequestedDate, Status)
SalesD (SalesNo, ProductId, ProductName, Price, QTY) Product (ProductId, ProductName)
Customer (UserId, Firstname)
2. Purchase
Normalisasi dalam entitas Pembelian adalah sebagai berikut : UNF
Purchase (PurchaseNo, Description, TransactionDate, VendorId, VendorName (ProductId, ProductName, QTY, Price, SubTotal), GrandTotal)
1NF
PurchaseH (PurchaseNo, Description, TransactionDate, VendorId, VendorName)
2NF
PurchaseH (PurchaseNo, Description, TransactionDate, VendorId, VendorName)
PurchaseD (PurchaseNo, ProductId, ProductName, Price, QTY) Product (ProductId, ProductName)
3NF
PurchaseH (PurchaseNo, VendorName, Description, TransactionDate, VendorId)
PurchaseD (PurchaseNo, ProductId, ProductName, Price, QTY) Product (ProductId, ProductName)
Vendor (VendorId, VendorName)
3. Purchase Retur
Normalisasi dalam entitas Retur Pembelian adalah sebagai berikut :
UNF
PurchaseRetur (PurchaseReturId, TransactionDate, VendorName PurchaseNo, (ProductId, ProductName, QTY, Price))
1NF
PurchaseReturH (PurchaseReturId, VendorName, TransactionDate, PurchaseNo)
PurchaseReturD (PurchaseReturId, ProductName, ProductId, QTY, Price)
2NF
PurchaseReturH (PurchaseReturId, VendorName, TransactionDate, PurchaseNo)
PurchaseReturD (PurchaseReturId, ProductName, ProductId, Price, QTY)
Purchase (PurchaseNo, VendorName)
3NF
PurchaseReturH (PurchaseReturId, TransactionDate, PurchaseNo)
PurchaseReturD (PurchaseReturId, ProductId, Price, QTY) Purchase (PurchaseNo, VendorName)
4. ReturnSales
Normalisasi dalam entitas Retur Penjualan adalah sebagai berikut :
UNF
SalesRetur (SalesReturId, TransactionDate, SalesNo, FirstName (ProductName, ProductId, QTY, Price))
1NF
SalesReturH (SalesReturId, TransactionDate, SalesNo, FirstName)
SalesReturD (PurchaseReturId, ProductName, ProductId, QTY, Price)
2NF
SalesReturH (SalesReturId, TransactionDate, SalesNo, FirstName)
SalesReturD (SalesReturId, ProductName, ProductId, QTY, Price)
3NF
SalesReturH (SalesReturId, TransactionDate, SalesNo) SalesReturD (SalesReturId, ProductId, QTY, Price) Sales (SalesNo, FirstName)
Product (ProductId, ProductName)
5. Payment UNF
Payment (PaymentNo, Amount, Status, TransactionDate, BankName, BankAccountNo, UserId, GrandTotal, SalesNo)
1NF
Payment (PaymentNo, Amount, Status, TransactionDate, BankName, BankAccountNo, SalesNo, GrandTotal, UserId)
2NF
Payment (PaymentNo, Amount, Status, TransactionDate, BankName, BankAccountNo, GrandTotal UserId, SalesNo)
3NF
Payment (PaymentNo, Amount, Status, TransactionDate, BankName, BankAccountNo, UserId, SalesNo) Sales (SalesNo, GrandTotal)
6. Testimonial UNF
Testimonial (TestimonialId, Comment, Status, (EmployeeId), (UserId, FirstName))
1NF
Testimonial (TestimonialId, Comment, Status, UserId, FirstName, EmployeeId )
2NF
Testimonial (TestimonialId, Comment, Status, UserId, FirstName, EmployeeID, )
3NF
Testimonial (TestimonialId, Comment, Status, UserId, FirstName, EmployeeID, )
Customer (UserId, FirstName) Employee (EmployeeId)
7. Customer UNF
Customer (UserId, Password, FirstName, LastName, Address, Gender, BankAccountNo)
1NF
Customer (UserId, Password, FirstName, LastName, Address, Gender, BankAccountNo)
2NF
Customer (UserId, Password, FirstName, LastName, Address, Gender, BankAccountNo)
3NF
Customer (UserId, Password, FirstName, LastName, Address, Gender, BankAccountNo)
8. Employee
UNF
Employee (EmployeeId, EmployeeName, Status) 1NF
Employee (EmployeeId, EmployeeName, Status)
Employee (EmployeeId, EmployeeName, Status)
3NF
Employee (EmployeeId, EmployeeName, Status)
9. Vendor UNF
Vendor (VendorId, VendorName, Address)
1NF
Vendor (VendorId, VendorName, Address)
2NF
Vendor (VendorId, VendorName, Address)
3NF
Vendor (VendorId, VendorName, Address)
10. Product
UNF
Product (ProductId, ProductName, Price, Stock)
1NF
2NF
Product (ProductId, ProductName, Price, Stock)
3NF
Product (ProductId, ProductName, Price, Stock)
4.2.2.4 Validasi relasi terhadap transaksi user
Relasi dalam model data logikal sudah mendukung transaksi yang dibutuhkan oleh user.
4.2.2.5 Menentukan batasan integritas
Batasan integritas dari entitas dalam basis data kami adalah sebagai berikut:
Tabel 4.8 Menentukan Batasan Integritas
MsCustomer (UserId, Password, FirstName, LastName, Gender, Address, BankAccountNo)
Primary Key: UserId
MsEmployee (EmployeeId, EmployeeName, Status) Primary Key: EmployeeId
MsProduct (ProductId, ProductName, Stock, Price) Primary Key: ProductId
Testimonial (TestimonialId, FirstName, UserId, Comment, Status, EmployeeId) Primary Key: TestimonialId
Foreign Key: UserId References MsCustomer (UserId) ON UPDATE CASCADE ON DELETE CASCADE
EmployeeId References MsEmployee (EmployeeId) ON UPDATE CASCADE ON DELETE CASCADE
MsVendor (VendorId, VendorName, Address) Primary Key: VendorId
RequestedDate, PaymentStatus, QTY, TransactionDate) Primary Key: SalesNo
Foreign Key: UserId References MsCustomer (UserId) ON UPDATE CASCADE ON DELETE CASCADE
TrPurchase (PurchaseNo, VendorId, VendorName, ProductId, ProductName , Price, Description, QTY, TransactionDate)
Primary Key: PurchaseNo
Foreign Key; VendorId References MsVendor (VendorId) ON UPDATE CASCADE ON DELETE CASCADE
PurchaseRetur (PurchseReturId, PurchaseNo, QTY, Price, VendorName, ProductId, ProductName, TransactionDate)
Primary Key: PurchseReturId
Foreign Key: PurchaseNo References TrPurchase (PurchaseNo) ON UPDATE CASCADE ON DELETE CASCADE
SalesRetur (SalesReturId, QTY, Price, FirstName, ProductId, ProductName SalesNo,TransactionDate)
Primary key: SalesReturId
Foreign Key: SalesNo References TrSales (SalesNo) ON UPDATE CASCADE ON DELETE CASCADE
Payment (PaymentNo, UserId, BankName, BankAccountNo, Amount, SalesNo, Status, TransactionDate)
Primary Key: PaymentNo
Foreign Key : SalesNo References TrSales (SalesNo) ON UPDATE CASCADE ON DELETE CASCADE
TrSalesDetail (SalesNo, ProductId, Price, QTY) Primary Key: SalesNo, ProductId
Foreign Key: SalesNo References TrSales (SalesNo) ON UPDATE CASCADE ON DELETE CASCADE
ProductId References MsProduct (ProductId) ON UPDATE CASCADE ON DELETE CASCADE
TrPurchaseDetail (PurchaseNo, ProductId, Price, QTY) Primary Key: PurchaseNo, ProductId
CASCADE ON DELETE CASCADE
ProductId References MsProduct (ProductId) ON UPDATE CASCADE ON DELETE CASCADE
TrSalesReturDetail (SalesReturId, ProductId, Price, QTY) Primary Key: SalesNo, ProductId
Foreign Key: SalesReturId References TrSalesReur (SalesReturId) ON UPDATE CASCADE ON DELETE CASCADE
ProductId References MsProduct (ProductId) ON UPDATE CASCADE ON DELETE CASCADE
TrPurchaseDetail (PurchaseReturid, ProductId, Price, QTY) Primary Key: PurchaseReturId, ProductId
Foreign Key: PurchaseReturId References TrPurchaseRetur (PurchaseReturId) ON UPDATE CASCADE ON DELETE CASCADE
ProductId References MsProduct (ProductId) ON UPDATE CASCADE ON DELETE CASCADE
CustomerPhone (CustomerPhoneNo, UserId) Primary Key: CustomerPhoneNo
Foreign Key: UserId References MsCustomer (UserId) ON UPDATE CASCADE ON DELETE CASCADE
VendorPhone (VendorPhoneNo, VendorId) Primary Key: VendorPhoneNo
Foreign Key: VendorId References MsVendor (VendorId) ON UPDATE CASCADE ON DELETE CASCADE
CustomerEmail (CustomerEmailNo, UserId) Primary Key: CustomerEmailNo
Foreign Key: UserId References MsCustomer (UserId) ON UPDATE CASCADE ON DELETE CASCADE
VendorEmail (VendorEmailNo, VendorId) Primary Key: VendorEmailNo
Foreign Key: VendorId References MsVendor (VendorId) ON UPDATE CASCADE ON DELETE CASCADE
4.2.2.6 Peninjauan model data logikal dengan user
Model data logikal dan dokumen pendukung yang mendeskripsikan model adalah representasi yang telah didiskusikan dan dinyatakan benar oleh user.
Keterangan:
1. Proses Penjualan
A Registrasi Customer yang baru bergabung.
B Transaksi pembelian (Sales) yang dilakukan oleh customer.
C Transaksi pembelian (Sales) mencantumkan product. D Transaksi pembayaran (Payment) berdasarkan
penjualan (Sales).
E Transaksi pembayaran (Payment) mengambil data customer.
F Transaksi retur penjualan (Sales Retur) berdasarkan penjualan (Sales).
G Transaksi retur penjualan (SalesRetur) mencantumkan product.
H Customer memberikan testimonial.
I Employee mengelolah (Mengupdate) testimonial dari customer.
2. Proses Pembelian
J Registrasi vendor yang baru bergabung.
K Transaksi pembelian (Purchase) yang dilakukan perusahaan terhadap vendor.
L Transaksi pembelian (Purchase) mencantumkan product.
M Transaksi retur pembelian (Purchase Retur) berdasarkan pembelian (Purchase).
N Transaksi retur pembelian (Purchase Retur) mencantumkan product.
4.2.2.7 Merger model data logikal ke dalam model global Pada perancangan basis data ini, kami melakukan langkah merger model data logikal ke dalam model global.
Gambar 4.10 Merger model data logical
4.2.2.8 Validasi logikal data model secara global
Pada perancangan basis data ini, kami tidak melakukan langkah validasi logikal data model secara global.
Gambar 4.11 Validasi logikal data model secara global 4.2.2.9 Periksa untuk pertumbuhan dimasa datang
Model data logikal yang dirancang sudah disesuaikan dengan kemungkinan yang terjadi di masa depan, selama tidak terjadi perubahan kebutuhan dari user.
4.2.3 Perancangan Fisikal
Perancangan basis data fisik adalah proses yang menghasilkan gambaran dari implement database pada secondary storage. Tahap ini menggambarkan base relation, penyusunan dan pemberian indek file yang digunakan untuk mencapai akses data yang efisien, batasan integritas, dan tingkat keamanan (Connolly dan Begg, 2010, p523).
Perancangan basis data fisikal terdiri dari tahap perancanganan, yaitu: 1. Memetakan model data logikal untuk target DBMS
• Desain base relation.
• Desain representasi dan derived data. • Desain batasan umum.
2. Desain penyusunan dan pemberian index pada file • Analisis transaksi.
• Memilih index.
• Memperkirakan ukuran kapasitas disk yang dibutuhkan. 3. Desain user views
4. Desain mekanisme keamanan
5. Mempertimbangkan petunjuk untuk pengaturan redundancy 6. Monitor dan tune sistem operasional
4.2.3.1 Memetakan Model Data Logikal Untuk Target DBMS
Tujuan dari langkah ini adalah untuk menghasilkan skema basis data relasional dari model data logikal yang dapat diimplementasikan di DBMS (Connolly dan Begg, 2010, p524).
Tujuan dari langkah ini adalah untuk memutuskan bagaimana kita menampilkan base relation yang ditemukan dari model data logikal ke dalam target DBMS (Connolly dan Begg, 2010, p525). Desain Base Relation
• MsCustomor
Domain UserId: Fixed length character string, length 8 DomainPassword: Variable length character string, length 10 Domain FirstName: Variable length character string, length 15 Domain LastName: Variable length character string, length 15 Domain Gender: Integer
Domain Address: Variable length character string, length 100 Domain BankAccountNo: Variable length character string, length 15 MsCustomer(
UserId UserId NOT NULL,
Password CustomerPassword NOT NULL,
FirstName CustomerFirstName NOT NULL,
LastName CustomerLastName NOT NULL,
Gender Gender NOT NULL,
Address CustomerAddress NOT NULL,
BankAccountNo BankAccountNo NOT NULL,
PRIMARY KEY (UserId), )
• MsEmplyee
Domain EmployeeId: Fixed length character string , length 8
Domain Status: Integer MsEmployee(
EmployeeId EmployeeId NOT NULL, EmployeeName EmployeeName NOT NULL, Status EmployeeStatus NOT NULL, PRIMARY KEY (EmployeeId),
)
• MsProduct
Domain ProductId: Fixed length character string , length 8
Domain ProductName: variable length character string , length 10 Domain Price: Decimal, length 10,2
Domain Stock : Integer MsProduct(
ProductId ProductId NOT NULL,
ProductName ProductName NOT NULL,
Price Price NOT NULL,
Stock Stock NOT NULL,
PRIMARY KEY (ProductId), )
• Testimonial(
Domain TestimonialId: Fixed length character string , length 8 Domain UserId: Fixed length character string , length 8
Domain Comment: Variable length character string , length 100 Domain FirstName: Variable length character string , length 15
Domain Status: Integer
Domain EmployeeId: Fixed length character string , length 8 Testimonial(
TestimonialId TestimonialId NOT NULL,
UserId UserId NOT NULL,
Comment TestimonialComment NOT NULL,
Status Status NOT NULL,
EmployeeId EmployeeId NOT NULL,
FirstName CustomerFirstName NOT NULL, PRIMARY KEY (TestimonialId),
FOREIGN KEY UserId REFERENCES MsCustomer (UserId) ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY EmployeeId REFERENCES MsEmployee (EmployeeId) ON UPDATE CASCADE ON DELETE CASCADE, )
• MsVendor
Domain VendorId: Fixed length character string , length 8
Domain VendorName: variable length character string , length 20 Domain Address: variable length character string , length 100 MsVendor(
VendorId VendorId NOT NULL,
VendorName VendorName NOT NULL,
Address VendorAddress NOT NULL,
PRIMARY KEY (VendorId), )
• TrSales
Domain SalesNo: Fixed length character string , length 12 Domain Status: Integer
Domain UserId: Fixed length character string , length 8 Domain RequestedDate: DateTime, format yyyy-mm-dd Domain PaymentStatus: Integer
Domain TransactionDate: DateTime, format yyyy-mm-dd Domain FirstName : variable length character string , length 15 Domain ProductId: Fixed length character string , length 8
Domain ProductName: variable length character string , length 10 Domain Price: Decimal, length 10,2
TrSales
SalesNo SalesNo NOT NULL,
FirsName CustomerFirstName NOT NULL,
ProductId ProductId NOT NULL,
ProductName ProductName NOT NULL,
Price Price NOT NULL,
Status SalesStatus NOT NULL,
UserId UserId NOT NULL,
RequestedDate SalesRequestDate NOT NULL, PaymentStatus PaymentStatus NOT NULL, TransactionDate SalesTransactionDate NOT NULL, PRIMARY KEY(SalesNo),
FOREIGN KEY UserId REFERENCES MsCustomer (UserId) ON UPDATE CASCADE ON DELETE CASCADE,
)
• TrPurchase
Domain PurchaseNo: Fixed length character string , length 12 Domain VendorId: Fixed length character string , length 8 Domain Description: Variable length character string , length 50 Domain TransactionDate: DateTime, format yyyy-mm-dd
Domain VendorName : Variable length character string , length 20 Domain ProductId: Fixed length character string , length 8
Domain ProductName: Variable length character string , length 10 Domain Price: Decimal, length 10,2
TrPurchase(
PurchaseNo PurchaseNo NOT NULL,
VendorName VendorName NOT NULL,
ProductId ProductId NOT NULL,
ProductName ProductName NOT NULL,
Price Price NOT NULL,
VendorId VendorId NOT NULL,
Description PurchaseDescription NOT NULL, TransactionDate PurchaseTransactionDate NOT NULL, PRIMARY KEY (PurchaseNo),
FOREIGN KEY VendorId REFERENCES MsVendor (VendorId) ON UPDATE CASCADE ON DELETE CASCADE,
• PurchaseRetur
Domain PurchaseReturId: Fixed length character string , length 12 Domain PurchaseNo: Fixed length character string , length 12 Domain TransactionDate: DateTime, format yyyy-mm-dd
Domain VendorName: Variable length character string , length 20 Domain ProductId: Fixed length character string , length 8
Domain ProductName: Variable length character string , length 10 Domain QTY : Integer
Domain Price: Decimal, length 10,2 PurchaseRetur(
PurchaseReturId PurchaseReturId NOT NULL,
VendorName VendorName NOT NULL,
ProductId ProductId NOT NULL,
ProductName ProductName NOT NULL,
PurchaseNo PurchaseNo NOT NULL,
TransactionDate PurchaseReturDate NOT NULL,
QTY Quantity NOT NULL,
Price Price NOT NULL,
PRIMARY KEY (PuchaseReturId),
FOREIGN KEY PurchaseNo REFERENCES TrPurchase (PurchaseNo) ON UPDATE CASCADE ON DELETE CASCADE, )
• SalesRetur
Domain SalesReturId: Fixed length character string , length 12 Domain SalesNo: Fixed length character string , length 12
Domain TransactionDate: DateTime, format yyyy-mm-dd Domaim QTY: Integer
Domain Price: Decimal, length 10,2
Domain FirstName: Variable length character string , length 15 Domain ProductId: Fixed length character string , length 8 Domain ProductName: Variable length character string , length 8 SalesRetur(
SalesReturId SalesReturId NOT NULL,
QTY Quantity NOT NULL,
Price Price NOT NULL,
FirstName CustomerFirstName NOT NULL,
ProductId ProductId NOT NULL,
ProductName ProductName NOT NULL,
SalesNo SalesNo NOT NULL,
TransactionDate SalesReturDate NOT NULL, PRIMARY KEY (SalesReturId),
FOREIGN KEY SalesNo REFERENCES TrSales (SalesNo) ON UPDATE CASCADE ON DELETE CASCADE,
)
• Payment
Domain PaymentNo: Fixed length character string , length 12 Domain BankName: Variable length character string , length 20 Domain BankAccountNo : Variable length character string, length 15 Domain Amount: Integer
Domain Status: Integer
Domain TransactionDate: Date, length 10, format yyyy-mm-dd Domain UserId: Fixed length character string , length 8
Payment(
PaymentNo PaymentNo NOT NULL,
UserId UserId NOT NULL,
BankName BankName NOT NULL,
Amount PaymentAmount NOT NULL,
SalesNo SalesNo NOT NULL,
BankAccountNo BankAccountNo NOT NULL, Status PaymentStatus NOT NULL, TransactionDate PaymentDate NOT NULL, PRIMARY KEY (PaymentNo),
FOREIGN KEY SalesNo REFERENCES TrSales (SalesId) ON UPDATE CASCADE ON DELETE CASCADE,
)
• TrSalesDetail
Domain SalesNo: Fixed length character string , length 12 Domain ProductId: Fixed length character string , length 8 Domain QTY: Integer
Domain Price: Decimal, length 10,2 TrSalesDetail(
SalesNo SalesNo NOT NULL,
Price Price NOT NULL,
ProductId ProductId NOT NULL,
QTY Quantity NOT NULL,
PRIMARY KEY (SalesNo, ProductId)
FOREIGN KEY SalesNo REFERENCES TrSales (SalesNo) ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY ProductId REFERENCES MsProduct (ProductId) ON UPDATE CASCADE ON DELETE CASCADE,
)
• TrPurchaseDetail
Domain PurchaseNo: Fixed length character string , length 12 Domain ProductId: Fixed length character string , length 8 Domain QTY: Integer
Domain Price: Decimal, length 10,2 TrPurchaseDetail(
PurchaseNo PurchaseNo NOT NULL,
Price Price NOT NULL,
ProductId ProductId NOT NULL,
QTY Quantity NOT NULL,
PRIMARY KEY (PurchaseNo, ProductId)
FOREIGN KEY PurchaseNo REFERENCES TrPurchase (PurchaseNo) ON UPDATE CASCADE ON DELETE CASCADE, FOREIGN KEY ProductId REFERENCES MsProduct (ProductlId) ON UPDATE CASCADE ON DELETE CASCADE,
)
• TrSalesReturDetail
Domain SalesReturId: Fixed length character string , length 12 Domain ProductId: Fixed length character string , length 8 Domain QTY: Integer
Domain Price: Decimal, length 10,2 TrSalesReturDetail(
SalesReturId SalesReturId NOT NULL,
Price Price NOT NULL,
ProductId ProductId NOT NULL,
QTY Quantity NOT NULL,
PRIMARY KEY (SalesReturId, ProductId)
FOREIGN KEY SalesReturId REFERENCES TrSalesRetur (SalesReturId) ON UPDATE CASCADE ON DELETE CASCADE, FOREIGN KEY ProductId REFERENCES MsProduct (ProductId) ON UPDATE CASCADE ON DELETE CASCADE,
)
• TrPurchaseReturDetail
Domain PurchaseReturId: Fixed length character string , length 12 Domain ProductId: Fixed length character string , length 8
Domain QTY: Integer
Domain Price: Decimal, length 10,2 TrPurchaseReturDetail(
PurchaseReturId PurchaseReturId NOT NULL,
ProductId ProductId NOT NULL,
QTY Quantity NOT NULL,
PRIMARY KEY (PurchaseReturId, ProductId)
FOREIGN KEY PurchaseReturId REFERENCES TrPurchaseRetur (PurchaseReturId) ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY ProductId REFERENCES MsProduct (ProductlId) ON UPDATE CASCADE ON DELETE CASCADE,
)
• CustomerPhone
Domain CustomerPhoneNo: variable length character string , length 15
Domain UserId: Fixed length character string , length 8 CustomerPhone(
CustomerPhoneNo CustomerPhoneNo NOT NULL,
UserId UserId NOT NULL,
PRIMARY KEY (CustomerPhoneNo)
FOREIGN KEY UserId REFERENCES MsCustomer (UserId) ON UPDATE CASCADE ON DELETE CASCADE,
)
• CustomerEmail
Domain CustomerEmailNo: Variable length character string , length 30
CustomerEmail(
CustomerEmailNo CustomerEmailNo NOT NULL,
UserId UserId NOT NULL,
PRIMARY KEY (CustomerEmailNo)
FOREIGN KEY UserId REFERENCES MsCustomer (UserId) ON UPDATE CASCADE ON DELETE CASCADE,
)
• VendorPhone
Domain VendorPhoneNo: Fixed length character string , length 15 Domain VendorId: Fixed length character string , length 8
VendorPhone(
VendorPhoneNo VendorPhoneNo NOT NULL,
VendorId VendorId NOT NULL,
PRIMARY KEY (VendorPhoneNo),
FOREIGN KEY VendorId REFERENCES MsVendor (VendorId) ON UPDATE CASCADE ON DELETE CASCADE,
)
• VendorEmail
Domain VendorEmailNo: Fixed length character string , length 30 Domain VendorId: Fixed length character string , length 8
VendorEmail(
VendorEmailNo VendorEmailNo NOT NULL,
VendorId VendorId NOT NULL,
FOREIGN KEY VendorId REFERENCES MsVendor (VendorId) ON UPDATE CASCADE ON DELETE CASCADE,
)
4.2.3.2 Desain Penyusunan dan Pemberian Index pada File
Tujuan dari langkah ini adalah untuk mempertimbangkan pengaturan atau penyusunan file yang optimal untuk disimpan dalam base relation dan indeks yang dibutuhkan untuk mencapai performa yang diinginkan.
• Analisis Transaksi
Tujuan dari langkah ini adalah untuk mengerti manfaat transaksi yang akan dijalankan di dalam basis data dan untuk menganalisis transaksi penting (Connolly dan Begg, 2010, p529).
Tabel 4.9 Cross-referencing transaction and relation Transaksi / Relasi 1 2 3 4 I R U D I R U D I R U D I R U D MsCustomer x x x MsEmployee x x x MsProduct x x x Testimonial x x x MsVendor TrSales TrSalesRetur TrPurchase TrPurchaseRetur Payment TrSalesDetail TrPurchaseDetail TrPurchaseReturDetail TrSalesReturDetail CustomerPhone VendorPhone CustomerEmail VendorEmail
I : Insert , R : Read , U : Update , D : Delete
Keterangan :
1. Menginput dan mengubah data Customer 2. Menginput dan mengubah data Employee 3. Menginput dan mengubah data Product 4. Menampilkan dan mengubah data Testimonial
Transaksi / Relasi 5 6 7 8 I R U D I R U D I R U D I R U D MsCustomer MsEmployee MsProduct Testimonial MsVendor x x x TrSales x x x TrSalesRetur x x x TrPurchase x x x TrPurchaseRetur Payment TrSalesDetail TrPurchaseDetail TrSalesReturDetail TrPurchaseReturDetail CustomerPhone VendorPhone CustomerEmail VendorEmail
I : Insert , R : Read , U : Update , D : Delete
Keterangan :
5. Menginput dan mengubah data Vendor 6. Menginput dan mengubah data Sales 7. Menginput dan mengubah data SalesRetur 8. Menginput dan mengubah data Purchase
Transaksi / Relasi 9 10 11 12 I R U D I R U D I R U D I R U D MsCustomer MsEmployee MsProduct Testimonial MsVendor TrSales TrSalesRetur TrPurchase TrPurchaseRetur x x x Payment x x x TrSalesDetail x x x TrPurchaseDetail x x x TrSalesReturDetail TrPurchaseReturDetail CustomerPhone VendorPhone CustomerEmail VendorEmail
I : Insert , R : Read , U : Update , D : Delete Keterangan :
9. Menginput dan mengubah data PurchaseRetur. 10. Menginput dan menampilkan data Payment. 11. Menginput dan mengubah data SalesDetail. 12. Menginput dan mengubah data PurchaseDetail.
Transaksi / Relasi 13 14 15 16 I R U D I R U D I R U D I R U D MsCustomer MsEmployee MsProduct Testimonial MsVendor TrSales TrSalesRetur TrPurchase TrPurchaseRetur Payment TrSalesDetail TrPurchaseDetail TrSalesReturDetail TrPurchaseReturDetail CustomerPhone x x x VendorPhone x x x CustomerEmail x x x VendorEmail x x x
I : Insert , R : Read , U : Update , D : Delete
Keterangan :
13. Menginput dan mengubah data CustomerPhone. 14. Menginput dan mengubah data VendorPhone. 15. Menginput dan mengubah data CustomerEmail. 16. Menginput dan mengubah data VendorEmail.
Transaksi / Relasi 17 18 I R U D I R U D MsCustomer MsEmployee MsProduct Testimonial MsVendor TrSales TrSalesRetur TrPurchase TrPurchaseRetur Payment TrSalesDetail TrPurchaseDetail TrSalesReturDetail x x x TrPurchaseReturDetail x x x CustomerPhone VendorPhone CustomerEmail VendorEmail
17. Menginput dan mengubah data SalesReturDetail. 18. Menginput dan mengubah data PurchaseReturDetail.
• Memilih Index
Tujuan dari langkah ini adalah untuk mempertimbangkan apakah penambahan indeks akan membantu peningkatan performa dari system (Connolly dan Begg, 2010, p535).
Tabel 4.10 Indeks
Tabel Entitas Nama Indeks Key Indeks Keterangan Indeks
MsCustomer IdxCustomer UserId Berdasarkan
UserId
MsEmployee IdxEmpoyee EmployeeId Berdasarkan
EmployeeId
MsProduct IdxProduct ProductId Berdasarkan
ProductId Testimonial IdxTestimonial TestimonialId Berdasarkan
TestimonialI d
MsVendor IdxVendor VendorId Berdasarkan
VendorId
TrSales IdxSales SalesNo Berdasarkan
SalesNo
TrPurchase IdxPurchase PurchaseNo Berdasarkan
PurchaseNo PurchaseRetur IdxPurchaseRetur PurchaseReturId Berdasarkan
PurchaseRet urId
SalesRetur IdxSalesRetur SalesReturId Berdasarkan SalesReturId
Payment IdxPayment PaymentNo Berdasarkan
PaymentNo TrSalesDetail IdxSalesDetail SalesNo
ProductId
Berdasarkan SalesNo dan ProductId TrPurchaseDatail IdxPurchaseReturDetail PurchaseNo
ProductId
Berdasarkan PurchaseNo dan
ProductId TrSalesReturDetail IdxSalesReturDetail SalesReturId Berdasarkan
ProductId SalesReturId dan
ProductId TrPurchaseReturDatail IdxPurchaseReturDetail PurchaseReturId
ProductId
Berdasarkan PurchaseRet urId dan ProductId CustomerPhone IdxCustomerPhone CustomerPhoneNo Berdasarkan
CustomerPh oneNo VendorPhone IdxVendorPhone VendorPhoneNo Berdasarkan
VendorPhon eNo
CutomerEmail IdxCustomerEmail CustomerEmailNo Berdasarkan CustomerE mailNo VendorEmail IdxVendorEmail VendorEmailNo Berdasarkan
VendorEmai lNo
• Memperkirakan Ukuran Kapasitas Disk yang Dibutuhkan Tujuan dari langkah ini adalah untuk memperkirakan kapasitas disk yang akan dibutuhkan oleh database (Connolly dan Begg, 2010, p541).
Tabel 4.11 Disk Space
Table/Entity Attributes Data type Size in
bytes
MsCustomer UserId Char 8
Password Varchar 10
LastName Varchar 15 BankAccountNo Varchar 15 Address Varchar 100 Gender Integer 1 Total :164
MsProduct ProductId Char 8
ProductName Varchar 10
Price Decimal 15
Stock Integer 4
Total :37
TrSales SalesNo Char 12
UserId Char 8 Status Integer 1 RequestedDate DateTime 12 PaymentStatus Integer 1 QTY Integer 4 TransactionDate DateTime 12 ProductId Char 8 ProductName Varchar 10 Price Decimal 15 FirstName Varchar 15 Total :98
TrPurchase PurchaseNo Char 12
VendorId Char 10 Description Varchar 50 TransactionDate DateTime 12 QTY Integer 4 VendorName Varchar 20 ProductId Char 8 ProductName Varchar 10
Price Decimal 15 Total :141
MsVendor VendorId Char 8
VendorName Varchar 20
Address Varchar 100
Total :128
PurchaseRetur PurchaseReturId Char 12
PurchaseNo Char 12 TransactionDate DateTime 12 QTY Integer 4 Price Decimal 15 VendorName Varchar 20 ProductId Char 8 ProductName Vaerchar 10 Total :93
SalesRetur SalesReturId Char 12
SalesNo Char 12 TransactionDate DateTime 12 QTY Integer 4 Price Decimal 15 FirstName Varchar 15 ProductId Char 8 ProductName Vaerchar 10 Total :88
Testimonial TestimonialId Char 8
UserId Char 8
EmployeeId Char 8
Comment Varchar 100
Status Integer 1
Total :140
MsEmployee EmployeeId Char 8
EmployeeName Varchar 10
Status Integer 1
Total :19
Payment PaymentNo Char 12
SalesNo Char 10 BankName Varchar 20 BankAccountNo Varchar 15 Amount Integer 10 Status Integer 1 UserId Char 8 TransactionDate DateTime 12 Total :88
TrSalesDetail SalesNo Char 12
ProductId Char 8
Price Decimal 15
QTY Integer 4
Total :39
TrPurchaseDetail PurchaseNo Char 12
ProductId Char 8
Price Decimal 15
QTY Integer 4
Total :39
TrSalesReturDetail SalesReturId Char 12
ProductId Char 8
Price Decimal 15