59
PERANCANGAN DAN IMPLEMENTASI 4.1 Perancangan Basis Data
4.1.1 Perancangan Konseptual
Dalam perancangan konseptual (Connolly dan Begg, 2010) terdiri dari Sembilan tahapan perancangan, yaitu :
1. Mengidentifikasi tipe entitas
2. Mengidentifikasi tipe relasi antar entitas
3. Mengidentifikasi dan mengasosiasi atribut dengan entitas 4. Menentukan domain atribut
5. Mengidentifikasi candidate key dan primary key setiap entitas 6. Penggunaan enhanced modeling concept
7. Memeriksa redudansi
8. Validasi dan pemeriksaan kembali model konseptual 9. Peninjauan model data konseptual
4.1.1.1 Mengidentifikasi Tipe Etitas
Tabel 4.1 Identifikasi Tipe Relitas
NO NAMA
ENTITAS DESKRIPSI ALIAS Kejadian
1 Karyawan Entitas yang
berisi keterangan data karyawan yang bekerja Employee Mendata employee yang bekerja pada bagiannya masing -masing
2 Pelangan Entitas yang
berisi
keterangan data pelanggan
Customer Mendata customer yang melakukan pemesanan dan pembelian barang
3 Pemasok Entitas yang berisi keterangan data pemasok yang dimiliki perusahaan
Supplier Mendata setiap pemasok yang memasok barang satu atau lebih dari satu kali
4 Produk Entitas yang
berisi informasi daftar produk pemasok yang dijual oleh perusahaan
Product Mendata setiap daftar produk dari tiap-tiap pemasok
5 Quotation_order Entitas yang berisi informasi daftar pesanan pelanggan
Quo Mendata setiap
Quotation_order yang dibuat untuk satu atau lebih produk yang dipesan pelanggan 6 Sales_order Entitas yang
berisi informasi transaksi pembelian pelanggan SO Mendata Sales_order yang dibuat berdasarkan Quotation_order
7 Penjualan Entitas yang
berisi informasi lengkap penjualan yang terjadi di PT.Interni Asia JL Menyimpan data penjualan yang terjadi di PT. Interni Asia
8 Purchase_order Entitas yang berisi informasi transaksi pembelian ke PO Mendata setiap Purchase_order berisi jumlah produk yang
supplier dipesan dari Pemasok
9 Pembelian Entitas yang
berisi informasi lengkap pembelian yang terjadi di PT.Interni Asia BL Menyimpan data pembelian yang terjadi di PT. Interni Asia
10 Barang_masuk Entitas yang berisi informasi barang yang masuk ke perusahaan Barang masuk Mendata setiap barang yang masuk berdasarkan proses pembelian
11 Barang_keluar Entitas yang berisi informasi produk yang keluar karna adanya penjualan barang keluar Mendata setiap barang yang keluar berdasarkan proses penjualan
12 Stok_gudang Entitas yang berisi informasi berapa banyak jumlah barang yang ada di gudang
Stokgudang Mendata barang atau produk yang ada di gudang
4.1.1.2 Mengidentifikasi Tipe Relasi Antar Entitas
Identifikasi tipe-tipe hubungan pada PT. Inteni Asia dapat dilihat pada table dibawah ini :
Tabel 4.2 Identifikasi Tipe Relasi Antar Entitas
Nama Entitas Multiplicity Hubungan Nama Entitas Multiplicity
Karyawan 1..1 Membuat Quotation_orde
r 1..* 1..1 Membuat Sales_order 1..* 1..1 Melakukan Penjualan 1..* 1..1 Membuat Purchase_order 1..* 1..1 Melakukan Pembelian 1..* 1..1 Melakukan BarangMasuk 1..* 1..1 Melakukan BarangKeluar 1..*
Pemasok 1..1 Mempunyai Produk 1..*
Quotation_orde r
1..* Melibatkan Produk 1..*
1..* Melibatkan Pelanggan 1..1
1..1 Mendasari SalesOrder 1..1
Sales_order 1..1 Mendasari Penjualan 1..1
1..1 Mendasari PurchaseOrder 1..*
Penjualan 1..1 Mendasari Barang_keluar 1..*
Barang_keluar 1..* Melibatkan Quotation_orde
r
1..1
Purcase_order 1..1 Mendasari Pembelian 1..1
Pembelian 1..1 Mendasari BarangMasuk 1..*
Barang_masuk
1..* Melibatkan Quotation_orde
r
1..1
4.1.1.3 Mengidentifikasi dan Mengasiosasi Atribut dangan Entitas
Tabel 4.3 Tabel Identifikasi Atribut dengan Entitas
Pelanggan
Atribut Deskripsi Tipe Data dan Nulls Multi-
valued Panjang
Id_pelanggan Kode pelanggan Int(10) Tidak Tidak
Nama_pelanggan Nama pelanggan Varchar(100) Tidak Tidak
Alamat_pelanggan Alamat
pelanggan
Text Tidak Tidak
Kota Nama kota Varchar(100) Tidak Tidak
Negara Nama negara Varchar(30) Tidak Tidak
Propinsi Propinsi Varchar(100) Tidak Tidak
Kodepos_pelanggan Kode pelanggan Varchar(7) Tidak Tidak
Notelp_pelanggan Telp pelanggan Varchar(15) Ya Tidak
Nohp_pelanggan HP pelanggan Varchar(15) Tidak Tidak
Nofak_pelanggan Faks pelanggan Varchar(15) Ya Tidak
Email_pelanggan Email pelanggan Varchar(60) Ya Tidak
Karyawan
Atribut Deskripsi Tipe Data dan Nulls Multi-
valued Panjang
Id_karyawan Kode karyawan Int(10) Tidak Tidak
Nama_karyawan Nama karyawan Varchar(100) Tidak Tidak
Alamat_karyawan Alamat karyawan Text Tidak Tidak
Notelp_karyawan Telp karyawan Varchar(15) Tidak Tidak
Nohp_karyawan HP karyawan Varchar(15) Tidak Tidak
username nama username Varchar(30) Tidak Tidak
Password Password Varchar(255) Tidak Tidak
Jabatan Jabatan Varchar(50) Tidak Tidak
Id_hak kode hak akses Int(10) Tidak Tidak
Pemasok
Atribut Deskripsi Tipe Data dan Nulls Multi-
valued Panjang
Id_pemasok Kode pemasok Int(10) Tidak Tidak
Nama_pemasok Nama pemasok Varchar(50) Tidak Tidak
Alamat_pemasok Alamat pemasok Text Tidak Tidak
Kota Nama kota Varchar(100) Tidak Tidak
Negara Nama negara Varchar(30) Tidak Tidak
Propinsi Propinsi Varchar(100) Tidak Tidak
Notelp_pemasok Telp pemasok Varchar(15) Tidak Tidak
Nofax_pemasok Faks pemasok Varchar(15) Tidak Tidak
Email_pemasok Email emasok Varchar(50) Ya Tidak
Produk
Atribut Deskripsi Tipe Data dan Nulls Multi-
valued Panjang
Id_produk Kode barang Int(10) Tidak Tidak
Nama_produk Nama barang Varchar(200) Tidak Tidak
Pola Pola produk Varchar(150) Tidak Tidak
Harga_idr Harga idr barang
dari pemasok
Decimal(10,0) Tidak Tidak
Harga_usd Harga usd barang
dari pemasok
Decimal(10,0) Tidak Tidak
Gambar Gambar produk Varchar(100) Tidak Tidak
Id_pemasok Kode pemasol Int(10) Tidak Tidak
Quotation Order
Atribut Deskripsi Tipe Data dan Nulls Multi-
valued Panjang
Id_Quo Kode/No
quotation order
Int(10) Tidak Tidak
No_quo Nomer Quotation VarChar(30) Tidak Tidak
IDKaryawan Kode karyawan Int(10) Tidak Tidak
IDPelanggan Kode pelanggan Int(10) Tidak Tidak
IDProduk Kode produk Int(10) Tidak Tidak
Nama_proyek Nama proyek Varchar(30) Tidak Tidak
Qty Jumlah pembelian produk
Int(10) Tidak Tidak
Harga_indo_before Harga jual dalam rupiah
Decimal(10,0) Tidak Tidak
Harga_dolar_before Harga jual dalam dolar
Decimal(10,0) Tidak Tidak
Harga_indo_after Harga jual dalam rupiah
Decimal(10,0) Tidak Tidak
Harga_dolar_after Harga jual dalam dolar
Decimal(10,0) Tidak Tidak
Disc Discount Int(10) Ya Tidak
QuotationMemo Memo/deskripsi
quotation
Text Tidak Tidak
Sales Order
Atribut Deskripsi Tipe Data dan Nulls Multi-
valued Panjang
Id_so Kodesales order Int(10) Tidak Tidak
No_so Nomer sales
order
Varchar(30) Tidak Tidak
Tanggal_so Tanggal sales
order
Date Tidak Tidak
Deadline_so Tanggal sales
order jatuh tempo
Date Tidak Tidak
Memo_so Memo/deskripsi
sales order
Text Tidak Tidak
Payment_option Jenis pembayaran Varchar(10) Tidak Tidak
Cheque_no Nomer cek Varchar(40) Ya Tidak
Id_karyawan Kode karyawan Int(10) Tidak Tidak
Penjualan
Atribut Deskripsi Tipe Data dan Nulls Multi-
valued Panjang
Id_penjualan Kode penjualan Int(10) Tidak Tidak
No_penjualan Nomer penjualan Varchar(15) Tidak Tidak
Tanggal_pemjualan Tanggal penjualan
Datetime Tidak Tidak
Id_so Kode sales order Int(10) Tidak Tidak
Id_karyawan Kode karyawan Int(10) Tidak Tidak
Harga_penjualan Jumlah harga penjualan
Varchar(6) Tidak Tidak
Purchase Order
Atribut Deskripsi Tipe Data dan Nulls Multi-
valued Panjang
Id_po Kode purchase
order
Int(10) Tidak Tidak
No_po Nomer purchase
order
Varchar(20) Tidak Tidak
Id_so Tanggal
pemesanan pembelian
Int(10) Tidak Tidak
Id_pemasok Kode pemasok Int(10) Tidak Tidak
Tanggal_po Tanggal purchase
order
Datetime Tidak Tidak
Tanggal_deadline Tanggal purchase order jatuh tempo
Datetime Ya Tidak
Id_karyawan Kode karyawan Int(10) Tidak Tidak
Term Term Varchar(20) Ya Tidak
Pembelian
Atribut Deskripsi Tipe Data dan Nulls Multi-
valued Panjang
No_pembelian Nomer pembelian
Varchar(15) Tidak Tidak
Tanggal_pembelian Tanggal pembelian
Date Tidak Tidak
Id_po Kode puschase
order
Int(10) Tidak Tidak
Harga_pembelian Jumlah harga penbelian
Varchar(20) Tidak Tidak
Barang Masuk
Atribut Deskripsi Tipe Data dan Nulls Multi-
valued Panjang
Id_barang_masuk Kode barang
masuk
Int(10) Tidak Tidak
No_barang_masuk Nomor barang
masuk
Varchar(15) Tidak Tidak
Id_pembelian Kode pembelian Int(10) Tidak Tidak
Id_karyawan Kode karyawan Int(10) Tidak Tidak
Id_quo Kode quotation Int(10) Tidak Tidak
Tanggal_barang_masuk Tanggal barang masuk
Date Tidak Tidak
Qty_barang_masuk Jumlah barang masuk
Int(10) Tidak Tidak
Barang Keluar
Atribut Deskripsi Tipe Data dan Nulls Multi-
valued Panjang
Id_barang_keluar Kode barang masuk
Int(10) Tidak Tidak
No_barang_keluar Nomor barang masuk
Varchar(15) Tidak Tidak
Id_penjualan Kode penjualan Int(10) Tidak Tidak
Id_karyawan Kode karyawan Int(10) Tidak Tidak
Tanggal_barang_keluar Tanggal barang masuk
Date Tidak Tidak
Quantity_barang_keluar Jumlah barang masuk
Int(10) Tidak Tidak
Stok Gudang
Atribut Deskripsi Tipe Data dan Nulls Multi-
valued Panjang
Id_produk Kode produk Int(10) Tidak Tidak
Id_stok_gudang Kode stok
gudang
Int(10) Tidak Tidak
Qty_produk Jumlah produk Int(10) Tidak Tidak
Tanggal Tanggal
penjahitan
Date Tidak Tidak
Hak akses
Atribut
Deskripsi Tipe Data dan Nulls Multi- valued Panjang
Id_hak kode hak akses Int(10) Tidak Tidak
Hak_user Hak akses user Varchar(20) Tidak Tidak
4.1.1.4 Menetukan Domain Atribut
Tabel 4.4 Identifikasi Domain Atribut
Produk Atribut Domain Atribut
Id_produk Int(10), AUTO INCREMENT
Nama_produk Varchar(200)
Pola Varchar(150)
Harga_idr Int(20)
Harga_usd Int(20)
Gambar Varchar(100)
Pelanggan Atribut Domain Atribut
Id_pelanggan Int(10), AUTO INCREMENT
Nama_pelanggan Varchar(100) Alamat_pelanggan Text Kota Varchar(100) Negara Varchar(30) Propinsi Varchar(100) Kodepos_pelanggan Varchar(7) Notelp_pelanggan Varchar(15) Nohp_pelanggan Varchar(15) Nofak_pelanggan Varchar(15) Email_pelanggan Varchar(60)
Karyawan Atribut Domain Atribut
Id_karyawan Int(10), AUTO INCREMENT
Nama_karyawan Varchar(100) Alamat_karyawan Text Notelp_karyawan Varchar(15) Nohp_karyawan Varchar(15) username Varchar(30) Password Varchar(255) Jabatan Varchar(50)
Id_hak Int(10), AUTO INCREMENT
Pemasok Atribut Domain Atribut
Id_pemasok Int(10), AUTO INCREMENT
Nama_pemasok Varchar(50) Alamat_pemasok Varchar(200) Kota Varchar(100) Negara Varchar(30) Propinsi Varchar(100) Notelp_pemasok Varchar(15) Nofax_pemasok Varchar(15)
Email_pemasok Varchar(50) Quotation
Order
Atribut Domain Atribut
Id_Quo Int(10), AUTO INCREMENT
No_quo VarChar(30), format :
QUO-[0- 9][0-9][0-9][0-9][0-9][0-9][0-9][0-9], (Generate By Sistem)
IDKaryawan Int(10), AUTO INCREMENT
IDPelanggan Int(10), AUTO INCREMENT
IDProduk Int(10), AUTO INCREMENT
Nama_proyek Varchar(30) Tanggal_quo Date Qty Int(10) Harga_indo_before Varchar(20) Harga_dolar_before Varchar(20) Harga_indo_after Varchar(20) Harga_dolar_after Varchar(20) Disc Int(10) QuotationMemo Varchar(300)
Sales Order Atribut Domain Atribut
Id_so Int(10), AUTO INCREMENT
No_so Varchar(30), format :
SO-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9], (Generate By Sistem)
Tanggal_so Date
Deadline_so Date
Memo_so Varchar(200)
Payment_option Varchar(10), option
Cheque_no Varchar(40)
Id_karyawan Int(10), AUTO INCREMENT
Id_Quo Int(10), AUTO INCREMENT
Id_penjualan Int(10), AUTO INCREMENT
No_penjualan Varchar(15), format : JU-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9], (Generate By Sistem)
Tanggal_pemjualan Datetime
Id_so Int(10), AUTO INCREMENT
Id_karyawan Int(10), AUTO INCREMENT
Harga_penjualan Varchar(6)
Purchase Order
Atribut Domain Atribut
Id_po Int(10), AUTO INCREMENT
No_po Varchar(20), format :
PO-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9], (Generate By Sistem)
Id_so Int(10), AUTO INCREMENT
Id_pemasok Int(10), AUTO INCREMENT
Tanggal_po Datetime
Tanggal_deadline Datetime
Id_karyawan Int(10), AUTO INCREMENT
Term Varchar(20)
Pembelian Atribut Domain Atribut
Id_pembelian Int(10), AUTO INCREMENT
No_pembelian Varchar(15), format : BE-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9], (Generate By Sistem)
Tanggal_pembelian Date
Id_po Int(10), AUTO INCREMENT
Harga_pembelian Varchar(20)
Barang Masuk Atribut Domain Atribut
Id_barang_masuk Int(10), AUTO INCREMENT
No_barang_masuk Varchar(15), format : BM-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9],
(Generate By Sistem)
Id_pembelian Int(10), AUTO INCREMENT
Id_karyawan Int(10), AUTO INCREMENT
Id_quo Int(10), AUTO INCREMENT
Tanggal_barang_masuk Date
Quantity_barang_masuk Int(10)
Barang Keluar Atribut Domain Atribut
Id_barang_keluar Int(10), AUTO INCREMENT
No_barang_keluar Varchar(15), format : BK-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9], (Generate By Sistem)
Id_penjualan Int(10), AUTO INCREMENT
Id_karyawan Int(10), AUTO INCREMENT
Id_quo Int(10), AUTO INCREMENT
Tanggal_barang_keluar Date
Quantity_barang_keluar Int(10)
Stok Gudang Atribut Domain Atribut
Id_produk Int(10), AUTO INCREMENT
Id_stok_gudang Int(10), AUTO INCREMENT
Qty_produk Int(10)
Tanggal Date
Hak akses Atribut Domain Atribut
Id_hak Int(10), AUTO INCREMENT
Hak_user Varchar(20)
4.1.1.5 Menentukan Candidate key dan Primary Key tiap Entitas Tabel 4.5 Identifikasi Candidate key dan Primary Key
Nama Entitas Candidate Key Primary Key
Nama_pelanggan
Notelp_pelanggan
Nohp_pelanggan
Email_pelanggan
Karyawan Id_karyawan IDKaryawan
Nama_karyawan
Notelp_karyawan
Nohp_karyawan
Email_karyawan
Pemasok Id_pemasok IDPemasok
Nama_pemasok
Notelp_pemasok
Nohp_pemasok
Email_pemasok
Produk Id_produk Id_produk
Pola
No_quo
SalesOrder Id_so Id_so
No_so
Penjualan Id_penjualan Id_penjualan
No_penjualan
PurchaseOrder Id_po Id_po
No_po
Pembelian Id_pembelian Id_pembelian
No_pembelian
BarangMasuk Id_barang_masuk Id_barang_masuk
No_barang_masuk
BarangKeluar Id_barang_keluar Id_barang_keluar
No_barang_keluar
Gambar 4.2 ERD Konseptual dengan Primary Key
4.1.1.6 Memvalidasi Model Konseptual Terhadap Transaksi User Lankah kali ini bertujuan untuk menjamin bahwa model konseptual local yang di buat dapat mendukung transaksi yang dibutuhkan oleh pengguna.
Ada dua cara pendekatan yang dapat diperiksa, yaitu : 1. Mendeskripsikan Transaksi
a. Membuat quotation_order yang dilakukan oleh karyawan b. Membuat sales_order yang dilakukan oleh karyawan c. Membuat purchase_order yang dulakukan oleh karyawan d. Memasukan informasi data produk yang dimiliki
pemasok
e. Memasukan data pelanggan yang dilibatkan dalam pembuatan quotation_order
f. Memasukan informasi produk yang dilibatkan dalam pembuatan quotation_order
g. Memasukan informasi ke dalam sales_order berdasarkan data yang ada dalam quotation order
h. Memasukan informasi ke dalam purchase_order berdasarkan data yang ada dalam sales order
i. Memasukan informasi ke dalam pembelian berdasarkan data yang ada dalam purchase_order
j. Memasukan informasi ke dalam barang_masuk berdasarkan data yang ada dalam pembelian
k. Memasukan informasi pemasok yang dilibatkan dalam pembuatan purchase_order
l. Melakukan pencatatan barang_masuk yang dilakukan oleh keryawan
m.Menelurusi informasi yang dimiliki quotation_order untuk barang_masuk
n. Melakukan pencatatan barang_keluar yang dilakukan oleh keryawan
o. Memasukan informasi ke dalam barang_keluar berdasarkan data yang ada dalam penjualan
p. Menelurusi informasi yang dimiliki quotation_order untuk barang_keluar
q. Menampilkan dan mengedit detail dari pemasok r. Menampilkan dan mengedit detail dari pelanggan s. Menampilkan dan mengedit detail dari produk t. Menampilkan dan mengedit detail dari karyawan
2. Jalur-jalur transaksi
Gambar 4.3 ERD Konseptual dengan Jalur-jalur Transaksi 4.1.2 Perancangan Logical
Dalam perancangan konseptual (Connolly dan Begg, 2010) terdiri dari Sembilan tahapan perancangan, yaitu :
1. Menurunkan relasi untuk logical data model 2. Mevalidasi relasi menggunakan normalisasi 3. Memvalidasi relasi terhadap transaksi user 4. Memeriksa batasan- batasan integritas 5. Reviewlogical data model dengan user
6. Menggabungkan logical data model kedalam model global (optional)
7. Memriksa perkembangan di masa mendatang
4.1.2.1 Menghilangkan fitur yang tidak cocok dengan model relational
1. Menghilangkan tipe hubungan binary many-to-many (*:*)
Menghilangkan relationship yang mengandung
many-to-many (*:*) dilakukan dengan memecah dan
mengidentifikasikan sebuah entitas baru dan mengganti hubungan antar dua entitas tersebuat terhubung dengan entitas baru dengan relasi one-to-many (1:*)
a. Relasi many-to-many antara produk dengan quotation_order menghasilkan entitas baru yang bernama detil_quo
Gambar 4.4 Hubungan Produk dengan Quotation_order 2. Menghilangkan tipe hubungan rekursif many-to-many
Dalam model data yang dibuat tidak terdapat tipe hubungan rekursif many-to-many.
3. Menghilangkan tipe hubungan kompleks
Dalam model data yang dibuat tidak terdapat tipe hubungan kompleks
4. Menghiangkan multi-valuee attribute
Dalam model data yang dibuat tidak terdapat tipe hubungan kompleks.
4.1.2.2 Menurunkan Relasi Untuk Model Data Logikal
langkah ini bertujuan untuk membuat relasi untuk model data logikal yang menghadirkan entitas, hubungkan, dan atribut yang telah teridentifikasi. Pembagian relasi dari sebuah model data diantaranya:
1. Tipe entitas kuat
a.Pelanggan (Id_pelanggan ,Nama_pelanggan, Alamat_pelanggan, Kota, Negara, Propinsi,
Kodepos_pelanggan, Notelp_pelanggan,
Nohp_pelanggan, Nofak_pelanggan, Email_pelanggan) Primary key Id_pelanggan
b. Karyawan (Id_karyawan, Nama_karyawan, Alamat_karyawan, Notelp_karyawan, Nohp_karyawan, username, Password, Jabatan, Id_hak
Primary key Id_karyawan
c.Pemasok (Id_pemasok, Nama_pemasok, Alamat_pemasok, Kota, Negara, Propinsi, Notelp_pemasok, Nofax_pemasok, Email_pemasok) Primary key Id_pemasok
d. Produk (Id_produk, Nama_produk, Pola, Harga_idr, Harga_usd, Gambar, ID_Pemasok)
Primary key Id_produk Foreign key Id_pemasok
e.Quotation order (Id_Quo, No_quo, ID_Karyawan,
ID_Pelanggan, ID_Produk, Nama_proyek, Tanggal_quo, Qty, Harga_indo_before, Harga_dolar_before,
Harga_indo_after, Harga_dolar_after, Disc, QuotationMemo
Primary key Id_quo Foreign key Id_karyawan Foreign key Id_pelanggan Foreign key Id_produk
f.Sales order (Id_so, No_so, Tanggal_so, Deadline_so,
Memo_so, Payment_option, Cheque_no, Id_karyawan, Id_Quo)
Primary key Id_so Foreign key Id_quo Foreign key Id_kryawan
g. Purchase order (Id_po, No_po, Id_so, Id_pemasok,
Tanggal_po, Tanggal_deadline, Id_karyawan, Term) Primary key Id_po
Foreign key Id_so Foreign key Id_pemasok Foreign key Id_Karyawan
h. Penjualan (Id_penjualan, No_penjualan,
Tanggal_pemjualan, Id_so, Id_karyawan,
Harga_penjualan)
Primary key Id_penjualan Foreign key Id_so
i. Pembelian (Id_pembelian, No_pembelian, Tanggal_pembelian, Id_po, Harga_pembelian)
Primary key Id_pembelian Foreign key Id_po
j. Barang masuk (Id_barang_masuk, No_barang_masuk,
Id_pembelian, Id_karyawan, Id_quo,
Tanggal_barang_masuk, Quantity_barang_masuk) Primary key Id_barang_masuk
Foreign key Id_pembelian Foreign key Id_karyawan Foreign key Id_quo
k. Barang Keluar (Id_barang_keluar, No_barang_keluar,
Id_penjualan, Id_karyawan, Id_quo,
Tanggal_barang_keluar, Quantity_barang_keluar) Primary key Id_barang_keluar
Foreign key Id_penjualan Foreign key Id_quo Foreign key Id_karyawan
l. Stok gudang (Id_produk, Id_stok_gudang, Qty_produk, Tanggal)
Primary key Id_stok_gudang Foreign key Id_stok_gudang m.hak akses (Id_hak, Hak_user)
Primary key Id_hak
n. Detil quotation (Id_detil_quo, Qty, Harga_indo_before, Harga_indo_after,
Harga_dolar_before, Harga_dolar_after, disc, Id_quo, Id_produk )
Primary key Id_detil_quo Foreign key Id_quo Foreign key Id_produk 2. Tipe Entitas Lemah
Sampai saat ini belum ditemukan adanya entitas yang lemah
3. Mengidentifikasi tipe relasi binary one-to-many (1:*) Setiap hubungan binary one-to-many (1:*), entitas pada sisi satu dari hubungan itu disebut sebagai entitas parent sedangkan entitas pada sisi banyak disebut entitas child. Untuk mewakili hubungan ini, diletakan salinan dari primary key pada entitas parent ke dalam relasi yang mewakili entitas child sebagai foreign key.
a. Pelanggan dengan quotation_order
Gambar 4.6 Hubungan (1:*) Pelanggan dengan Quotation_order b. Karyawan dengan quotation_order
Gambar 4.7 Hubungan (1:*) Karyawan dengan Quotation_order c. Karyawan dengan sales_order
Gambar 4.8 Hubungan (1:*) Karyawan dengan Sales_order d. Karyawan dengan purchase_order
Gambar 4.9 Hubungan (1:*) Karyawan dengan Purchase_order e. Pemasok dengan purchase_order
Gambar 4.10 Hubungan (1:*) Pemasok dengan Purchase_order f. Pembelian dengan barang_masuk
Gambar 4.11 Hubungan (1:*) Pembelian dengan Barang_masuk g. Karyawan dengan penjualan
h. Sales_order dengan purchase_order
Gambar 4.13 Hubungan (1:*) Purchase_order dengan Sales_order
i. Quotation_order dengan barang_keluar
Gambar 4.15 Hubungan (1:*) Quotation_order dengan Barang_Keluar
j. Stok_gudang dengan produk
Gambar 4.16 Hubungan (1:*) Stok_gudang dengan Produk
k. Quotation_order dengan barang_masuk
Gambar 4.17 Hubungan (1:*) Quotation_order dengan Barang_masuk
l. Karyawan dengan barang_masuk
Gambar 4.18 Hubungan (1:*) Karyawan dengan Barang_masuk m. Karyawan dengan barang_keluar
Gambar 4.19 Hubungan (1:*) Karyawan dengan Barang_keluar n. Pemasok dengan produk
Gambar 4.20 Hubungan (1:*) Karyawan dengan Barang_keluar 4. Mengidentifikasi tipe relasi binary one-to-one (1:1)
a. Quotation_order dengan sales_order
b. Sales_order dengan penjulan
Gambar 4.22 Hubungan (1:1) Sales_order dengan Penjualan
c. Purchase_order dengan pembelian
Gambar 4.23 Hubungan (1:1) Purchase_order dengan pembelian d. Penjualan dengan barang_keluar
Gambar 4.24 Hubungan (1:1) Penjualan dengan Barang_keluar 5. Mengidentifikasi tipe relasi binary many-to-many (*:*)
a. Produk dengan quotation_order
4.1.2.3 Memvalidasi Relasi Menggunakan Normalisasi
Dapat dilihat proses normalisasi antar entitas yang terjadi sebagai berikut :
1. Pelanggan UNF
Pelanggan (@Id_pelanggan ,Nama_pelanggan,
Alamat_pelanggan, kota, Kodepos_pelanggan, Notelp_pelanggan, Nohp_pelanggan, Nofak_pelanggan, Email_pelanggan)
1NF
Pelanggan (@Id_pelanggan ,Nama_pelanggan,
Alamat_pelanggan, kota, Kodepos_pelanggan, Notelp_pelanggan, Nohp_pelanggan, Nofak_pelanggan, Email_pelanggan)
2NF
Pelanggan (@Id_pelanggan ,Nama_pelanggan,
Alamat_pelanggan, Kodepos_pelanggan,
Notelp_pelanggan, Nohp_pelanggan, Nofak_pelanggan, Email_pelanggan, Id_kota)
kota (@Id_kota, Nama_kota, Negara, provinsi) 3NF
Pelanggan (@Id_pelanggan ,Nama_pelanggan, Alamat_pelanggan, id_kota, Kodepos_pelanggan, Notelp_pelanggan, Nohp_pelanggan, Nofak_pelanggan, Email_pelanggan, Id_kota)
Kota (@Id_kota, Nama_kota, Negara, Id_provinsi) Provinsi (@Id_provinsi, Nama_provinsi)
2. Karyawan UNF
Karyawan (@Id_karyawan, Nama_karyawan, Alamat_karyawan, Notelp_karyawan, Nohp_karyawan, username, Password, Jabatan, Hak)
1NF
Karyawan (@Id_karyawan, Nama_karyawan,
Alamat_karyawan, Notelp_karyawan, Nohp_karyawan, username, Password, Jabatan, Hak)
2NF
Karyawan (@Id_karyawan, Nama_karyawan, Alamat_karyawan, Notelp_karyawan, Nohp_karyawan, username, Password, Id_jabatan, Hak)
Jabatan(@Id_jabatan, Nama_jabatan) 3NF
Karyawan (@Id_karyawan, Nama_karyawan, Alamat_karyawan, Notelp_karyawan, Nohp_karyawan, username, Password, Id_jabatan, Id_hak)
Jabatan (@Id_jabatan, Nama_jabatan) Hak (@Id_hak, Nama_hak)
3. Pemasok UNF
Pemasok (@Id_pemasok, Nama_pemasok,
Alamat_pemasok, kota, Notelp_pemasok,
Nofax_pemasok, Email_pemasok) 1NF
Pemasok (@Id_pemasok, Nama_pemasok,
Alamat_pemasok, kota, Notelp_pemasok,
Nofax_pemasok, Email_pemasok) 2NF
Pemasok (@Id_pemasok, Nama_pemasok, Alamat_pemasok, Notelp_pemasok, Nofax_pemasok, Email_pemasok, Id_kota)
Kota (@Id_kota, Nama_kota, Negara, provinsi) 3NF
Pemasok (@Id_pemasok, Nama_pemasok,
Alamat_pemasok, Id_kota, Notelp_pemasok,
Nofax_pemasok, Email_pemasok)
Provinsi (@Id_provinsi, Nama_provinsi) 4. Provinsi
UNF
Provinsi (@Id_provinsi, Nama_provinsi) 1NF
Dalam relasi provinsi tidak terdapat repeating group sehingga relasi sudah berada pada 1NF
2NF
Dalam relasi provinsi tidak terdapat partial dependency sehingga relasi sudah berada pada 2NF
3NF
Dalam relasi provinsi tidak terdapat transitif depedency sehingga relasi sudah berada pada 3NF
5. Kota UNF
kota (@Id_kota, Nama_kota, Negara, provinsi) 1NF
kota (@Id_kota, Nama_kota, Negara, provinsi) 2NF
kota (@Id_kota, Nama_kota, Negara, Id_provinsi) Provinsi (@Id_provinsi, Nama_provinsi)
3NF
kota (@Id_kota, Nama_kota, Negara, Id_provinsi) Provinsi (@Id_provinsi, Nama_provinsi)
6. Hak UNF
Hak (Id_hak, Nama_hak) 1NF
Dalam relasi Hak tidak terdapat repeating group sehingga relasi sudah berada pada 1NF
2NF
Dalam relasi Hak tidak terdapat partial dependency sehingga relasi sudah berada pada 2NF
Dalam relasi hak tidak terdapat transitif depedency sehingga relasi sudah berada pada 3NF
7. Jabatan UNF
Jabatan (@Id_jabatan, Nama_jabatan) 1NF
Dalam relasi jabatan tidak terdapat repeating group sehingga relasi sudah berada pada 1NF
2NF
Dalam relasi jabatan tidak terdapat partial dependency sehingga relasi sudah berada pada 2NF
3NF
Dalam relasi jabatan tidak terdapat transitif depedency sehingga relasi sudah berada pada 3NF
8. Quotation order
UNF
Quotation Order (@Id_Quo, No_quo, IDKaryawan, IDPelanggan, IDProduk, Nama_proyek, Tanggal_quo, Qty, Harga_indo_before, Harga_dolar_before,
Harga_indo_after, Harga_dolar_after, Disc, QuotationMemo)
1NF
Quotation Order (@Id_Quo, No_quo, Id_Karyawan, Id_Pelanggan, Id_Produk, Nama_proyek, Tanggal_quo, QuotationMemo)
Detil Quotation (id_detil_quo, Id_Quo, Id_produk, qty, harga_indo_before, harga_indo_after, harga_dolar_before, harga_dolar_after, disc,)
2NF
Quotation Order (@Id_Quo, No_quo, Id_Karyawan, Id_Pelanggan, Id_Produk, Nama_proyek, Tanggal_quo, QuotationMemo)
Detil Quotation (id_detil_quo, Id_Quo, Id_produk, qty, harga_indo_before, harga_indo_after, harga_dolar_before, harga_dolar_after, disc,)
Produk (@Id_Produk, Nama_produk) 3NF
Quotation Order (@Id_Quo, No_quo, Id_Karyawan, Id_Pelanggan, Id_Produk, Nama_proyek, Tanggal_quo, QuotationMemo)
Detil Quotation (id_detil_quo, Id_Quo, Id_produk, qty, harga_indo_before, harga_indo_after, harga_dolar_before, harga_dolar_after, disc,)
Produk (@Id_Produk, Nama_produk)
Karyawan (@Id_karyawan, Nama_karyawan) Pelanggan (@Id_Pelanggan, Nama_pelanggan) 9. Produk
UNF
Produk (@Id_produk, Nama_produk, Pola, Harga_idr, Harga_usd, Gambar, Id_pemasok)
1NF
Produk (@Id_produk, Nama_produk, Pola, Harga_idr, Harga_usd, Gambar, Id_pemasok)
Detil Quotation (@id_detil_quo, Id_Quo, Id_produk, qty, harga_indo_before, harga_indo_after, harga_dolar_before, harga_dolar_after, disc,)
2NF
Produk (@Id_produk, Nama_produk, Pola, Harga_idr, Harga_usd, Gambar, Id_pemasok)
Detil Quotation (@id_detil_quo, Id_Quo, Id_produk, qty, harga_indo_before, harga_indo_after, harga_dolar_before, harga_dolar_after, disc,)
Quotation Order (@Id_Quo, No_quo, Id_Karyawan, Id_Pelanggan, Id_Produk, Nama_proyek, Tanggal_quo, QuotationMemo)
Produk (@Id_produk, Nama_produk, Pola, Harga_idr, Harga_usd, Gambar, Id_pemasok)
Detil Quotation (@id_detil_quo, Id_Quo, Id_produk, qty, harga_indo_before, harga_indo_after, harga_dolar_before, harga_dolar_after, disc,)
Quotation Order (@Id_Quo, No_quo, Id_Karyawan, Id_Pelanggan, Id_Produk, Nama_proyek, Tanggal_quo, QuotationMemo)
Pemasok (@Id_pemasok, Nama_pemasok) 10. Stok gudang
UNF
Stok gudang (@Id_stok_gudang, Id_produk, Qty, Tanggal)
1NF
Stok gudang (@Id_stok_gudang, Id_produk, Qty, Tanggal)
2NF
Stok gudang (@Id_stok_gudang, Id_produk, Qty, Tanggal)
Produk (@Id_produk,Nama_produk) 3NF
Dalam relasi stok gudang tidak terdapat transitif depedency sehingga relasi sudah berada pada 3NF 11. Barang masuk
UNF
Barang masuk (@Id_barang_masuk, No_barang_masuk, Id_pembelian, Id_karyawan, Id_quo,
Tanggal_barang_masuk, Quantity_barang_masuk) 1NF
Barang masuk (@Id_barang_masuk, No_barang_masuk, Id_pembelian, Id_karyawan, Id_quo,
Tanggal_barang_masuk, Quantity_barang_masuk) 2NF
Barang masuk (@Id_barang_masuk, No_barang_masuk, Id_pembelian, Id_karyawan, Id_quo,
Tanggal_barang_masuk, Quantity_barang_masuk) Pembelian (@Id_pembelian)
3NF
Barang masuk (@Id_barang_masuk, No_barang_masuk, Id_pembelian, Id_karyawan, Id_quo,
Tanggal_barang_masuk, Quantity_barang_masuk) Pembelian (@Id_pembelian)
Karyawan (@Id_karyawan, Nama_karyawan) Quotation order (@Id_quo)
12. Barang Keluar UNF
Barang Keluar (@Id_barang_keluar, No_barang_keluar, Id_penjualan, Id_karyawan, Id_quo,
Tanggal_barang_keluar, Quantity_barang_keluar) 1NF
Barang Keluar (@Id_barang_keluar, No_barang_keluar, Id_penjualan, Id_karyawan, Id_quo,
Tanggal_barang_keluar, Quantity_barang_keluar) 2NF
Barang Keluar (@ Id_barang_keluar, No_barang_keluar, Id_penjualan, Id_karyawan, Id_quo,
Tanggal_barang_keluar, Quantity_barang_keluar) Penjualan (@Id_penjualan)
3NF
Barang Keluar (@ Id_barang_keluar, No_barang_keluar, Id_penjualan, Id_karyawan, Id_quo,
Tanggal_barang_keluar, Quantity_barang_keluar) Penjualan (@Id_penjualan)
Karyawan (@Id_karyawan, Nama_Karyawan) Quotation order (@Id_quo)
13. Penjualan UNF
Penjualan (@Id_penjualan, No_penjualan, Tanggal_pemjualan, Id_so, Id_karyawan, Harga_penjualan)
1NF
Penjualan (@Id_penjualan, No_penjualan, Tanggal_pemjualan, Id_so, Id_karyawan, Harga_penjualan)
2NF
Penjualan (@Id_penjualan, No_penjualan, Tanggal_pemjualan, Id_so, Id_karyawan, Harga_penjualan)
Sales order (@Id_so, No_so) 3NF
Penjualan (@Id_penjualan, No_penjualan, Tanggal_pemjualan, Id_so, Id_karyawan, Harga_penjualan)
Sales order (@Id_so, No_so)
Karyawan (@Id_karyawan, Nama_karyawan) 14. Pembelian
UNF
Pembelian (@Id_pembelian, No_pembelian, Tanggal_pembelian, Id_po, Harga_pembelian) 1NF
Pembelian (@Id_pembelian, No_pembelian, Tanggal_pembelian, Id_po, Harga_pembelian) 2NF
Pembelian (@Id_pembelian, No_pembelian, Tanggal_pembelian, Id_po, Harga_pembelian) Purchase_order (@id_po, No_po)
3NF
Dalam relasi stok gudang tidak terdapat transitif depedency sehingga relasi sudah berada pada 3NF
15. Sales order
UNF
Sales order (@Id_so, No_so, Tanggal_so, Deadline_so, Memo_so, Payment_option, Cheque_no, Id_karyawan, Id_Quo)
1NF
Sales order (@Id_so, No_so, Tanggal_so, Deadline_so, Memo_so, Payment_option, Cheque_no, Id_karyawan, Id_Quo)
2NF
Sales order (@Id_so, No_so, Tanggal_so, Deadline_so, Memo_so, Payment_option, Cheque_no, Id_karyawan, Id_Quo)
Quotation order (@Id_quo, No_quo) 3NF
Sales order (@Id_so, No_so, Tanggal_so, Deadline_so, Memo_so, Payment_option, Cheque_no, Id_karyawan, Id_Quo)
Quotation order (@Id_quo, No_quo)
Karyawan (@Id_karyawan, Nama_karyawan)
16. Purchase order
UNF
Purchase order (@Id_po, No_po, Id_so, Id_pemasok, Tanggal_po, Tanggal_deadline, Id_karyawan, Term) 1NF
Purchase order (@Id_po, No_po, Id_so, Id_pemasok, Tanggal_po, Tanggal_deadline, Id_karyawan, Term) 2NF
Purchase order (@Id_po, No_po, Id_so, Id_pemasok, Tanggal_po, Tanggal_deadline, Id_karyawan, Term) Sales order (@Id_so, No_so)
3NF
Purchase order (@Id_po, No_po, Id_so, Id_pemasok, Tanggal_po, Tanggal_deadline, Id_karyawan, Term)
Sales order (@Id_so, No_so)
Karyawan (@Id_karyawan, Nama_karyawan) Pemasok (@Id_pemasok, Nama_pemasok)
4.1.2.4 Memeriksa Batasan – Batasan Integritas 1. Quotation_order
Quotation_order (id_quo, no_quo, nama_proyek, tanggal_quo, memo_quo)
Primary Key : id_quo
ForeignKey : id_pelanggan references pelanggan (id_pelanggan)
ON DELETE CASCADE ON UPDATE CASCADE ForeignKey : id_karyawan references karyawan (id_karyawan)
ON DELETE CASCADE ON UPDATE CASCADE ForeignKey : id_detil_quo references detil_quo (id_detil_quo)
ON DELETE CASCADE ON UPDATE CASCADE 2. Sales_order
SalesOrder (id_so, no_so, tanggal_so, deadline_so, memo_so, Payment_option, Cheque_no)
Primary Key : id_so
ForeignKey : id_pelanggan references pelanggan (id_pelanggan)
ON DELETE CASCADE ON UPDATE CASCADE ForeignKey : id_karyawan references karyawan (id_karyawan)
ON DELETE CASCADE ON UPDATE CASCADE 3. Purchase_order
Purchase_order (id_po, no_po, tanggal_po, tanggal_deadline, term)
ForeignKey : id_pemasok references pemasok (id_pemasok)
ON DELETE CASCADE ON UPDATE CASCADE ForeignKey : id_so references sales_order (id_so) ON DELETE CASCADE ON UPDATE CASCADE ForeignKey : id_karyawan references karyawan (id_karyawan)
ON DELETE CASCADE ON UPDATE CASCADE 4. Pelanggan
Pelanggan (Id_pelanggan ,nama_pelanggan,
alamat_pelanggan, kodepos_pelanggan, notelp_pelanggan, nohp_pelanggan, nofak_pelanggan, email_pelanggan) Primary Key : id_pelanggan
ForeignKey : id_kota references kota (id_kota) ON DELETE CASCADE ON UPDATE CASCADE 5. Karyawan
Karyawan (id_karyawan, nama_karyawan,
alamat_karyawan, notelp_karyawan, nohp_karyawan, username, password)
Primary Key : id_karyawan
ForeignKey : id_hak references hak (id_hak) ON DELETE CASCADE ON UPDATE CASCADE ForeignKey : id_jabatan references jabaran (id_jabatan) ON DELETE CASCADE ON UPDATE CASCADE 6. Pemasok
Pemasok (id_pemasok, nama_pemasok, alamat_pemasok, notelp_pemasok, nofax_pemasok, email_pemasok)
Primary Key : id_pemasok
ForeignKey : id_kota references kota (id_kota) ON DELETE CASCADE ON UPDATE CASCADE 7. Produk
Produk (id_produk, nama_produk, pola, harga_idr, harga_usd, gambar)
ForeignKey : id_pemasok references pemasok (id_pemasok)
ON DELETE CASCADE ON UPDATE CASCADE 8. Penjualan
Penjualan (id_penjualan, no_penjualan, tanggal_pemjualan, Id_so, Harga_penjualan) Primary Key : id_penjualan
ForeignKey : id_so references sales_order (id_so) ON DELETE CASCADE ON UPDATE CASCADE ForeignKey : id_karyawan references karyawan (id_karyawan)
ON DELETE CASCADE ON UPDATE CASCADE 9. Pembelian
Pembelian (id_pembelian, no_pembelian, tanggal_pembelian, Harga_pembelian) Primary Key : id_pembelian
ForeignKey : id_po references purchase_order (id_po) ON DELETE CASCADE ON UPDATE CASCADE 10. Barang keluar
Barang_keluar (Id_barang_keluar, No_barang_keluar, Tanggal_barang_keluar, Quantity_barang_keluar) Primary Key : id_barang_keluar
ForeignKey : id_penjualan references penjualan (id_penjualan)
ON DELETE CASCADE ON UPDATE CASCADE ForeignKey : id_karyawan references karyawab (id_karyawan)
ON DELETE CASCADE ON UPDATE CASCADE ForeignKey : id_quo references quotation_order (id_quo) ON DELETE CASCADE ON UPDATE CASCADE 11. Barang masuk
Barang_masuk (Id_barang_masuk, No_barang_masuk, Tanggal_barang_masuk, Quantity_barang_masuk) Primary Key : id_barang_masuk
ForeignKey : id_penjualan references penjualan (id_penjualan)
ON DELETE CASCADE ON UPDATE CASCADE ForeignKey : id_karyawan references karyawab (id_karyawan)
ON DELETE CASCADE ON UPDATE CASCADE ForeignKey : id_quo references quotation_order (id_quo) ON DELETE CASCADE ON UPDATE CASCADE 12. Stok gudang
Stok_gudang (id_stok_gudang, qty_produk) Primary Key : id_stok_gudang
ForeignKey : id_produk references produk (id_produk) ON DELETE CASCADE ON UPDATE CASCADE 13. Detil quotation
Detil_quo (id_detil_quo, Id_Quo, Id_produk, qty,
harga_indo_before, harga_indo_after, harga_dolar_before, harga_dolar_after, disc,)
Primary Key : id_detil_quo
ForeignKey : id_quo references quotation_order (id_quo) ON DELETE CASCADE ON UPDATE CASCADE ForeignKey : id_produk references produk (id_produk) ON DELETE CASCADE ON UPDATE CASCADE 14. Provinsi
Provinsi (id_provinsi, nama_provinsi) Primary Key : id_provinsi
15. Kota
Kota (id_kota, nama_kota, negara) Primary Key : id_kota
ForeignKey : id_provinsi references provinsi (id_provinsi) ON DELETE CASCADE ON UPDATE CASCADE 16. Hak
Hak (id_hak, hak_user) Primary Key : id_hak 17. Jabatan
Jabatan (id_jabatan, nama_jabaran) Primary Key : id_jabatan
4.1.2.5Entity Relationship Diagram Logical Global
Gambar 4.27 ERD Logical Global
D ib u a t D ib u a t D il a k u k a n D il a k u k a n D il a k u k a n M e li b a tk a n M e m il ik i M e lib a tk a n M e m il ik i D im ilik i M e li b a tk a n M e li b a tk a n
4.1.3 Perancangan fisikal
Langkah dalam perancangan basis data fisikal terdiri dari beberapa tahap perancangan (Connnolly dan Begg, 2010) yaitu :
1. Menterjemahkan model data logikal untuk DBMS yang ditargetkan
a.Merancang relasi dasar
b. Merancang representasi derivied data c.Merancang batasan perusahaan
2. Merancang indeks dan organisasi file a.Menganalisa transaksi
b. Memilih organisasi file c.Memilih indeks
d. Memperkirakan kebutuhan ruang penyimpanan 3. Merancang tampilan pengguna
4. Merancang mekanisme keamanan
5. Mempertimbangkan pengenalan redudansi yang terkontrol 6. Memonitor dan menyesuaikan operational system
4.1.3.1 Perancangan Relasi Dasar
1. Karyawan
Domain D_id_karyawan : integer, length
10, Auto
Increment
Domain D_nama_karyawan : variable length
character string, length 100
Domain D_username : variable length
character string, length 30
Domain D_pasword : variable length
character string, length 255
Domain D_email_karyawan : variable length character string, length 30
Domain D_alamat_karyawan : Text
Domain D_notelp_karyawan : variable length
character string, length 15
Domain D_nohp_karyawan : variable length
character string, length 15
Domain D_id_jabatan : integer, length
10, Auto
Increment
Domain D_id_hak : integer, length
10, Auto
Increment Karyawan(
Id_karyawan D_id_karyawan NOT
NULL,
Username D_username NOT
NULL,
Password D_password NOT
NULL,
Nama_karyawan D_nama_karyawan NOT
NULL,
Alamat_karyawan D_alamat_karyawan NOT
NULL,
Notelp_karyawan D_notelp_karyawan NOT
NULL,
Nohp_karyawan D_nohp_karyawan NOT
NULL,
email_karyawan D_email_karyawan NULL,
Id_jabatan D_id_jabatan NOT NULL,
FOREIGN KEY (id_jabatan) references jabatan(id_jabatan) ON UPDATE CASCADE ON DELETE NO ACTION FOREIGN KEY (id_hak) references hak(id_hak) ON UPDATE CASCADE ON DELETE NO ACTION );
2. Pelanggan
Domain D_id_pelanggan : integer, length
10, Auto
Increment
Domain D_nama_pelanggan : variable length
character string, length 50
Domain D_email_pelanggan : variable length
character string, length 30
Domain D_alamat_pelanggan : Text
Domain D_notelp_pelanggan : variable length character string, length 15
Domain D_nohp_pelanggan : variable length
character string, length 15
Domain D_nofax_pelanggan : variable length
character string, length 15
Domain D_kodepos_pelanggan : variable length character string, length 7
Domain D_id_kota : integer, length
10, Auto
Increment Karyawan(
Id_pelanggan D_id_pelanggan NOT
Nama_pelanggan D_nama_pelanggan NOT NULL,
Alamat_pelanggan D_alamat_pelanggan NOT NULL, Notelp_pelanggan D_notelp_pelanggan NOT NULL, Email_pelanggan D_email_pelanggan NOT NULL, Nohp_karyawan D_nohp_pelanggan NOT NULL, Nofax_pelanggan D_nofax_pelanggan NULL, kodepos_pelangganD_kodepos_pelanggan NOT NULL, IDd_kota D_kota NOTNUL PRIMARY KEY (id_pelanggan),
FOREIGN KEY (id_kota) references kota(id_kota) ON UPDATE CASCADE ON DELETE NO ACTION );
3. Pemasok
Domain D_id_pemasok : integer, length
10, Auto
Increment
Domain D_nama_pemasok : variable length
character string, length 50
Domain D_email_karyawan : variable length
character string, length 30
Domain D_alamat_karyawan : Text
Domain D_notelp_pemasok : variable length
character string, length 15
Domain D_nofax_pemasok : variable length
character string, length 15
Domain D_id_kota : integer, length
10, Auto
Increment Pemasok(
Id_pemasok D_id_pemasok NOT NULL,
Nama_pemasok D_nama_pemasok NOT
NULL,
Alamat_pemasok D_alamat_pemasok NOT
NULL,
Notelp_pemasok D_notelp_pemasok NOT
NULL,
Nofax_pemasok D_nofax_pemasok NOT
NULL,
email_pemasok D_email_karyawan NULL,
Id_kota D_id_kota NOT NULL,
PRIMARY KEY (id_pemasok),
FOREIGN KEY (id_kota) references kota(id_kota) ON UPDATE CASCADE ON DELETE NO ACTION );
4. Produk
Domain D_id_produk : integer, length
10, Auto
Increment
Domain D_nama_produk : variable length
character string, length 200
Domain D_Harga_idr : integer
Domain D_harga_usd : integer
Domain D_pola : variable length
character string, length 150
Domain D_gambar : variable length
character string, length 100
Domain D_id_pemasok : integer, length
10, Auto
Produk(
Id_produk D_id_pemasok NOT
NULL,
Nama_produk D_nama_pemasok NOT
NULL,
pola D_pola NOT
NULL,
gambar D_gambar NOT
NULL,
harga_idr D_harga_idr NOT
NULL,
harga_usd D_harga_usd NULL,
Id_pemasok D_id_pemasok NOT NULL,
PRIMARY KEY (id_produk),
FOREIGN KEY (id_pemasok) references pemasok (id_pemasok) ON UPDATE CASCADE ON DELETE NO ACTION
);
5. Quotation_order
Domain D_id_quo : integer, length
10, Auto
Increment
Domain D_no_quo : variable length
character string, length 30, format [Q][U][O][0- 9][0-9][0-9][0-9][0-9][0-9][0-9]
Domain D_nama_proyek : variable length
character string, length 200
Domain D_tanggal_quo: date, length 8, format yyyy-mm-dd
Domain D_memo_quo: text
Domain D_id_pelanggan : integer, length
10, Auto
Increment
Domain D_id_karyawan : integer, length
10, Auto
Increment
Domain D_id_pelanggan : integer, length
10, Auto
Increment Quotation_order(
Id_quo D_id_quo NOT
NULL,
No_quo D_no_quo NOT
NULL,
Nama_proyek D_nama_proyek NOT
NULL,
Tanggal_quo D_tanggal_quo NOT
NULL,
Memo_quo D_memo_quo NOT
NULL,
Id_pelanggan D_id_pelanggan NOT
NULL,
Id_karyawan D_id_karyawan NOT NULL, PRIMARY KEY (id_pelanggan),
FOREIGN KEY (id_pelanggan) references pelanggan (id_pelanggan) ON UPDATE CASCADE ON DELETE NO ACTION
FOREIGN KEY (id_karyawn) references karyawab
(id_karyawan) ON UPDATE CASCADE ON DELETE NO ACTION );
6. Sales_order
Domain D_id_so : integer, length
10, Auto
Increment
Domain D_no_so : variable length
character string, length 30, format [S][O][0-9][0- 9][0-9][0-9][0-9][0-9][0-9], generate by system
Domain D_tanggal_so : date, length 8,
format yyyy-mm-dd
Domain D_deadline_so : date, length 8,
format yyyy-mm-dd
Domain D_memo_so : text
Domain D_payment_option : variable length
character string, length 10, format : cheque/cash
Domain D_cheque_no : variable length
character string, length 40
Domain D_id_karyawan : integer, length
10, Auto
Increment
Domain D_id_quo : integer, length
10, Auto
Increment Sales_order(
Id_so D_id_so NOT NULL,
No_so D_no_so NOT
NULL,
Tanggal_so D_tanggal_so NOT
NULL,
deadline_so D_deadline_so NOT
NULL,
Memo_quo D_memo_so NOT
NULL,
Payment_option D_payment_option NOT
NULL,
Cheque_no D_cheque_no NOT
NULL,
Id_karyawan D_id_karyawan NOT
NULL,
Id_quo D_id_karyawan NOT
NULL,
PRIMARY KEY (id_so),
FOREIGN KEY (id_karyawan) references karyawan (id_karyawan) ON UPDATE CASCADE ON DELETE NO ACTION
FOREIGN KEY (id_quo) references quotation_order (id_quo) ON UPDATE CASCADE ON DELETE NO ACTION );
7. Purchase_order
Domain D_id_po : integer, length
10, Auto
Increment
Domain D_no_po : variable length
character string, length 30, format [P][O][0-9][0-
9][0-9][0-9][0-9][0-9][0-9],
generate by
system
Domain D_id_pemasok : integer, length
10, Auto
Increment
Domain D_id_so : integer, length
10, Auto
Increment
Domain D_tanggal_po : date, length 8,
format yyyy-mm-dd
Domain D_deadline_po : date, length 8,
format yyyy-mm-dd
Domain D_term : variable length
character string, length 20
Domain D_id_karyawan : integer, length
10, Auto
Increment Purchase_order(
Id_po D_id_po NOT
NULL,
No_po D_no_po NOT
NULL,
Tanggal_so D_tanggal_so NOT
NULL,
deadline_so D_deadline_so NOT
NULL,
Id_karyawan D_id_karyawan NOT
Id_so D_id_so NOT NULL,
Id_pemasok D_id_pemasok NOT
NULL,
PRIMARY KEY (id_po),
FOREIGN KEY (id_karyawan) references karyawan (id_karyawan) ON UPDATE CASCADE ON DELETE NO ACTION
FOREIGN KEY (id_so) references sales_order (id_so) ON UPDATE CASCADE ON DELETE NO ACTION
FOREIGN KEY (id_pemasok) references pemasok (id_pemasok) ON UPDATE CASCADE ON DELETE NO ACTION
);
8. Penjulan
Domain D_id_penjualan : integer, length
10, Auto
Increment
Domain D_no_penjualan : variable length
character string, length 15, format [P][E][0-9][0- 9][0-9][0-9][0-9][0-9][0-9], generate by system
Domain D_tanggal_penjualan : date, length 8, format yyyy-mm-dd
Domain D_harga_penjualan : variable length
character string, length 20
Domain D_id_so : integer, length
10, Auto
Increment
Domain D_id_karyawan : integer, length
10, Auto
Increment Penjualan (
Id_penjualan D_id_penjualan NOT
NULL,
No_penjualan D_no_penjualan NOT
NULL,
Tanggal_penjualan D_tanggal_so NOT
NULL,
harga_penjualan D_harga_penjualan NOT NULL,
Id_so D_id_so NOT
NULL,
Id_karyawan D_id_karyawan NOT
NULL,
PRIMARY KEY (id_penjualan),
FOREIGN KEY (id_karyawan) references karyawan (id_karyawan) ON UPDATE CASCADE ON DELETE NO ACTION
FOREIGN KEY (id_so) references sales_order (id_so) ON UPDATE CASCADE ON DELETE NO ACTION
);
9. Pembelian
Domain D_id_pembelian : integer, length
10, Auto
Increment
Domain D_no_pembelian : variable length
character string, length 15, format
[P][E][0-9][0- 9][0-9][0-9][0-9][0-9][0-9],
generate by
system
Domain D_tanggal_penjualan : date, length 8, format yyyy-mm-dd
Domain D_harga_penjualan : variable length
character string, length 20
Domain D_id_po : integer, length
10, Auto
Increment Pembelian (
Id_pembelian D_id_pembelian NOT
NULL,
No_ pembelian D_no_ pembelian NOT
NULL,
Tanggal_ pembelian D_tanggal_ pembelian NOT NULL,
harga_ pembelian D_harga_ pembelian NOT NULL,
Id_po D_id_po NOT
NULL,
PRIMARY KEY (id_pembelian),
FOREIGN KEY (id_po) references purchase_order (id_po) ON UPDATE CASCADE ON DELETE NO ACTION );
10.Barang_masuk
Domain D_id_barang_masuk : integer, length
10, Auto
Increment
Domain D_no_barang_masuk : variable length
character string, length 15, format [B][M][0-9][0- 9][0-9][0-9][0-9][0-9][0-9], generate by system
Domain D_tanggal_barang_masuk : date, length 8, format yyyy-mm-dd
Domain D_qty_barang_masuk : integer
Domain D_id_pembelian : integer, length
10, Auto
Increment
Domain D_id_karyawan : integer, length
10, Auto
Increment
Domain D_id_quo : integer, length
10, Auto
Increment Barang_masuk (
Id_barang_masuk D_id_barang_masuk NOT
NULL,
No_ barang_masuk D_no_ barang_masuk NOT
NULL,
Tanggal_ barang_masuk D_tanggal_ barang_masuk NOT NULL,
Qty_barang_masuk D_qty_barang_masuk NOT NULL,
Id_pembelian D_id_pembelian NOT
NULL,
Id_karyawan D_id_karyawan NOT
NULL,
Id_quo D_id_quo NOT
NULL,
PRIMARY KEY (id_barang_masuk),
FOREIGN KEY (id_karyawan) references karyawan (id_karyawan) ON UPDATE CASCADE ON DELETE NO ACTION
FOREIGN KEY (id_pembelian) references pembelian (id_pembelian) ON UPDATE CASCADE ON DELETE NO ACTION
FOREIGN KEY (id_quo) references quotation_order (id_quo) ON UPDATE CASCADE ON DELETE NO ACTION
);
11.Barang_keluar
Domain D_id_barang_keluar : integer, length
10, Auto
Increment
Domain D_no_barang_keluar : variable length character string, length 15, format [B][K][0-9][0- 9][0-9][0-9][0-9][0-9][0-9], generate by system
Domain D_tanggal_barang_keluar : date, length 8, format yyyy-mm-dd
Domain D_qty_barang_keluar : integer
Domain D_id_penjualan : integer, length
10, Auto
Increment
Domain D_id_karyawan : integer, length
10, Auto
Increment
Domain D_id_quo : integer, length
10, Auto
Increment Barang_keluar (
Id_barang_keluar D_id_barang_keluar NOT NULL,
No_ barang_keluar D_no_ barang_kelauarNOT NULL,
Tanggal_ barang_keluar D_tanggal_ barang_keluar NOT NULL,
Qty_barang_keluar D_qty_barang_keluar NOT NULL,
Id_penjualan D_id_penjualan NOT
NULL,
Id_karyawan D_id_karyawan NOT
NULL,
Id_quo D_id_quo NOT
NULL,
PRIMARY KEY (id_barang_keluar),
FOREIGN KEY (id_karyawan) references karyawan (id_karyawan) ON UPDATE CASCADE ON DELETE NO ACTION
FOREIGN KEY (id_pembelian) references pembelian (id_pembelian) ON UPDATE CASCADE ON DELETE NO ACTION
FOREIGN KEY (id_quo) references quotation_order (id_quo) ON UPDATE CASCADE ON DELETE NO ACTION );
12.Stok_gudang
Domain D_id_stok_gudang : integer, length
10, Auto
Increment
Domain D_qty_produk : integer
Domain D_id_produk : integer
Stok_gudang (
Id_stok_gudang D_id_stok_gudang NOT
NULL,
Qty_produk D_no_ qty_produk NOT
NULL,
Id_produk D_id_produk NOT
NULL,
PRIMARY KEY (id_stok_gudang),
FOREIGN KEY (id_produk) references produk
(id_produk) ON UPDATE CASCADE ON DELETE NO ACTION
);
13. Detil_quotation
Domain D_id_Detil_quotation integer, length
10, Auto
Increment
Domain D_id_produk : integer, length
10, Auto
Increment
Domain D_id_quo : integer, length
10, Auto
Domain D_qty: integer
Domain D_harga_indo_before : decimal (10,0) Domain D_harga_indo_after : decimal (10,0) Domain D_harga_dolar_before : decimal (10,0) Domain D_harga_dolar_after : decimal (10,0)
Domain D_disc : integer
Detil_quo (
id_ detil_quo D_id_ quo NOT
NULL,
id_ quo D_id_ quo NOT
NULL,
Id_produk D_id_produk NOT
NULL,
Qty D_qty NOT
NULL,
Harga_indo_before D_ Harga_indo_before NOT NULL
Harga_indo_after D_ Harga_indo_after NOT NULL
Harga_dolar_before D_ Harga_dolar_before NOT NULL
harga_dolar_after D_ harga_dolar_after NOT NULL
disc D_disc NULL,
PRIMARY KEY (id_detil_quo),
FOREIGN KEY (id_quo) references quotation_order (id_quo) ON UPDATE CASCADE ON DELETE NO ACTION
FOREIGN KEY (id_produk) references produk
(id_produk) ON UPDATE CASCADE ON DELETE NO ACTION
); 14.Hak
Domain D_id_hak: integer, length
10, Auto
Increment
Domain D_hak_user : variable length
character string, length 10
Hak (
Id_hak D_id_detil_jahitan NOT
NULL,
id_ hak_user D_id_ quo NOT
NULL,
PRIMARY KEY (id_hak) ); 15.Jabatan
Domain D_id_jabartan: integer, length
10, Auto
Increment
Domain D_nama_jabatan : variable length
character string, length 10
Hak (
Id_jabatan D_id_jabatan NOT
NULL,
id_ nama_jabatan D_nama_jabatan NOT
NULL,
PRIMARY KEY (id_jabatan) );
16.Kota
Domain D_id_kota: integer, length
10, Auto
Domain D_nama_kota : variable length character string, length 100
Domain D_nama_negara : variable length
character string, length 30
Domain D_id_provinsi : integer, length
10, Auto
Increment Hak (
Id_kota D_id_kota NOT
NULL,
id_ nama_kota D_nama_kota NOT
NULL,
Id_provinsi D_id_provinsi NOT
NULL,
id_ negara D_negara NOT
NULL,
PRIMARY KEY (id_kota)
FOREIGN KEY (id_provinsi) references
provinsi(id_provinsi) ON UPDATE CASCADE ON DELETE NO ACTION );
17.Provinsi
Domain D_id_provinsi : integer, length
10, Auto
Increment
Domain D_nama_provinsi : variable length
character string, length 10
Hak (
Id_provinsi D_id_provinsi NOT
NULL,
Id_ nama_provinsi D_nama_provinsi NOT
PRIMARY KEY (id_jabatan) );
4.1.3.2 Query DDL dan DML CREATE TABLE `tbl_barang_keluar` (
`id_barang_keluar` int(10) NOT NULL AUTO_INCREMENT COMMENT 'ID Barang Keluar',
`no_barang_keluar` varchar(15) NOT NULL COMMENT 'No.Barang Keluar',
`tanggal_barang_keluar` date NOT NULL COMMENT 'Tanggal Barang Keluar',
`qty_barang_keluar` int(10) NOT NULL COMMENT 'Jumlah Barang Keluar',
`id_karyawan` int(10) NOT NULL COMMENT 'ID Karyawan',
`id_penjualan` int(10) NOT NULL COMMENT 'ID Penjualan',
`id_quotation` int(10) NOT NULL COMMENT 'ID Quotation',
PRIMARY KEY (`id_barang_keluar`),
KEY `fk_penjualan_2` (`id_penjualan`),
KEY `fk_karyawan_5` (`id_karyawan`),
KEY `fk_quo_bk` (`id_quotation`),
CONSTRAINT `fk_karyawan_5` FOREIGN KEY (`id_karyawan`) REFERENCES `tbl_karyawan` (`id_karyawan`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `fk_penjualan_2` FOREIGN KEY (`id_penjualan`) REFERENCES `tbl_penjualan` (`id_penjualan`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `fk_quo_bk` FOREIGN KEY (`id_quotation`) REFERENCES `tbl_quotation_order` (`id_quo`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
LOCK TABLES `tbl_barang_keluar` WRITE; insert into `tbl_barang_keluar`(`id_barang_keluar`,`no_barang_keluar`,`tanggal_bar ang_keluar`,`qty_barang_keluar`,`id_karyawan`,`id_penjualan`,`id_quotat ion`) values (1,'BK-0948688949','2014-01-31',14,3,1,1); UNLOCK TABLES;
/*Table structure for table `tbl_barang_masuk` */
CREATE TABLE `tbl_barang_masuk` (
`id_barang_masuk` int(10) NOT NULL AUTO_INCREMENT COMMENT 'ID Barang Masuk',
`no_barang_masuk` varchar(15) NOT NULL COMMENT 'No.Barang Masuk',
`tanggal_barang_masuk` date NOT NULL COMMENT 'Tanggal Barang Masuk',
`qty_barang_masuk` int(10) NOT NULL COMMENT 'Jumlah Barang Masuk',
`id_pembelian` int(10) NOT NULL COMMENT 'ID Pembelian',
`id_karyawan` int(10) NOT NULL COMMENT 'ID Karyawan',
`id_quotation` int(10) NOT NULL COMMENT 'ID Quotation',
PRIMARY KEY (`id_barang_masuk`),
KEY `fk_pembelian` (`id_pembelian`),
KEY `fk_karyawan_4` (`id_karyawan`),
KEY `fk_quo` (`id_quotation`),
CONSTRAINT `fk_karyawan_4` FOREIGN KEY (`id_karyawan`) REFERENCES `tbl_karyawan` (`id_karyawan`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `fk_pembelian` FOREIGN KEY (`id_pembelian`) REFERENCES `tbl_pembelian` (`id_pembelian`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `fk_quo` FOREIGN KEY (`id_quotation`) REFERENCES `tbl_quotation_order` (`id_quo`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
/*Data for the table `tbl_barang_masuk` */
LOCK TABLES `tbl_barang_masuk` WRITE;
insert into `tbl_barang_masuk`(`id_barang_masuk`,`no_barang_masuk`,`tanggal_bar ang_masuk`,`qty_barang_masuk`,`id_pembelian`,`id_karyawan`,`id_quot ation`) values (1,'BM-0594807864','2014-01-27',14,1,3,1); insert into `tbl_barang_masuk`(`id_barang_masuk`,`no_barang_masuk`,`tanggal_bar ang_masuk`,`qty_barang_masuk`,`id_pembelian`,`id_karyawan`,`id_quot ation`) values (2,'BM-7772692335','2014-01-27',10,2,3,2); UNLOCK TABLES;
/*Table structure for table `tbl_detail_quo` */
CREATE TABLE `tbl_detail_quo` (
`id_detil_quo` int(10) NOT NULL AUTO_INCREMENT COMMENT 'ID Detil Quotation Order',
`id_quo_fk` int(10) NOT NULL COMMENT 'ID Quotation Order',
`harga_indo_before` decimal(10,0) NOT NULL COMMENT 'Harga Rupiah (Before)',
`harga_dolar_before` decimal(10,0) NOT NULL COMMENT 'Harga Dolar (Before)',
`disc` int(10) DEFAULT NULL COMMENT 'Diskon',
`harga_indo_after` decimal(10,0) NOT NULL COMMENT 'Harga Rupiah (After)',
`harga_dolar_after` decimal(10,0) NOT NULL COMMENT 'Harga Dolar (After)',
`id_produk` int(10) NOT NULL COMMENT 'ID Produk',
PRIMARY KEY (`id_detil_quo`),
KEY `fk_quo` (`id_quo_fk`),
KEY `fk_produk` (`id_produk`),
CONSTRAINT `fk_produk` FOREIGN KEY (`id_produk`)
REFERENCES `tbl_produk` (`id_produk`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
/*Data for the table `tbl_detail_quo` */
LOCK TABLES `tbl_detail_quo` WRITE;
insert into `tbl_detail_quo`(`id_detil_quo`,`id_quo_fk`,`qty`,`harga_indo_before`,`ha rga_dolar_before`,`disc`,`harga_indo_after`,`harga_dolar_after`,`id_produ k`) values (1,1,5,'2840000','237',0,'14200000','1183',31); insert into `tbl_detail_quo`(`id_detil_quo`,`id_quo_fk`,`qty`,`harga_indo_before`,`ha rga_dolar_before`,`disc`,`harga_indo_after`,`harga_dolar_after`,`id_produ k`) values (2,1,2,'1500000','125',0,'3000000','250',32);
insert into `tbl_detail_quo`(`id_detil_quo`,`id_quo_fk`,`qty`,`harga_indo_before`,`ha rga_dolar_before`,`disc`,`harga_indo_after`,`harga_dolar_after`,`id_produ k`) values (3,1,7,'4850000','404',0,'33950000','2829',34); insert into `tbl_detail_quo`(`id_detil_quo`,`id_quo_fk`,`qty`,`harga_indo_before`,`ha rga_dolar_before`,`disc`,`harga_indo_after`,`harga_dolar_after`,`id_produ k`) values (4,2,10,'4850000','404',0,'48500000','4042',34); UNLOCK TABLES;
/*Table structure for table `tbl_hak` */
CREATE TABLE `tbl_hak` (
`id_hak` int(10) NOT NULL AUTO_INCREMENT COMMENT 'ID Hak User',
`hak_user` varchar(20) NOT NULL COMMENT 'Hak User',
PRIMARY KEY (`id_hak`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
/*Data for the table `tbl_hak` */
LOCK TABLES `tbl_hak` WRITE;
insert into `tbl_hak`(`id_hak`,`hak_user`) values (1,'Admin');
insert into `tbl_hak`(`id_hak`,`hak_user`) values (2,'Pembelian');
insert into `tbl_hak`(`id_hak`,`hak_user`) values (3,'Penjualan');