关系的完整性分类
- 实体完整性(Entity Integrity):实体完整性约束确保表中的每一行都具有唯一的标识符,通常是通过主键约束来实现。主键约束要求表中的每个记录都具有唯一的主键值,且主键值不能为空。
- 参照完整性(Referential Integrity):参照完整性约束用于确保表之间的关联关系的有效性。它通常通过外键约束来实现。外键约束要求一个表中的外键值必须匹配另一个表中的主键值,或者为空(如果允许空值)。这样可以确保在关联的表之间保持一致性,防止无效的引用关系。
- 用户自定义完整性(User-defined Integrity):用户定义的完整性约束允许数据库管理员或应用程序开发人员定义特定于业务需求的约束条件。这些约束条件可以通过检查约束、触发器或存储过程来实现。例如,可以定义一条检查约束来确保某列的值必须在特定范围内,或者定义一个触发器来在数据插入、更新或删除时执行自定义的验证逻辑。
通过应用这些完整性约束,数据库可以强制执行数据的一致性、有效性和合法性。违反完整性约束的操作将导致数据库引发错误或拒绝操作,从而防止数据的损坏或不一致。
代码示例
以下是具体的代码示例,展示如何添加和修改各种约束:
- 添加主键约束(Primary Key Constraint):
CREATE TABLE TableName ( Column1 INT, Column2 VARCHAR(50), Column3 INT, PRIMARY KEY (Column1) );
ALTER TABLE TableName ADD CONSTRAINT PK_TableName PRIMARY KEY (Column1);
|
- 添加唯一约束(Unique Constraint):
CREATE TABLE TableName ( Column1 INT, Column2 VARCHAR(50), Column3 INT, UNIQUE (Column2) );
ALTER TABLE TableName ADD CONSTRAINT UC_TableName UNIQUE (Column2);
|
- 添加外键约束(Foreign Key Constraint):
CREATE TABLE Orders ( OrderID INT PRIMARY KEY, CustomerID INT, FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID) );
ALTER TABLE Orders ADD CONSTRAINT FK_Orders_Customers FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID);
|
- 添加非空约束(Not Null Constraint):
CREATE TABLE TableName ( Column1 INT NOT NULL, Column2 VARCHAR(50) NOT NULL, Column3 INT );
ALTER TABLE TableName ALTER COLUMN Column1 SET NOT NULL;
|
- 添加检查约束(Check Constraint):
CREATE TABLE TableName ( Column1 INT, Column2 VARCHAR(50), Column3 INT CHECK (Column3 > 0) );
ALTER TABLE TableName ADD CONSTRAINT CHK_TableName CHECK (Column3 > 0);
|
上述示例中的代码是一般性的示例,具体的语法和方法可能会因所使用的数据库管理系统而有所不同。
鸣谢
数据库探索之旅——完整性约束条件_列级完整性约束条件和表级完整性约束条件-CSDN博客