在用INSERT、DELETE、UPDATE语句修改数据库内容时,数据的完整性可能遭到破坏,为了保证存放数据的正确性和一致性,SQL Server对数据施加了一个或多个数据完整性约束。这些约束限制了对数据库的数据值,或者限制了数据库修改所产生的数据值,或限制了对数据库中某些值的修改。
在SQL Server关系数据库中,主要有以下3类数据完整性:实体完整性(保证表中所有行唯一)参照完整性(主健和外健关系维护,它涉及两个或两个以上的表的数据的一致性维护)域完整性(某列有效性的集合,是对业务管理或是对数据库数据的限制)。在报务器端有两种方法实现数据完整性:定义reat Table 完整性约束及定义规则、缺省、索引和触发器。
1.1 定义 reatetable 完整性约束
此方法是在创建数据库表的命令语句中,加入表级约束或列级来实现数据完整性。如在建表语句中加入非空(nt null)约束、缺省(default)约束、唯一码(unique)约束、主键码(priary key)约束、外键码(frEign key)约束、校验(hek)约束等。它的主要特点是:定义简单、安全可靠、维护方便。
1.1.1 非空约束、缺省约束和校验约束
非空约束限定了列值不能为空值缺省约束指定当向数据库插入数据时,若用户没有明确给出某列的值时,SQL Server 自动输入预定值校验约束则用来限定列的值域范围。
例如,在创建图书登记表中,限定登记日期、图书类别编码、登记号、中文名等列值不允许为空值页数的缺省值为1单价的缺省值为0图书状态只能为:“在馆”、“借出”、“丢失”之一。
1.1.2 主键约束和唯一约束
主键约束和唯一约束,均为指定的列建立唯一性索引,即不允许唯一索引的列上有相同的值。主键约束更严格,不但不允许有重复值,而且也不允许有空值。
例如,在科室编码表,对列ksb创建主键约束,对ks创建唯一约束。
1.1.3 外键约束
外键约束又称参照完整性约束,用来限定本表外键码列值与相关表主键码字段列值的匹配,即保证相关数据的一致性。
例如,在创建医师编码表中,医生所属科室 ssks 为外键码,限定它与科室编码表中的科室编码 ksb 列值一致。
1.2 定义规则、缺省、索引和触发器
在数据库表的创建命令语句中定义约束的方法,虽然具有简单、方便、安全等特点,但它只对特定的表有效,不能应用到其他表,并且只能使用 alter table 命令修改或删除约束,缺乏一定的灵活性。与此相反,在数据库中创建与表相对独立的规则、索引和触发器对象,也能实现数据完整性,而且能实施更复杂、更完善的数据完整性约束。它的主要特点是功能强、效率高、维护方便。
1.2.1 定义规则
规则类似于表定义中的校验约束,用来限定列的值域范围。但它不限定于特定表,可以绑定到其他表的列或用户自定义的数据类型中使用。
例如,在定义药品的编码规则Rul-ypb,可绑定到其他表中。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)