- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
华南理工大学
《数据库》课程实验报告
实验题目: 实验二:数据库的安全和完整性约束
姓名: 学号:
班级: 17计科一班 组别: 无
合作者: 无
指导教师: 董守玲
实验概述
【实验目的及要求】
实验目的:
通过创建视图、触发器,设计安全机制等方式掌握数据库的安全和完整性的设计。
实验要求:
1. 采用实验一的建库脚本和数据插入脚本创建Student数据库,并完成以下操作:
1)新增表Credits(SNO,SumCredit,NoPass),表示每学生已通过选修课程的合计学分数,以及不及格的课程数。
2)创建视图Student_Grade(Sname,Cname,Grade),表示学生选修课程及成绩的详细信息。
2. 在数据库中创建以下触发器:
1) Upd_Credit
要求:当在SC表中插入一条选课成绩,自动触发Upd_Credit,完成在Credits表中修改该学生的合计学分数和不及格的课程数。
2) Upd_StuView (Instead of触发器)
要求:当对视图Student_Grade作插入数据项操作时,自动触发Upd_StuView,完成对SC表的插入操作。
如:当执行Insert into Student_Grade values(‘王刚’,’数据库’,54)
则触发器完成另一插入操作:Insert into SC values(‘980201’,’CS-110’,54)
另外,需要检查当前插入的学生和课程是否已在Students,和Courses表中存在,如不存在,不执行任何操作,并提示用户错误信息。
3) PK_SC,FK_SC_SNO,FK_SC_CNO) (选做)
要求:首先删除SC中所有主键和外键定义,用触发器实现表SC上的主键(SNO,CNO)和外键SNO,CNO的约束定义。
3.为Student数据库设计安全机制。
要求:在该数据库系统中,有三类用户:
1) 学生,权限包括:查询所有的课程信息,根据学号和课程号来查询成绩。但不允许修改任何数据。(必做)
只能查询自己的成绩,不能查询别人的成绩。(选做)
2)老师:权限包括:查询有关学生及成绩的所有信息,有关课程的所有信息,但不允许修改任何数据。
3)教务员:权限包括:查询和修改任何有关学生和课程的信息,但不允许查询和修改数据库中其它任何表,视图等数据库对象。
要求:安全控制必须仅由数据库一端来实现,不考虑由应用程序来控制。
为此,需要创建三个用户,登录时密码验证;分别授予各类权限,并测试权限的控制是否有效。
【实验环境】
PC机,WINDOWS操作系统,Oracle 或Microsoft SQL Server 数据库
实验内容
【实验过程】
实验步骤:
1.登录数据库,使用实验相关数据库
2.完成触发器部分:
(1)新增数据库并计算插入相关数据(需要辅助表)
(2)创建视图
(3)在表的插入过程中建立触发器
(4)在视图的插入过程中创建触发器
完成安全性部分:
(1)完成三个用户的创建,并测试初始权限
(2)授予学生权限,学生重新登录,测试相关权限有无
(3)授予老师权限,老师重新登录,测试相关权限有无
(4)教务员学生权限,教务员重新登录,测试相关权限有无
实验数据:
实验一使用的数据库。
三、实验主要过程:
1. 采用实验一的建库脚本和数据插入脚本创建Student数据库,并完成以下操作:
1)新增表Credits(SNO,SumCredit,NoPass),表示每学生已通过选修课程的合计学分数,以及不及格的课程数。
Step1创建表新增表Credits(SNO,SumCredit,NoPass)
代码:
create table Credits(
SNO varchar(15),
SumCredit decimal(5,1),
NoPass smallint);
Step2 创建辅助表tmpSumCredit( SNO varchar(15), SumCredit decimal(5,1)) 两个
代码:
create table tmpSumCredit(
SNO varchar(15),
SumCredit decimal(5,1));
create table tmpNoPass(
SNO varchar(15),
NoPass smallint);
Step3 向辅助表插入数据
原创力文档


文档评论(0)