数据完整性基础知识
指定表域的第一步是确定列数据类型。域是列中允许的值的集合。域不仅包括强制数据类型的概念,还包括列中允许的值。例如,Production.Product 表中的 Color 列的域包括 nvarchar 数据类型和大小限制(15 个字符)。该域还可指定列中所允许的字符串,如 Red、Blue、Green、Yellow、Brown、Black、White、Teal、Gray 和 Silver。有关详细信息,请参阅数据类型(数据库引擎)。
空值
列可以接受空值,也可以拒绝空值。在数据库中,NULL 是一个特殊值,表示未知值的概念。NULL 不同于空字符或 0。实际上,空字符是一个有效的字符,0 是一个有效的数字。NULL 只是表示此值未知这一概念。NULL 也不同于零长度字符串。如果列定义中包含 NOT NULL 子句,则不能为该行插入值为 NULL 的行。如果列定义中仅包含 NULL 关键字,则接受 NULL 值。
列中允许 NULL 值可以增加使用该列的所有逻辑比较的复杂程度。ISO 标准规定:对 NULL 值进行的任何比较的结果都不能等于 TRUE 或 FALSE,而应等于 UNKNOWN。此规定在比较运算符中引入了三值逻辑,而要正确运用该逻辑很困难。
约束、规则、默认值和触发器
表列中除了具有数据类型和大小属性之外,还有其他属性。其他属性是保证数据库中数据完整性和表的引用完整性的重要部分。
数据完整性是指列中每个事件都有正确的数据值。数据值的数据类型必须正确,并且数据值必须位于正确的域中。
引用完整性指示表之间的关系得到正确维护。一个表中的数据只应指向另一个表中的现有行,不应指向不存在的行。
下列对象用于维护两种完整性: