太原理工大学 数据库系统概论 实验报告 数据的完整性.doc
本科实验报告课程名称: 数据库系统原理B 实验项目: 数据的完整性 实验地点: 专业班级: 学号: 学生姓名: 指导教师: 201 年 月 日一 目的与要求(1)了解SQL Serer数据库系统中数据完整性控制的基本方法 (2)熟练掌握常用CREATE 或ALTER 在创建或修改表时设置约束 (3)了解触发器的机制和使用 (4)验证数据库系统数据完整性控制二 实验设备与环境 使用SQL Server数据库管理系统提供的SSMS和查询编辑器三 实验内容、实验记录及实验结果与分析结合ST数据库中的各个表,设置相关的约束,要求包括主键约束、外键约束、唯一约束、检查约束、非空约束等,掌握各约束的定义方法。 设置一个触发器,实现学生选课总学分的完整性控制,了解触发器的工作机制。 设计一些示例数据,验证完整性检查机制。 要求包括如下方面的内容:1. 创建基本表及约束Student表Course表SC表如下图所示表创建成功:2. 插入数据(1)插入学生信息到Student表(2).插入课程信息到Course表(3)插入到SC表(4)检查插入表中的数据二、检查完整性约束1.检查主键约束(1)INSERT INTO Student VALUES('','李斌','男',20,'CS','1001',0)INSERT INTO Student VALUES('','李斌','男',20,'CS','1001',0)UPDATE Student SET Sno='' WHERE Sname = '张立'无法正确运行因为:违反了PRIMARY KEY 约束'PK_Student_CA1FE4647F60ED59'。不能在对象'dbo.Student' 中插入重复键。(2)INSERT INTO SC VALUES('','1',78) INSERT INTO SC VALUES('',null,78)违反了PRIMARY KEY 约束'PK_SC_E0F21'。不能在对象'dbo.SC' 中插入重复键。不能将值NULL 插入列'Cno',表'学生选课数据库TEST.dbo.SC';列不允许有Null 值。2.检查唯一约束INSERT INTO Course VALUES('8','JAVA',7, 3) INSERT INTO Course VALUES('9','数据结构',7, 3)运行正确3. INSERT INTO Student(Sno,Sname,Ssex,Sclass) VALUES('','张盛','男',NULL) INSERT INTO Student(Sno,Sname,Ssex) VALUES('','张盛','男')不能将值NULL 插入列'Sclass',表'学生选课数据库TEST.dbo.Student';列不允许有Null 值。INSERT 失败。4. INSERT INTO SC VALUES('','4',95) INSERT INTO SC VALUES('','4',102) INSERT INTO Student(Sno,Sname,Ssex,Sclass) VALUES('','张盛','男','1008') INSERT INTO Student(Sno,Sname,Ssex,Sclass) VALUES('','张盛','','1008')违反了PRIMARY KEY 约束'PK_SC_E0F21'。不能在对象'dbo.SC' 中插入重复键。5DELETE Student WHERE Sno='' DELETE Student WHERE Sno='' UPDATE Course SET Cno = '10' WHERE Cname = '数据库系统原理' DELETE 语句与REFERENCE 约束"FK_SC_Sno_08EA5793"冲突。该冲突发生于数据库"学生选课数据库TEST",表"dbo.SC", column 'Sno'。四 实验遇到的问题和解决方法1. 在实验的过程中会因为编写的错误而导致运行的错误,在以后编写时应该注意方式方法,从而避免错误的发生。2. 在建表的时候一定应该注意表的完整性约束,否则我们只能通过修改数据库中的数据而检查完整性约束。3. 触发器由于不能与实际生活联系起来,使我对他的理解不是很到位。五 实验心得通过数据库SQL实验,是我对数据库有了更加深刻的印象,理解了这门学科的深层意义,对今后的发展起到很大的作用,对学习软件这门学科有了更大信心。