Gambar 3.23 Entity Relational Diagram Model Data Logikal Sesudah Normalisasi
3.3.1.1.5. Menentukan batasan integritas
Batasan integritas adalah batasan yang diharapkan dapat melindungi database menjadi tidak konsisten. Ada lima batasan integritas, yaitu:
1. Data yang diperlukan
Beberapa atribut harus selalu memiliki nilai yang valid.Dengan kata lain, atribut tersebut tidak boleh bernilai null.Batasan-batasan ini telah diidentifikasi pada perancangan konseptual tahap ke 3 (Sub bab 3.3.1.1 point 3).
2. Batasan domain atribut
Setiap atribut memiliki domain, yang berarti satu set nilai yang legal. Batasan ini telah diidentifikasi pada perancangan konseptual tahap ke 4 (Sub bab 3.3.1.1 point 4)
3. Batasan entity
Batasan entity berarti primary key tidak boleh bernilai null.Batasan-batasan ini telah diidentifikasi pada perancangan konseptual tahap ke 5 (Sub bab 3.3.1.1 point 5).
4. Batasan referensial
Staff (StaffID, StaffName, Address, Phone, Email, Password, RoleID) Primary Key StaffID
Foreign Key RoleID references Role(RoleID)
ON UPDATE NO ACTION ON DELETE NO ACTION Role (RoleID, RoleName)
Primary Key RoleID
Client (ClientID, ClientName, Address, Phone, Email, Fax) Primary Key ClientID
Supplier (SupplierID, SupplierName, Address, Phone, Fax, Email, SupplierTypeID) Primary Key SupplierID
Foreign Key SupplierTypeID references SupplierType (SupplierTypeID) ON UPDATE NO ACTION ON DELETE NO ACTION
SupplierType (SupplierTypeID, SupplierTypeName) Primary Key SupplierTypeID
AccountBank (AccountID, AccountNumber, BankID) Primary Key AccountID
Foreign Key BankID references Bank (BankID)
ON UPDATE NO ACTION ON DELETE NO ACTION Bank (BankID, BankName)
Primary Key BankID
Material (MaterialID, MaterialName, Unit, Stock, MaterialTypeID) Primary Key MaterialID
Foreign Key MaterialType references MaterialType (MaterialTypeID) ON UPDATE NO ACTION ON DELETE NO ACTION
MaterialType (MaterialTypeID, MaterialTypeName) Primary Key MaterialTypeID
PaymentType (PaymentTypeID, PaymentTypeName) Primary Key PaymentTypeID
StockAdjustmentHeader (StockAdjustmentID, StaffID,
StockAdjustmentDocNumber, StockAdjustmentDate, StockAdjustmentNote) Primary Key StockAdjustmentID
Foreign Key StaffID references Staff (StaffID)
ON UPDATE NO ACTION ON DELETE NO ACTION
StockAdjustmentDetail ( StockAdjusmentID, MaterialID, Qty) Primary KeyStockAdjustmentID
Foreign Key MaterialID references Material (MaterialID) ON UPDATE NO ACTION ON DELETE NO ACTION Project (ProjectID, ClientID, ProjectName, ProjectAddress) Primary Key ProjectID
Foreign Key ClientID references Client (ClientID) ON UPDATE NO ACTION ON DELETE NO ACTION RAB (RAB_ID, StaffID, ProjectID, RAB_date, RAB_Amount) Primary Key RAB_ID
Foreign Key StaffID references Staff (StaffID)
ON UPDATE NO ACTION ON DELETE NO ACTION Foreign Key ProjectID references Project (ProjectID) ON UPDATE NO ACTION ON DELETE NO ACTION SubRABHeader (SubRAB_ID,RAB_ID, SubRABName) Primary Key SubRAB_ID
Foreign Key RAB_ID references RAB (RAB_ID) ON UPDATE NO ACTION ON DELETE NO ACTION SubRABDetail (SubRAB_ID, MaterialID, Qty, UnitPrice) Primary Key SubRAB_ID
Foreign Key MaterialID references Material (MaterialID) ON UPDATE NO ACTION ON DELETE NO ACTION
ProjectOrder(ProjectOrderID, ProjectID, StaffID, ProjectOrderDocNumber, ProjectOrderDate, ProjectOrderNote, StartDate, EndDate, TotalTerm)
Primary Key ProjectOrderID
Foreign Key ProjectID references Project (ProjectID) ON UPDATE NO ACTION ON DELETE NO ACTION Foreign Key StaffID references Staff (StaffID)
ON UPDATE NO ACTION ON DELETE NO ACTION
MaterialUsedHeader (MaterialUsedID, ProjectOrderID, StaffID, MaterialUsedDocNumber, MaterialUsedDate, MaterialUsedNote, CarNo, DriverName,
ProjectOrderDocNumber) Primary Key MaterialUsedID
Foreign Key ProjectOrderID references ProjectOrder (ProjectOrderID) ON UPDATE NO ACTION ON DELETE NO ACTION
Foreign Key StaffID references Staff (StaffID)
ON UPDATE NO ACTION ON DELETE NO ACTION MaterialUsedDetail (MaterialUsedID, MaterialID, Qty) Primary Key MaterialUsedID
Foreign Key MaterialID references Material (MaterialID) ON UPDATE NO ACTION ON DELETE NO ACTION
ProjectBill(ProjecBillID, ProjectOrderID, StaffID, ProjectBillDocNumber, ProjectBillDate, ProjectBillNote, ProjectBillDueDate, TermOfPayment, Bill_Amount, PPN)
Primary Key ProjectBillID
Foreign Key ProjectOrderID references ProjectOrder(ProjectOrderID) ON UPDATE NO ACTION ON DELETE NO ACTION
Foreign Key StaffID references Staff(StaffID)
ON UPDATE NO ACTION ON DELETE NO ACTION
ProjectPayment(ProjectPaymentID, ProjectBillID, AccountID, StaffID, ProjectPaymentDocNumber, ProjectPaymentDate, ProjectPaymentNote, PaymentTypeID)
Primary Key ProjectPaymentID
Foreign Key ProjectBillID references ProjectBill(ProjectBillID) ON UPDATE NO ACTION ON DELETE NO ACTION
Foreign Key AccountID references Account(AccountID) ON UPDATE NO ACTION ON DELETE NO ACTION Foreign Key StaffID references Staff(StaffID)
ON UPDATE NO ACTION ON DELETE NO ACTION
Foreign Key PaymentTypeID references PaymentType (PaymentTypeID) ON UPDATE NO ACTION ON DELETE NO ACTION
ProjectAddendumHeader (ProjectAddID, ProjectOrderID, StaffID, ProjectAddDocNumber, ProjectAddDate, ProjectAddNote)
Foreign Key ProjectOrderID references ProjectOrder(ProjectOrderID) ON UPDATE NO ACTION ON DELETE NO ACTION
Foreign Key StaffID references Staff(StaffID)
ON UPDATE NO ACTION ON DELETE NO ACTION
ProjectAddendumDetail (ProjectAddID, MaterialID,Qty, UnitPrice, Status) Primary Key ProjectAddID
Foreign Key MaterialID references Material(MaterialID) ON UPDATE NO ACTION ON DELETE NO ACTION
AddendumBill (AddendumBillID, ProjectAddID, StaffID, AddendumBillDocNumber, AddendumBillDate, AddendumBillNote, AddendumBillDueDate, PPN)
Primary Key AddendumBillID
Foreign Key ProjectAddID references ProjectAdd(ProjectAddID) ON UPDATE NO ACTION ON DELETE NO ACTION
Foreign Key StaffID references Staff(StaffID)
ON UPDATE NO ACTION ON DELETE NO ACTION
AddendumPayment(AddendumPaymentID, AddendumBillID, AccountID, StaffID, AddendumPaymentDocNumber, AddendumPaymentDate, AddendumPaymentNote, PaymentTypeID)
Primary Key AddendumPaymentID
Foreign Key AddendumBillID references AddendumBill(AddendumBillID) ON UPDATE NO ACTION ON DELETE NO ACTION
Foreign Key AccountID references Account(AccountID) ON UPDATE NO ACTION ON DELETE NO ACTION Foreign Key StaffID references Staff(StaffID)
ON UPDATE NO ACTION ON DELETE NO ACTION
PurchaseOrderHeader(POID, SupplierID, StaffID, PODocNumber, PODate, PONote, ReceiptDate, Discount, PPN)
Primary Key POID
Foreign Key SupplierID references Supplier(SupllierID) ON UPDATE NO ACTION ON DELETE NO ACTION Foreign Key StaffID references Staff(StaffID)
ON UPDATE NO ACTION ON DELETE NO ACTION PurchaseOrderDetail (POID, MaterialID, Qty, UnitPrice)
Primary Key POID
Foreign Key MaterialID references Material(MaterialID) ON UPDATE NO ACTION ON DELETE NO ACTION
POReceiptHeader (POReceiptID, POID, StaffID, POReceiptDocNumber, POReceiptDate, POReceiptNote, CarNo, DriverName)
Primary Key POReceiptID
Foreign Key POID references PO(POID)
ON UPDATE NO ACTION ON DELETE NO ACTION POReceiptDetail (POReceiptID, MaterialID, Qty) Primary Key POReceiptID
Foreign Key MaterialID references Material(MaterialID) ON UPDATE NO ACTION ON DELETE NO ACTION
PurchaseBill(PurchaseBillID, POID, StaffID, PurchaseBillDocNumber, PurchaseBillDate, PurchaseBillNote, PurchaseBillDueDate)
Primary Key PurchaseBillID
Foreign Key POID references PO(POID)
ON UPDATE NO ACTION ON DELETE NO ACTION Foreign Key StaffID references Staff(StaffID)
ON UPDATE NO ACTION ON DELETE NO ACTION
PurchasePayment(PurchasePaymentID, PurchaseBillID, AccountID, StaffID, PurchasePaymentDocNumber, PurchasePaymentDate, PurchasePaymentNote, SupplierAccountNo, PaymentTypeID)
Primary Key PurchasePaymentID
Foreign Key PurchaseBillID references PurchaseBill(PurchaseBillID) ON UPDATE NO ACTION ON DELETE NO ACTION
Foreign Key AccountID references Account(AccountID) ON UPDATE NO ACTION ON DELETE NO ACTION Foreign Key StaffID references Staff(StaffID)
5. Batasan perusahaan
Batasan perusahaan merupakan aturan bisnis yang berpengaruh dalam dunia nyata. Dalam perancangan yang telah dibangun, tidak terdapat batasan-batasan yang diberikan perusahaan
3.3.1.1.6. Menggabungkan model data logikal ke dalam model