数据的完整性 - 图文 联系客服

发布时间 : 星期一 文章数据的完整性 - 图文更新完毕开始阅读17b1a1e95ef7ba0d4a733b2d

数据库技术与应用实验 实验6 数据完整性

9. 在查询分析器中,为studentsdb数据库的成绩表添加外键约束(FOREIGN KEY),要求将“学号”设置为外键,参照表为学生表,外键名称为fk_sid。

alter table 成绩表

add constraint fk_sid FOREIGN KEY(学号)

references 学生表(学号)

南京师范大学中北学院 29

数据库技术与应用实验 实验6 数据完整性

⑴使用系统存储过程sp_help查看grade表的外键信息。

sp_help fk_sid

⑵在成绩表中插入表1-2所示记录,观察SQLServer会做何处理,为什么?如何解决所产生的问题?

表1-2

南京师范大学中北学院

30

数据库技术与应用实验 实验6 数据完整性

学号 0100 课程编号 0001 分数 78 insert into 成绩表(学号,课程编号,分数)

values('0100','0001','78')

答:由于程序没有设置ON UPDATE子句, 则系统采用默认设置NO ACTION,则当主键表成绩表中学号键值被修改时,SQLServer将会报错,并回退该修改操作。如果想修改可以在ON UPDATEE子句中设置CASCADE,则当主键学号键值被修改时,外键表中所有相关行的外键也将被SQLServer自动修改为新值。

⑶使用查询分析器删除成绩表的外键fk_sid。

alter table 成绩表 drop constraint fk_sid

南京师范大学中北学院 31

数据库技术与应用实验 实验6 数据完整性

四、实验思考

1.在SQLServer 2005中,可采用哪些方法实现数据完整性?

数据完整性有实体完整性,参照完整性和用户自定义完整性3中类型。在SQLServer 2005中可以通过各种约束,默认值,规则和触发器等数据库对象来保证数据的完整性,其中约束包括非空值约束,主键约束,外键约束,唯一性约束,检查约束,默认约束。

2,比较默认对象和默认约束的异同。

相同点:都是在用户输入记录时向没有指定具体数据的列中自动插入数据

不同点:默认约束是在CREATE TABLE或者ALTER TABLE语句中定义的,嵌入了被定义的表结构,即删除表的时候默认约束也就随之被删除。而默认对象需要用CREATE DEFAULT语句定义后才能使用,是独立于表之外的数据对象,删除表并不能删除默认对象需要用DROP DEFAULT语句才能删除。

3.在数据库中建立的规则不绑定到到数据表的字段上会起作用吗?为什么? 不会起作用。创建规则后,规则仅仅只是一个存在于数据库中的对象,并未发生作用。需要将规则与数据库表或者用户定义的对象联系起来,才能到达创建规则的目的,联系的方法称为绑定。

南京师范大学中北学院 32