数据库完整性规则与约束:实体、参照及用户定义

需积分: 0 0 下载量 148 浏览量 更新于2024-08-05 收藏 566KB PDF 举报
本资源主要探讨了数据库完整性这一核心概念,包括实体完整性、参照完整性和用户定义的完整性,以及相关的完整性约束命名子句、触发器和断言等机制。完整性是确保数据库中数据准确无误的关键,防止了不正确或不合法数据的存储。 **5.1 实体完整性** 实体完整性是关系数据库模型的基础,它要求每个关系表中的主键(Primary Key)具有唯一性,并且不允许有空值。在创建表时,通过`PRIMARY KEY`定义主码,可以是列级约束或表级约束。对于多属性构成的主键,只能用表级约束定义。数据库管理系统(DBMS)会在主键上自动生成索引来快速检查主键的唯一性,避免全表扫描带来的效率问题。 **5.2 参照完整性** 参照完整性涉及到外键(Foreign Key),它是指一个表中的字段引用另一个表的主键。在`CREATE TABLE`语句中使用`FOREIGN KEY`和`REFERENCES`短语来定义外键约束。参照完整性默认拒绝插入或修改导致外键不一致的操作,即外键值必须存在于被引用表的主键中。允许外键值为空,但需注意这可能引发参照完整性冲突。 **5.3 用户定义的完整性** 用户定义的完整性是指特定应用领域的数据约束,它超出了标准的实体和参照完整性。用户可以通过`NOT NULL`来确保列值非空,`UNIQUE`来确保列值唯一,或者使用`CHECK`来定义列值必须满足的特定布尔表达式,实现更复杂的业务规则验证。此外,还可以定义元组级别的约束,限制不同属性间的取值关系。 **5.4 完整性约束命名子句** 完整性约束命名子句允许用户为约束赋予一个特定的名字,方便后续管理和查询。这有助于在需要时修改或删除约束,而不会影响到数据的其他部分。 **5.5 域中的完整性限制** 域完整性限制指的是对某一列值范围的约束,比如限定数值类型、长度或格式等,确保输入的数据符合特定标准。 **5.6 触发器** 触发器是一种特殊的存储过程,当满足特定条件(如INSERT、UPDATE或DELETE操作)时自动执行。定义触发器通常包含定义触发事件、指定触发时机(如BEFORE或AFTER)以及执行的动作。激活触发器时,DBMS会自动调用并执行触发器内的代码,用于实施额外的业务逻辑或确保额外的完整性规则得到遵守。 **5.6.1 定义触发器** 定义触发器的语法通常包括指定触发事件、触发时机以及执行的SQL语句。 **5.6.2 激活触发器** 当满足触发器定义的触发条件时,DBMS会自动激活触发器执行相关操作。 **5.6.3 删除触发器** 如果不再需要某个触发器,可以通过相应的SQL语句来删除。 **5.7 断言(Assertion)** 断言是数据库中的一种声明,用于声明一个特定的条件在整个数据库中始终为真。如果条件不再满足,则断言失败,可以用来进一步增强数据的完整性。 总结来说,数据库完整性是数据库系统的核心组成部分,通过各种约束和机制保证了数据的准确性和一致性,确保了数据库的可靠性。理解和正确运用这些完整性概念对于设计和管理高效、安全的数据库至关重要。