(2版数据库实验14数据完整性及答案.doc
文本预览下载声明
实验十四 数据完整性实验
一、实验目的及要求
通过本实验目的是掌握保障数据完整性的各种措施及其使用方式,能根据现实需要为数据库中数据设置各种完整性约束,保障数据库的完整性和一致性。
理解数据的完整性的概念及实施数据完整性的重要性。
掌握约束的概念及实施方法。
掌握规则的概念及实施方法。
掌握默认值的概念及实施方法。
掌握参照完整性的含义及其实施方法。
二、实验原理及背景知识
(一)了解数据完整性概念
数据完整性是指数据的精确性和可靠性,是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作的措施。完整性分为:实体完整性、参照完整性和用户自定义完整性。
(二)SQL Server对完整性的保障措施
1、主键:保障实体完整性。
2、外键:通过外键关系保障参照完整性。
3、自定义完整性
(1)约束:对字段进行域进行限制的,主要有:UNIQUE、check约束、NOT NULL约束。
(2)规则对象:可以实现比约束复杂的约束,需要创建并绑定列使用。
(3)默认值对象:便于数据输入,需要创建并绑定使用。
4、触发器
是数据库对象,可以用来保障数据库完整性,本实验不涉及,可参照实验十一。
(三)数据库关系图
用来体现数据库中各种表之间关系的对象,也用来设置并体现所有的参照完整性。
三、实验内容及步骤
(一)实体完整性设置
SQL Server 2005中实体完整性通过设置主键来实现。具体设置方法参照实验二中内容。主键默认建立聚簇索引,关于主键索引问题参照实验七中的相关内容。
(二)SQL Server参照完整性设置
1、定位需要建立外键关系的外键所在表,然后进入表设计界面。在需要建立外键关系的字段上点击右键,选择“关系”,即可进入外键关系编辑器。点击“添加”即可添加一个外键关系,然后进行相应属性设置即可,如实验图14-1所示。
实验图14-1 创建外键界面 实验图14-2 设置主外键关系
2、在外键关系编辑窗口的右侧属性中,主要设置“标识”中的“名称”和“表和列规范”中信息。在设置“表和列规范”时不能直接在下方修改,需要点击“表和列规范”行后面的浏览按钮,进入表和列窗口进行选择设置,如上图14-2所示。所有设置完成后点击“关闭”按钮既可以完成。
3、最后还需要设置外键规则,在实验图14-3所示的窗口中展开“INSERT和UPDATE规范”,然后进行设置。层叠表示级联操作,当主键值删除之后,对应的外键记录也删除;当主键值更新之后,对应的外键值也自动更新。
实验图14-3 设置外键关系属性界面
4、使用SQL语句设置外键约束
(三)数据表级自定义完整性设置
1、设置惟一约束(以student表中sName字段为例)
(1)表设计器中,右击需要设置为唯一约束的字段sName,选择“索引/键”,也可以直接单击工具栏中的“管理索引/键”按钮进入“索引/键”属性对话框,如实验图14-4所示。
(2)在索引/键设计器中点击“添加”按钮,建立新的设置,并在右侧的属性框中分别输入信息:“名称”为IX_student_sname;“列”选择sName;“是唯一的”选择是。其中列的选择利用右边的浏览按钮在弹出的“索引列”窗口中进行选择,如实验图14-5所示。完成所有设置后点击关闭即可完成唯一约束设置。
实验图14-4 创建唯一性约束界面 实验图14-5 选择唯一性索引列
(3)在查询编辑窗口中依次执行下列两条SQL 语句,检验新设置的惟一约束,观察并思考结果。
答:第一句的执行结果:违反了PRIMARY KEY 约束PK_student。不能在对象dbo.student 中插入重复键。
原因是:在student表中插入该数据时原表中已有次数据;
第二句的执行结果是成功插入数据;
(4)使用SQL语句设置惟一约束。
2、设置检查约束(以student_course表中mark字段为例)
(1)在student_course表设计器中右击“mark”字段,在弹出的菜单中选择“CHECK 约束”,弹出的空白窗口中点击添加按钮,添加一个新CHECK约束。然后在右侧属性窗口中分别设置名称和表达式两项,如实验图14-6所示。完成属性编辑后点击“关闭”按钮即可完成检查约束的设置。
(2)在查询分析器中检验上面设置的检查约束,可执行下列SQL语句,观察结果。
答:INSERT 语句与CHECK 约束CK_student_course冲突。该冲突发生于数据库stuManage,表dbo.student_course, column Mark。
实验图14-6 创建CHE
显示全部