4.6.3 Perancangan Database Fisikal
4.6.3.1 Perancangan Database Relasional
Informasi yang dibutuhkan dalam perancangan database fisikal dapat diperoleh melalui kamus data dan mendefinisikan penggambaran relasional menggunakan Database Design Language (DBDL). Berikut ini adalah perancangan database relasional untuk setiap entiti yang bertujuan untuk domain dari setiap atribut supaya user dapat mengerti penggunaan setiap atribut tersebut berdasarkan penjelasan dan batasan yang terdapat dalam setiap atribut.
• DBDL untuk Karyawan
Domain Kode karyawan Varchar (10)
Domain Nama karyawan Varchar (50) Domain Jabatan Varchar (20) Domain Alamat karyawan Varchar (100) Domain Gaji karyawan Int
Karyawan (
KdKaryawan Kode karyawan NOT NULL, NamaKaryawan Nama karyawan NOT NULL,
KdJabatan Jabatan NOT NULL, Alamat Alamat karyawan NOT NULL, Gaji Gaji karyawan NOT NULL,
PRIMARY KEY (kdkaryawan),
);
• DBDL untuk Pelanggan
Domain Kode pelanggan Varchar (10)
Domain Nama pelanggan Varchar (50) Domain Alamat pelanggan Varchar (100) Domain No Fax pelanggan Int
Domain Email pelanggan Varchar (50) Pelanggan (
Kdpelanggan Kode pelanggan NOT NULL, Namapelanggan Nama pelanggan NOT NULL, Alamat Alamat pelanggan NOT NULL, Fax No Fax pelanggan NULL, Email Email pelanggan NULL, PRIMARY KEY (kdpelanggan)
);
• DBDL untuk Supplier
Domain Kode supplier Varchar (10) Domain Nama supplier Varchar (50)
Domain Alamat supplier Varchar (100) Domain No fax supplier Int
Domain Email supplier Varchar (50) Supplier (
KdSupplier Kode supplier NOT NULL, NamaSupplier Nama supplier NOT NULL,
Alamat Alamat supplier NOT NULL, Fax No fax supplier NULL, Email Email supplier NULL, PRIMARY KEY (KdSupplier)
);
• DBDL untuk Barang
Domain Kode barang Varchar (10) Domain Nama Barang Varchar (100) Domain Jenis Barang Varchar (10) Domain Jumlah Barang Int
Domain Harga Beli Int
Domain ROP Int
Domain Harga Jual Int
Domain Kode supplier Varchar (10) Barang (
NamaBarang Nama Barang NOT NULL, KdJenis Jenis Barang NOT NULL, Jumlah Jumlah Barang NOT NULL, HargaBeli Harga Beli NOT NULL,
ROP ROP NOT NULL,
HargaJual Harga Jual NOT NULL, KdSupplier Kode supplier NOT NULL, PRIMARY KEY (kdbarang),
CONSTRAINT FK_M sBarang
FOREIGN KEY (KdSupplier) REFERENCES M s_Supplier (KdSupplier) ON DELETE NO ACTION ON UPDATE CASCADE,
CONSTRAINT Ms_Barang1 CHECK (ROP > 0), CONSTRAINT Ms_Barang2 CHECK (Jumlah >= 0), CONSTRAINT Ms_Barang3 CHECK (HargaBeli > 0), CONSTRAINT Ms_Barang4
CHECK (HargaJual > HargaBeli) );
• DBDL untuk Pembelian
Domain Kode pembelian Varchar (10) Domain Kode karyawan Varchar (10)
Domain Kode supplier Varchar (10)
Domain Tanggal Datetime
Pembelian (
KdPembelian Kode pembelian NOT NULL, KdKaryawan Kode karyawan NOT NULL, KdSupplier Kode supplier NOT NULL,
Tanggal Tanggal NOT NULL,
PRIMARY KEY (KdPembelian)
CONSTRAINT FK_TrPembelian1
FOREIGN KEY (KdKaryawan) REFERENCES M s_Karyawan
(KdKaryawan) ON DELETE NO ACTION ON UPDATE CASCADE, CONSTRAINT FK_TrPembelian2
FOREIGNKEY (KdSupplier) REFERENCES M s_Supplier (KdSupplier) ON DELETE NO ACTION ON UPDATE CASCADE
);
• DBDL untuk Detail Pembelian
Domain Kode pembelian Varchar (10) Domain Kode Barang Varchar (10)
Domain Jumlah Int
Detail Pembelian (
KdPembelian Kode pembelian NOT NULL, KdBarang Kode karyawan NOT NULL,
CONSTRAINT PK_TrDetailPembelian PRIMARY KEY (KdPembelian, KdBarang),
CONSTRAINT FK_TrDetailPembelian1
FOREIGN KEY (KdPembelian) REFERENCES Tr_Pembelian (KdPembelian) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT FK_TrDetailPembelian2
FOREIGN KEY (KdBarang) REFERENCES M s_Barang (KdBarang) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT TrDetailPembelian1 CHECK (Qty >= 1)
);
• DBDL untuk Retur Pembelian
Domain Kode retur pembelian Varchar (10) Domain Kode pembelian Varchar (10) Domain Kode karyawan Varchar (10)
Domain Tanggal Datetime
Domain Status Varchar (10) Pembelian (
KdReturPembelian Kode retur pembelian NOT NULL, KdPembelian Kode pembelian NOT NULL, KdKaryawan Kode karyawan NOT NULL,
Tanggal Tanggal NOT NULL,
PRIMARY KEY (KdReturPembelian)
CONSTRAINT FK_TrReturPembelian1 FOREIGN KEY (KdPembelian) REFERENCES Tr_Pembelian (KdPembelian) ON DELETE CASCADE ON UPDATE CASCADE );
• DBDL untuk Detail Retur Pembelian
Domain Kode retur pembelian Varchar (10) Domain Kode barang Varchar (10) Domain Jumlah retur Int
Detail Retur Pembelian (
KdReturPembelian Kode retur pembelian NOT NULL, KdBarang Kode barang NOT NULL, QtyRetur Jumlah retur NOT NULL, CONSTRAINT PK_TrDetailReturBeli
PRIMARY KEY (KdReturPembelian, KdBarang),
CONSTRAINT FK_TrDetailReturBeli1
FOREIGN KEY (KdReturPembelian) REFERENCES Tr_ReturPembelian (KdReturPembelian) ON DELETE CASCADE ON UPDATE
CASCADE,
CONSTRAINT FK_TrDetailReturBeli2
FOREIGN KEY (KdBarang) REFERENCES M s_Barang (KdBarang) ON DELETE NO ACTION ON UPDATE NO ACTION,
CHECK (QtyRetur >= 1) );
• DBDL untuk Penjualan
Domain Kode penjualan Varchar (10) Domain Kode karyawan Varchar (10) Domain Kode pelanggan Varchar (50) Domain Tanggal penjualan Datetime Domain Tipe barang Varchar (10) Domain Tanggal jatuh tempo kredit Datetime
Penjualan (
KdPenjualan Kode penjualan NOT NULL, KdKaryawan Kode karyawan NOT NULL, KdPelanggan Kode pelanggan NOT NULL, Tanggal Tanggal Penjualan NOT NULL,
Tipe Tipe barang NOT NULL,
TglJatuhTempo Tanggal jatuh tempo kredit NOT NULL, PRIMARY KEY (KdPenjualan)
CONSTRAINT FK_TrPenjualan1
FOREIGN KEY (KdKaryawan) REFERENCES M s_Karyawan
(KdKaryawan) ON DELETE NO ACTION ON UPDATE CASCADE,
CONSTRAINT FK_TrPenjualan2 \
FOREIGN KEY (KdPelanggan) REFERENCES M s_Pelanggan
CONSTRAINT TrPenjualan3 CHECK (TglJatuhTempo > GETDATE())
);
• DBDL untuk Detail Penjualan
Domain Kode penjualan Varchar (10) Domain Kode barang Varchar (10)
Domain Jumlah Int
Detail Penjualan (
KdPenjualan Kode penjualan NOT NULL, KdBarang Kode barang NOT NULL, Qty Jumlah NOT NULL,
CONSTRAINT PK_TrDetailPenjualan PRIMARY KEY (KdPenjualan, KdBarang),
CONSTRAINT FK_TrDetailPenjualan1
FOREIGN KEY (KdPenjualan) REFERENCES Tr_Penjualan (KdPenjualan) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT FK_TrDetailPenjualan2
FOREIGN KEY (KdBarang) REFERENCES M s_Barang (KdBarang) ON DELETE NO ACTION ON UPDATE CASCADE,
CONSTRAINT TrDetailPenjualan1 CHECK (Qty >= 1)
• DBDL untuk Retur Penjualan
Domain Kode retur penjualan Varchar (10) Domain Kode penjualan Varchar (10) Domain Kode karyawan Varchar (10) Domain Kode tanggal Datetime Domain Kode status Varchar (10) Retur Penjualan (
KdReturPenjualan Kode retur penjualan NOT NULL, KdPenjualan Kode penjualan NOT NULL, KdKaryawan Kode karyawan NOT NULL,
Tanggal Tanggal NOT NULL,
Status Status NOT NULL,
PRIMARY KEY (KdReturPenjualan)
CONSTRAINT FK_TrReturPenjualan1 FOREIGN KEY (KdPenjualan) REFERENCES Tr_Penjualan (KdPenjualan) ON DELETE CASCADE ON UPDATE CASCADE );
• DBDL untuk Detail Retur Penjualan
Domain Kode retur penjualan Varchar (10) Domain Kode barang Varchar (10) Domain Jumlah retur Int
Retur Penjualan (
KdBarang Kode barang NOT NULL, QtyRetur Jumlah retur NOT NULL, CONSTRAINT PK_TrDetailReturJual
PRIMARY KEY (KdReturPenjualan, KdBarang), CONSTRAINT FK_TrDetailReturJual1
FOREIGN KEY (KdReturPenjualan) REFERENCES
Tr_ReturPenjualan (KdReturPenjualan) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT FK_TrDetailReturJual2
FOREIGN KEY (KdBarang) REFERENCES M s_Barang (KdBarang) ON DELETE NO ACTION ON UPDATE CASCADE,
CONSTRAINT TrDetailReturJual1 CHECK (QtyRetur >= 1)
);
• DBDL untuk Telpkaryawan
Domain No telp karyawan Int
Domain KdKaryawan Varchar(10) Telpkaryawan (
Telpkaryawan No telp karyawan NOT NULL, Kdkaryawan Kodekaryawan NOT NULL, PRIMARY KEY (Telpkaryawan),
FOREIGN KEY (Kdkaryawan) REFERENCES Karyawan (Kdkaryawan) ON UPDATE CASCADE ON DELETE SET NULL
);
• DBDL untuk Telppelanggan
Domain No telp pelanggan Int
Domain Kdpelanggan Varchar(10) Telppelanggan (
Telppelanggan No telp pelanggan NOT NULL, Kdpelanggan Kodepelanggan NOT NULL, PRIMARY KEY (Telppelanggan),
FOREIGN KEY (Kdpelanggan) REFERENCES Pelanggan (Kdpelanggan) ON UPDATE CASCADE ON DELETE SET NULL
);
• DBDL untuk Telpsupplier
Domain No telp supplier Int
Domain Kdsupplier Varchar(10) Telpsupplier (
Telpsupplier No telp supplier NOT NULL, Kdsupplier Kodesupplier NOT NULL, PRIMARY KEY (Telpsupplier),
FOREIGN KEY (Kdsupplier) REFERENCES supplier (Kdsupplier) ON UPDATE CASCADE ON DELETE SET NULL
);