北京邮电大学实验报告课程名称数据库系统原理实验内容实验5数据库完整性与安全性实验班级2013211***姓名***指导老师成绩_________2016年05月20日实验5数据库完整性与安全性实验实验目的:1.通过对完整性规则的定义实现,熟悉了解SQLSERVER中完整性保证的规则和实现方法,加深对数据完整性的理解。2.通过对安全性相关内容的定义,熟悉了解SQLSERVER中安全性的内容和实现方法,加深对数据库安全性的理解实验内容完整性实验与要求:1.分别定义数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约束;定义主键:方法一:使用EnterpriseManager设置主键(以book表为例)①光标移到book表的位置,右键-设计②在你要选的属性列右键-设置主键,完成。方法二:使用SQL语句。①右键数据库,新建查询设置外键:方法一:使用EnterpriseManager设置外键(以student表为例)①单击student表,鼠标移到“键”文件夹,单击右键,选择“新建外键”。②选择“表和列规范”进行设置③我们想在student表设置class_id属性为外键,按照下图选择,点击确定,保存即可。方法二:SQL语句新建查询,输入如图语句。2.向学生表插入具有相同学号的数据,验证其实体完整性约束;Student表的主键是学号,所以不能插入有相同学号的学生。3.向学生表中插入一条数据,班级号是学生表的外键,验证参照完整性约束;Class表中没有“2013211302”这个班级,所以无法插入。改变班级号为class表中存在的,则能够进行插入,结果如下:4.删除教师表中的所有数据,验证参照完整性约束;5.定义存储过程,完成查询学生表中学号=g9940206的行,并执行。资料:存储过程(StoredProcedure)是一组为了完成特定功能的SQL语句集,是利用SQLServer所提供的Transact-SQL语言所编写的程序。功能是将常用或复杂的工作,预先用SQL语句写好并用一个指定名称存储起来,以后需要数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。定义了一个名为“find_stduent_id”的存储过程,点击资源管理器中的“存储过程”,找到它,右键-执行存储过程。实行结果如下图:6.定义触发器,当向学生表插入一条记录时,将所有学生的学号值加1;并对其进行测试触发器介绍:触发器是维护表间的数据的一致性和完整性的一种机制。触发器的主要用途在于:能够对数据库的多个表的内容级联(cascade)修改当违反参照完整性时,触发器能够撤回试图进行数据修改的事务。触发器能够实施比规则复杂的多的限制触发器还能够比较数据修改前后某表的状态,并进行相应的动作。方法一:使用SQL语句因为学号不是纯数字,学号含有字母和数字的字符串,所以不能直接student_id+1。需要进行一些转换。方法二:使用资源管理器创建。右键“触发器”-“新建触发器”,弹出下图对话框。还是需要用SQL语句写,所以不再重复。安全性实验内容与要求:1.定义一新的登陆帐号、数据库用户,并授予其访问学生选课系统。①数据库安全性-用户-登录名-新建登录名②操作选项见下图点击确定,用户“莫妮卡”创建成功。2.分别采用Windows2007验证方式和Windows2007及SQLServer混合验证方式用不同的用户进行登录连接;①先断开当前连接。②输入相关信息进行连接。3.分别用sa用户和新定义的用户访问学生选课数据库,并对其中的学生表数据进行修改;①连接sa用户,方法如上。修改成功。②使用“莫妮卡”用户对student表进行改写。操作被拒绝。4.创建数据库角色,并授予访问学生选课数据库的读、写权限;授权仅以student表为例5.将角色赋予(1)中定义的用户,建立用户和角色联系;见上一步。6.再次用此用户访问学生选课数据库,并对其中的学生表数据进行修改。用户“莫妮卡”与拥有读写权限的角色关联之后,也能对数据库进行读写。实验总结:通过本次实验,我更深刻地理解了主键、外键、用户权限等等对数据库的维护作用。存储过程、触发器这两样课本中提及不多,想要更全面地了解它们需要查阅其他资料,锻炼了查阅知识、自学的能力。本次实验也增加了对SQL语言的熟练程度。