《2022年数据库原理与应用课后答案第13章数据库完整性.pdf》由会员分享,可在线阅读,更多相关《2022年数据库原理与应用课后答案第13章数据库完整性.pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据库完整性练习题 13 及参考答案1什么是数据完整性如果数据库不实施数据完整性会产生什么结果答:数据完整性是指数据的正确性、完备性和一致性,是衡量数据库质量好坏的重要标准。如果数据库不实施数据完整性,在用INSERT 、DELETE 、UPDATE 语句修改数据库内容时,数据的完整性可能会遭到破坏,就可能会存在下列情况:无效的数据被添加到数据库的表中,如:将学生考试成绩输入成负数;对数据库的修改不一致,如:在一个表中修改了某学生的学号,但该学生的学号在另外一个表中却没有得到修改;将存在的数据修改为无效的数据,如:将某学生的班号修改为并不存在的班级号。2数据完整性有哪几类如何实施它们分别在什么
2、级别上实施答:数据完整性分为以下3 类:(1) 域完整性: 是指一个列的输入有效性,是否允许为空值。强制域完整性的方法有:限制类型(通过设定列的数据类型)、格式(通过CHECK 约束和规则)或可能值的范围(通过 FOREIGN KEY 约束、 CHECK 约束、 DEFAULT 定义、 NOT NULL 定义和规则) 。如:学生的考试成绩必须在0100 之间,性别只能是“男”或“女”。(2)实体完整性:是指保证表中所有的行唯一。实体完整性要求表中的所有行都有一个唯一标识符。这个唯一标识符可能是一列,也可能是几列的组合,称之为主键。也就是说,表中的主键在所有行上必须取唯一值。强制实体完整性的方法
3、有:索引、 UNIQUE 约束、PRIMARY KEY 约束或IDENTITY 属性。如: student表中 sno(学号)的取值必须唯一,它第章13精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 6 页 - - - - - - - - - - 唯一标识了相应记录所代表的学生,学号重复是非法的。学生的姓名不能作为主键,因为完全可能存在两个学生同名同姓的情况。(3)参照完整性:是指保证主关键字( 被引用表 ) 和外部关键字(引用表)之的参照关系。它涉及两个或两个以上表数据的一致性维护。外键值将
4、引用表中包含此外键的记录和被引用表中主键和外键相匹配的记录关联起来。在输入、更改或删除记录时,参照完整性保持表之间己定义的关系,确保键值在所有表中一致。这样的一致性要求确保不会引用不存在的值,如果键值更改了,那么在整个数据库中,对该键值的所有引用要进行一致的更改。参照完整性是基于外键与主键之间的关系。例如学生学习课程的课程号必须是有效的课程号,表score 表(成绩表)的外键cno(课程号)将参考表course 表(课程表)中主键 cno(课程号)以实现数据完整性。域完整性、实体完整性及参照完整性分别在列、行、表上实施。数据完整性任何时候都可以实施,但对己有数据的表实施数据完整性时,系统要先检
5、查表中的数据是否满足所实施的完整性,只有表中的数据满足了所实施的完整性,数据完整性才能实施成功。3什么是主键约束什么是唯一性约束两者有什么区别答:主键约束保证某一列或一组列值的组合相对于表中的每一行都是唯一的,这些列就是该表的主键。主键不允许有重复值,也不允许有空值。唯一约束限制表中指定列上所有的非空值必须唯一,即表中任意两行在指定列上都不允许有相同的值。唯一约束和主键约束的区别是:(1)唯一约束与主键约束都为指定的列建立唯一索引,即不允许唯一索引的列上有相同的值。主键约束限制更严格,不但不允许有重复值,而且也不允许有空值。(2)唯一约束与主键约束产生的索引可以是聚簇索引也可以是非聚簇索引,但
6、在缺省情况下唯一约束产生非聚簇索引,主键约束产生聚簇索引。4创建 PRIMARY KEY 约束或 UNIQUE约束时, SQL Server 创建索引了吗与创建标准索引相比哪个更好答:创建PRIMARY KEY 约束或UNIQUE约束时, SQL Server 创建唯一性索引。与创建精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 6 页 - - - - - - - - - - 标准索引相比,通过创建PRIMARY KEY 约束或 UNIQUE 约束来创建索引更好。上机实验题8 及操作过程在上机
7、实验题7 的 factory数据库上,使用T-SQL语句完成如下各题:(1)实施 worker 表的“性别”列默认值为“男”的约束。(2)实施 salary表的“工资”列值限定在09999 的约束。(3)实施 depart表的“部门号”列值唯一的非聚集索引的约束。(4)为 worker 表建立外键“部门号” ,参考表depart 的“部门号”列。(5)建立一个规则sex: 性别 = 男 OR 性别 = 女 ,将其绑定到worker 表的“性别”列上。(6)删除( 1)小题所建立的约束。(7)删除( 2)小题所建立的约束。(8)删除( 3)小题所建立的约束。(9)删除( 4)小题所建立的约束。(
8、10)解除( 5)小题所建立的绑定并删除规则sex。操作过程(1)对应的程序如下:USE factoryGOALTER TABLE worker ADD CONSTRAINT default_sex DEFAULT 男 FOR 性别GO(2)对应的程序如下:USE factoryGO精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 6 页 - - - - - - - - - - ALTER TABLE salary ADD CONSTRAINT check_salary CHECK( 工资 0
9、AND 工资 9999)GO(3)对应的程序如下:USE factoryGOALTER TABLE depart ADD CONSTRAINT unique_depart UNIQUE NONCLUSTERED( 部门号 )GOEXEC sp_helpindex depart -显示 depart 表上的索引GO执行结果如下:index_name index_description index_keys- - -PK_depart clustered,unique,primary key located on PRIMARY 部门号unique_depart nonclustered,uniq
10、ue,unique key located on PRIMARY 部门号(4)对应的程序如下:USE factoryGOALTER TABLE worker ADD CONSTRAINT FK_worker_no FOREIGN KEY(部门号 ) REFERENCES depart(部门号 )GO(5)对应的程序如下:USE factoryGOCREATE RULE sex AS 性别 = 男 OR 性别 = 女精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 6 页 - - - - - -
11、- - - - GOEXEC sp_bindrule sex,worker.性别 GO(6)对应的程序如下:USE factoryGOALTER TABLE worker DROP CONSTRAINT default_sexGO(7)对应的程序如下:USE factoryGOALTER TABLE salary DROP CONSTRAINT check_salaryGO(8)对应的程序如下:USE factoryGOALTER TABLE depart DROP CONSTRAINT unique_departGO(9)对应的程序如下:USE factoryGOALTER TABLE wo
12、rker DROP CONSTRAINT FK_worker_noGO精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 6 页 - - - - - - - - - - (10)对应的程序如下:USE factoryGOEXEC sp_unbindrule worker.性别 GODROP RULE sexGO精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 6 页 - - - - - - - - - -