数据完整性

数据完整性

强制数据完整性可确保数据库中的数据质量。例如,如果输入了 employee_id 值为 123 的职员,那么该数据库不应允许其他职员使用同一 ID 值。如果计划将 employee_rating 列的值范围设定为从 1 到 5,则数据库不应接受 6。如果表有一 dept_id 列,该列存储职员的部门编号,则数据库应只允许接受公司中的有效部门编号。

对表进行计划有两个重要步骤:标识列的有效值和确定如何强制列中的数据完整性。数据完整性有四种类型:

  • 实体完整性

  • 域完整性

  • 引用完整性

  • 用户定义完整性
实体完整性

实体完整性将行定义为特定表的唯一实体。实体完整性强制表的标识符列或主键的完整性(通过索引、UNIQUE 约束、PRIMARY KEY 约束或 IDENTITY 属性)。

域完整性

域完整性是指给定列的输入有效性。强制域有效性的方法有:限制类型(通过数据类型)、格式(通过 CHECK 约束和规则)或可能值的范围(通过 FOREIGN KEY 约束、CHECK 约束、DEFAULT 定义、NOT NULL 定义和规则)。

引用完整性

在输入或删除记录时,引用完整性保持表之间已定义的关系。在 Microsoft® SQL Server™ 2000 中,引用完整性基于外键与主键之间或外键与唯一键之间的关系(通过 FOREIGN KEY 和 CHECK 约束)。引用完整性确保键值在所有表中一致。这样的一致性要求不能引用不存在的值,如果键值更改了,那么在整个数据库中,对该键值的所有引用要进行一致的更改。

强制引用完整性时,SQL Server 禁止用户进行下列操作:

  • 当主表中没有关联的记录时,将记录添加到相关表中。

  • 更改主表中的值并导致相关表中的记录孤立。

  • 从主表中删除记录,但仍存在与该记录匹配的相关记录。

例如,对于 pubs 数据库中的 salestitles 表,引用完整性基于 sales 表中的外键 (title_id) 与 titles 表中的主键 (title_id) 之间的关系。

用户定义完整性

用户定义完整性使您得以定义不属于其它任何完整性分类的特定业务规则。所有的完整性类型都支持用户定义完整性(CREATE TABLE 中的所有列级和表级约束、存储过程和触发器)。

posted on 2008-04-25 15:27  treasurelife  阅读(619)  评论(0编辑  收藏  举报

导航