1、实验 4 完整性约束数据库的完整性是指数据的正确性和相容性。例如,在性别字段中,只能取 “ 男 ” 或 “ 女 ” 两个值中的一个,没有第三个可取值;学生的学号必须唯一。在 SQL Server 2000中,系统提供多种强制数据完整性的机制,以便确保数据库中的数据质量。 【 知识要点 】1完整性约束作用的对象关系:若干元组间、关系集合上以及关系之间的联系的约束。元组:元组中各个字段间的联系的约束。列:列的类型、取值范围、精度、唯一性、为空性、缺省定义、 CHECK约束、主键约束、外键约束2完整性约束类型实体完整性;域完整性;参照完整性;用户定义完整性。3实体完整性实体完整性将行定义为特定表的唯
2、一实体。实体完整性作用的对象是列,强制表的标识符列或主键的完整性(通过 UNIQUE 约束、 PRIMARY KEY 约束或 IDENTITY 属性)。实验 4 完整性约束4域完整性 域完整性作用的对象是列,是指给定列的输入有效性。强制域有效性的方法有:限制类型(通过数据类型)、格式(通过 CHECK 约束和规则)或可能值的范围(通过 FOREIGN KEY 约束、 CHECK 约束、 DEFAULT 定义、 NOT NULL 定义和规则)。5引用完整性引用完整性作用的对象是关系。在输入或删除记录时,引用完整性保持表之间已定义的关系。在 Microsoft SQL Server 2000 中,
3、引用完整性基于子表外键与主表主键之间或子表外键与主表唯一键之间的关系(通过 FOREIGN KEY 和 CHECK 约束)。引用完整性确保键值在所有表中一致。这样的一致性要求不能引用不存在的值,如果键值更改了,那么在整个数据库中,对该键值的所有引用要进行一致的更改。6用户定义完整性用户定义完整性使您可以定义不属于其它任何完整性分类的特定业务规则,作用的对象可以是列,也可以是元组或关系。所有的完整性类型都支持用户定义完整性,如: CREATE TABLE 中的所有列级和表级约束、存储过程和触发器。实验 4 完整性约束7 CHECK约束CHECK 约束通过限制输入到列中的值来强制域的完整性。 CH
4、ECK 约束从逻辑表达式返回结果是 TRUE还是 FALSE来判断。例如,通过创建 CHECK 约束可将本科生的 Age列的取值范围限制在 14岁至 40岁之间,从而防止输入的年龄超出正常的本科生范围。其逻辑表达式为:Age = 14 AND Age = 40 ( 1)创建和修改 CHECK 约束作为表定义的一部分在创建表时创建;添加到现有表中。表和列可以包含多个 CHECK 约束。修改或删除现有的 CHECK 约束。例如,可以修改表中列的 CHECK 约束的表达式。( 2) CHECK约束的设置在现有表中添加 CHECK 约束时,该约束可以仅作用于新数据也可以同时作用于现有的数据。默认设置为
5、 CHECK 约束同时作用于现有数据和新数据。( 3)禁用 CHECK 约束下列情况可以禁用现有 CHECK 约束: INSERT 和 UPDATE 语句,可以允许不经约束确认修改表中的数据。在执行 INSERT 和 UPDATE 语句时,如果新数据违反约束或约束应只适用于数据库中已有的数据,那么可禁用 CHECK 约束。复制处理。如果该约束为源数据库所特有,则在复制时请禁用 CHECK 约束。实验 4 完整性约束8规则( Rule)所谓规则( Rule)是指当你对表做插入或更新操作时,输入值或新数据必须符合对应列预先设定的条件。如果不符合, SQL Server就不会让该输入值插入到表内或不
6、允许用该新数据更新原有数据。当某个规则被创建后,有一个唯一的名字,并且成为数据库中的一个对象。用户要使用规则时,需要把规则绑定至表中相应的一列或多列上或某个用户定义的数据类型上。不使用时再将绑定解除。9缺省值( Default)所谓缺省值( Default)是指当你向表中插入数据时,如果某些列未明确给出插入值,那么 SQL Server将用预先在这些列上定义的值作为插入值。当某个缺省值被创建后,有一个唯一的名字,并且成为数据库中的一个对象。用户要使用缺省值时,需要把缺省值对象绑定至表中相应的一列或多列上或某个用户定义的数据类型上。不使用时再将绑定解除。【 实验目的 】认识完整性约束对数据库的重
7、要性;掌握实体完整性的创建、修改、维护;掌握域完整性的创建、修改、维护;掌握参照完整性的创建、修改、维护;掌握用户定义的完整性的创建、修改、维护。实验 4 完整性约束实验 4 1 实体完整性约束 【 实验目的 】掌握用企业管理器创建 PRIMARY KEY 约束;掌握用 SQL创建 PRIMARY KEY 约束;掌握用企业管理器创建 UNIQUE约束;掌握用 SQL创建 UNIQUE约束;掌握用 SQL创建 IDENTITY 属性列。【 实验内容 】用企业管理器为数据表 S创建 PRIMARY KEY 约束;用企业管理器创建新表 TEST_SC,并创建 PRIMARY KEY 约束, TEST
8、_SC表的结构定义如下:表名: TEST_SC包含的列如下:学号: SNO CHAR( 2); 课号: CNO CHAR( 2);成绩: SCORE TINYINT;主键:( SNO, CNO)。 实验 4 完整性约束用 SQL为现有表 T在 TNO列上创建 PRIMARY KEY 约束;用 SQL创建新表 TEST_C,并以列约束形式创建 PRIMARY KEY 约束。 TEST_C表的结构定义如下: 表名: TEST_C包含的列如下:课号: CNO CHAR( 2) 课名: CN CHAR( 2)课时: CT TINYINT主键: CNO主键约束名: PK_TEST_C用 SQL创建新表
9、TEST_TC,并以表约束形式创建 PRIMARY KEY 约束。 TEST_TC表的结构定义如下:表名: TEST_TC包含的列如下:教师号: TNO CHAR( 2) 课号: CNO CHAR( 2)主键:( TNO, CNO)主键约束名: PK_TEST_TC实验 4 完整性约束用企业管理器为现有表 TEST_TC中的 CNO和 TNO列创建 “ UNIQUE约束 ” ;用 SQL为现有表 C中的 CN列创建 “ UNIQUE约束 ” ;用企业管理器为现有表 TEST_SC增加新列 ID_SC,并创建此列属性为 IDENTITY;用 SQL为现有表 TEST_TC增加新列 ID_TC,并
10、创建此列属性为 IDENTITY;用企业管理器删除表 C中 CN列的 UNIQUE约束;用 SQL为删除现有表 TEST_SC的主键 PK_TEST_SC和取消 ID_SC列的标识属性。【 实验步骤 】1.用企业管理器为数据表 S创建 PRIMARY KEY 约束在表设计器中为 SNO创建主键 实验 4 完整性约束2用企业管理器创建新表 TEST_SC,并创建 PRIMARY KEY 约束创建主键( SNO, CNO)3用 SQL为现有表 T在 TNO列上创建 PRIMARY KEY 约束用 SQL为表 C创建 PRIMARY KEY 表 T的主键约束实验 4 完整性约束4用 SQL创建新表 TEST_C,并以列约束形式创建 PRIMARY KEY 约束创建 TEST_C表及其主键创建的新表 TEST_C及其主键实验 4 完整性约束5用 SQL创建新表 TEST_TC,并以表约束形式创建 PRIMARY KEY 约束创建的新表 TEST_TC及其主键对象创建新表 TEST_TCJ及其主键