大型数据库管理实验报告4
- 格式:doc
- 大小:200.50 KB
- 文档页数:8
武汉轻工大学
经济与管理学院实验报告
实验课程名称大型数据库管理
实验起止日期2019.11.5至2019.12.10 实验指导教师程红莉
实验学生姓名学生班级学号物流管理1702
实
验
评
语
实验
评分
教师
签名
年月日
实验项目名称数据完整性实验日期2019.12.10 学生姓名班级学号物流管理1702
一、预习报告(请阐述本次实验的目的及意义)
1.熟悉通过SQL对数据进行完整性控制。
2.完成书本上习题的上机练习。
二、实验方案(请说明本次实验的步骤和进程)
1.用Constraint和Check建立完整性约束条件
教材164页例[7]
Student表的ssex 只允许取‘男’或‘女’
create table student1
(sno char(9) primary key,
sname char(8) not null,
sex char(2) check(sex in('男','女')),
sage smallint,
sdept char(20)
);
教材164页例[8]
create table sc1
(sno char(9),
cno char(4),
grade smallint check(grade>=0 and grade<=100),
primary key(sno,cno),
foreign key(sno)references student1(sno),
foreign key(cno)references course(cno)
);
教材164页例[7]、例[8](给学生表的性别增加约束条件,即只允许“男”或“女”。可用语句:
alter table student add constraint course1 check(sex in('男','女'))
alter table sc add constraint course2 check (score>=0 and score<=100)
go
2.建立规则,并绑定到表的字段上
①建立规则gender,该规则限定变量值(如性别)只能取“男”或“女”,然后绑定到student表的sex字段上
create rule gender as @value in('男','女')
sp_bindrule gender,'student.sex';
②建立规则r_score,该规则规定变量值(如分数)在0到100之间,并将该规则绑定到SC表的score字段上。Create rule r_score as @score>=0 and @score<=100
sp_bindrule r_score,'sc.score'
3.建立触发器
建立一个“班级信息表”,该表有“班级编号”,“班级人数”“所属系别”“班主任”等列,并在“学生表”中增加一列“班级编号”,利用触发器使学生表中某班级增加一名学生时,“班级信息表”中该班级的“班级人数”自动增加1。
create table 班级信息
(班级编号 char(4),
班级人数 smallint,
所属系别 char(20),
班主任 char (12))
create trigger T_addnum on student for insert as update 班级信息 set 班级人数=班级人数+1 where 班级编号=(select 班级编号 from inserted);
三、实验结果分析、改进建议
本次实验主要了解了数据的三类完整性约束(包括实体、参照和用户定义完整性),学会了利用SQL语句对数据进行完整性控制,掌握了触发器的使用。实验中遇到了一些问题,但都在老师和同学的帮助下顺利的解决了,以后要多多练习,争取更熟练的使用SQL SERVER 进行各种操作。
(1)关于规则,需要知道:规则是作为单独的对象创建,然后绑定到列上。一个列只能应用一个规则,但可以应用多个CHECK 约束。
(2)建好表后先把标识列设置了,以免后续出现问题。
(3)使用TSQL语句时,要注意函数中指定的返回表的列中列数据类型和后面SELECT中的数据类型要保持一样,不然会造成某个字段的长度比要插入给该字段的值的长度短。
(4)学会使用触发器
(5)知道了如何分别用菜单命令法和T-SQL语句法来定义主键约束、唯一键约束、检查约束以及外键约束。(6)学会了如何创建、删除默认值约束,创建、册除规则。
这次实验练习的是数据库完整性,由于有了之前T-SQL语言的学习经验,理解起来好很多,在老师的演示下,我对数据库的完整性有了更深刻的理解,同时对约束、默认值、规则的相关定义有了更深入的认识,和数据库完整性的目的:确保数据库中的数据的一致性和完整性。并能较熟练的使用T-SQL语句进行有关方面的操作。通过该实验,对于触发器的实现不是很熟悉,对数据库数据完整性验证有了比较熟悉的了解。虽然mssql语法好多和书上不同,但通过查阅资料还是能解决问题。
学生签名:
年月日