数据库的完整性是保证数据正确性和一致性的关键。它防止数据库中存在不符合业务逻辑或语义规则的数据,避免错误信息的输入和输出。数据库的完整性和安全性不同,安全性关注的是防止非法用户的访问和恶意操作,而完整性则关注数据内容的正确性。
为了维护数据库完整性,DBMS提供了完整性约束条件的机制,这些约束条件是数据语义的表达,由用户定义,并在数据模式定义时设定为模式的一部分。当用户操作可能违反这些约束时,DBMS会拒绝执行相应的操作。
实体完整性:确保每个表都有唯一的主键,用于标识每条记录。
参照完整性:确保表间的外键关系正确,外键值必须在参照表的主键中存在或为NULL(如果允许)。
用户定义完整性:根据特定的业务规则或政策定义的约束条件,如某字段的值必须在一定范围内。
域完整性(列完整性):确保表中每列的值满足特定条件,如数据类型、数据格式或值的范围。
当修改数据库状态的操作(如INSERT、UPDATE、DELETE)发生时,DBMS检查是否违反了完整性约束。
如果操作违反完整性约束,DBMS会拒绝执行该操作并返回错误。
现代DBMS提供工具和方法来定义和自动检查完整性约束。
数据库的完整性约束条件是对数据的质量和逻辑正确性的保护。它们在不同级别上施加限制,确保数据的准确性和可靠性。
这些约束涉及单个列的属性和规则。
涉及对列定义或值的修改。
元组级约束涉及单个记录内部列值间的关系。
涉及对单个记录的修改,应满足某种约束条件。
涉及一个或多个关系内部不同记录间的关系。常见的关系约束有以下四种:
涉及整个关系或多个关系的状态变化。
数据库完整性控制确保数据的正确性和一致性,防止无效或错误的数据操作。这涉及到定义完整性约束条件、监测用户操作、以及在违反约束条件时采取适当的措施。
完整性控制功能主要包括:
处理违反完整性约束的情况时,DBMS通常采取以下措施:
对实体完整性和用户定义完整性规则的违反:通常拒绝执行违反这些规则的操作。
对参照完整性的违反:处理方式可能更复杂,包括接受操作并执行附加操作,以维持数据库的正确状态。
级联删除:在删除被参照关系的元组时,同时删除参照关系中所有相关元组。
受限删除:只有在没有相关元组时才允许删除操作。
删除值空置:将相关元组的外码值置为空值。
级联修改:同时修改被参照关系中的主码和参照关系中的相关外码值。
受限修改:只在没有相关元组时允许修改操作。
修改值空置:将相关元组的外码值置为空值。
外码接受空值:是否接受空值取决于应用环境的语义。