《数据库原理与应用》实验模板 下载本文

《数据库原理与应用》实验报告

实验序号: 实验项目名称: 完整性约束与触发器 学 号 实验地点 一、 姓 名 指导教师 专业、班 实验时间 实验目的 认识完整性约束对数据库的重要性 掌握实体完整性的创建、修改、维护 掌握域完整性的创建、修改、维护 掌握参照完整性的创建、修改、维护 掌握用户定义的完整性的创建、修改、维护 掌握交互式创建触发器的方法 掌握使用T-SQL创建触发器的方法 掌握触发器的执行方法 1、 2、 3、 4、 5、 6、 7、 8、 二、 实验设备(环境)及要求 Virtualpc+SQLServer2005 三、 实验内容与步骤 5.1 实体完整性约束 (1) 交互式为数据库表S创建PRIMARY KEY 约束 (2) 交互式创建数据库表TEST_SC,并创建PRIMARY KEY 约束,TEST_SC表的结构定义如下: 表名:TEST_SC. 包含的列如下: 学号:SNO CHAR(2); 1

课号:CNO CHAR(2); 成绩:SCORE TINYINT; 主键:(SNO,CNO); (3) 用SQL为现有表T在TNO 列上创建PRIMARY KEY约束 (4) 用SQL创建数据库表TEST_C,并以列约束形式创建PRIMARY KEY约束。TEST_C表的结构定义如下: 表名:TEST_C. 包含的列如下: 课号:CNO CHAR(2) 课名:CN CHAR(10) 课时:CT TINYINT 主键:CNO; 主键约束名:PK_TEST_C. (5) 用SQL创建数据库表TEST_TC,并以表约束形式创建PRIMARY KEY约束。TEST_TC 表的结构定义如下: 表名:TEST_TC 包含的列如下: 教师号:TNO CHAR(2) 课号:CNO CHAR(2) 主键:(TNO,CNO) 主键约束名:PK_TEST_TC. (6) 交互式为现有表TEST_TC中的CNO和TNO列创建“UNIQUE约束” 2

(7) 用SQL为现有表C中的CN列创建“UNIQUE约束” (8) 交互式为现有表TEST_SC增加新列ID_SC,并创建此列属性为IDENTITY (9) 用SQL为现有表TEST_TC增加新列ID_TC,并创建此列属性为IDENTITY. (10) 交互式删除现有表TEST_SC的主键PK_TEST_SC并取消ID_SC列的标识属性。 (11) 用SQL删除表C中CN列的UNIQUE约束UNIQUE_C. 5.2 域完整性约束 (1)交互式为现有数据库表T创建DEFAULT和CHECK约束。 要求:CHECK约束对已有数据不做检查。 ① 性别列SEX的DEFAULT约束:DEFAULT=‘男’ ② PROF列与COMM列之间限定取值关系的CHECK约束。要求此约束对表 T中已有数据不做检查。 (2)用SQL为现有数据库表S创建CHECK约束。要求:本科生的年龄限制在14~40岁之间,此约束对表S中已有数据做检查。 (3) 用SQL创建一数据库表TEST_S,包含DEFAULT和CHECK约束。表TEST_S的结构定义如表4-2所示。(P77) (4)用SQL删除表T中列PROF和COMM之间的CHECK约束CHECK_T. (5) 交互式删除表TEST_S中列SEX的DEFAULT约束及列AGE的CHECK约束。 5.3 参照完整性约束 (1)交互式创建表S与表SC之间的参照关系。表S与表SC通过外键SNO 实现参照完整性约束(约束名采用系统默认):子表SC中SNO的取值要参

3

照主表S中SNO的取值。要求:取消“创建中检查现有数据”,选择“级联更新相关字段”。 (2)用SQL创建表T与表TC之间的参照关系。表T与表TC通过外键TNO实现参照完整性约束FK_T_TC:子表TC中TNO的取值要参照主表T中TNO的取值。要求:取消“创建中检查现有数据”,选择“级联删除相关记录”。 (3)创建数据库jxsk中5个表之间的关联关系图。 (4)交互式删除表C和表TC之间的参照关系。 5.4 创建和执行触发器 (1)交互式为数据库表S创建一级联更新触发器TRIGGER_S.要求:若修改S表中一学生的学号,则SC表中与该学生相关的学号自动修改。 (2)交互式为数据库表SC创建一限制更新触发器TRIGGER_SC。要求:若修改SC表中以记录的学号,则要检查表S中是否存在与该学号相同的记录,若存在则不许修改,若不存在则可修改。 (3)用SQL为数据库表SC创建一触发器Score_SC_TRI.要求:当插入一个记录或修改成绩时,确保此记录的成绩在0~100分之间。 (4)用SQL为数据库表C创建一级联删除触发器TRIGGER_DC。要求:从C表中删除某课程信息时,同时删除SC表中与此课程相关的选课记录。 5.5 修改触发器 (1)交互式修改触发器TRIGGER_S。要求:若删除数据库表S中某一个学生的记录信息,则自动删除SC表中与该学生相关的记录信息。 (2)用SQL修改数据库表C的触发器TRIGGER_DC。要求:从数据库表C中删除某课程信息时,同时删除数据库表SC和TC中与此课程相关的记录。 5.6 删除触发器 4

(1)交互式删除数据库表S的触发器TRIGGER_S. (2)用SQL删除数据库表C的触发器TRIGGER_DC. 四、实验结果与数据处理 5.1 实体完整性约束 (1) 交互式为数据库表S创建PRIMARY KEY 约束 (2) 交互式创建数据库表TEST_SC,并创建PRIMARY KEY 约束,TEST_SC表的结构定义如下: 5