当前位置:首页 > 数据的完整性 - 图文
数据库技术与应用实验 实验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
共分享92篇相关文档