目录
🎗一、实体完整性
示例:定义主键
🎊二、参照完整性
示例:定义外键
🎀三、域完整性
示例:定义非空和唯一约束
🎁四、用户定义的完整性
示例:定义自定义约束
🎟五、级联更新和级联删除
示例:定义级联更新和级联删除
六、总结
七、注意事项
在数据库管理中,数据的准确性和可靠性至关重要。数据库完整性约束是一组规则,用于强制执行数据的准确性和可靠性。本文将详细介绍数据库中的四种主要完整性约束:实体完整性、参照完整性、域完整性和用户定义的完整性。
🎗一、实体完整性
实体完整性确保表中的每行都是唯一的,通常通过主键来实现。
示例:定义主键
CREATE TABLE Employees (EmployeeID INT PRIMARY KEY,FirstName VARCHAR(50),LastName VARCHAR(50),BirthDate DATE
);
🎊二、参照完整性
参照完整性确保一个表中的外键与另一个表中的主键相关联,从而维护数据之间的关系。
示例:定义外键
CREATE TABLE Orders (OrderID INT PRIMARY KEY,OrderDate DATE,EmployeeID INT,FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID)
);
🎀三、域完整性
域完整性确保列中的值满足特定的约束条件,如非空(NOT NULL)、唯一(UNIQUE)或检查(CHECK)。
示例:定义非空和唯一约束
CREATE TABLE Products (ProductID INT PRIMARY KEY,ProductName VARCHAR(100) NOT NULL UNIQUE,Price DECIMAL(10, 2) CHECK (Price > 0)
);
🎁四、用户定义的完整性
用户定义的完整性是针对特定应用需求的约束,可以包括各种业务规则。
示例:定义自定义约束
CREATE TABLE Reservations (ReservationID INT PRIMARY KEY,CustomerID INT,RoomNumber INT,ReservationDate DATE,FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID),CHECK (RoomNumber > 0 AND RoomNumber < 101) -- 假设房间号在1到100之间
);
🎟五、级联更新和级联删除
当参照完整性涉及到外键时,可能需要处理级联更新和级联删除的情况。
示例:定义级联更新和级联删除
CREATE TABLE OrderDetails (OrderDetailID INT PRIMARY KEY,OrderID INT,ProductID INT,Quantity INT,FOREIGN KEY (OrderID) REFERENCES Orders(OrderID)ON UPDATE CASCADEON DELETE CASCADE,FOREIGN KEY (ProductID) REFERENCES Products(ProductID)ON UPDATE CASCADEON DELETE RESTRICT -- 可以是RESTRICT或NO ACTION,取决于业务规则
);
六、总结
数据库完整性约束是确保数据准确性和可靠性的关键工具。通过定义主键、外键、非空、唯一和检查约束,我们可以强制执行数据的完整性。此外,通过使用级联更新和级联删除,我们可以维护表之间的关系,同时保持数据的一致性。
七、注意事项
- 在设计数据库时,应仔细考虑完整性约束,以满足业务需求。
- 完整性约束可能会影响数据库的性能,特别是在高并发的环境中。
- 在修改或删除数据时,确保理解级联操作的影响,以避免数据丢失或不一致。