ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:743.73KB ,
资源ID:17541518      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17541518.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(北邮 大三下 数据库实验五 mysql版本Word文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

北邮 大三下 数据库实验五 mysql版本Word文档格式.docx

1、学 号: 实验五 数据库完整性与安全性实验1. 实验目的通过对完整性规则的定义实现,熟悉了解kingbase中完整性保证的规则和实现方法,加深对数据完整性的理解。通过对安全性相关内容的定义,熟悉了解kingbase中安全性的内容和实现方法,加深对数据库安全性的理解。2. 实验环境操作系统:Microsoft Windows 7旗舰版 (32位)。硬件:容量足以满足MySQL 5.5安装及后续实验的使用。软件:数据库版本:MySQL 5.5 3. 实验内容及过程3.1. 完整性实验3.1.1. 分别定义学生数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约束;其实在导入txt数据时,我

2、已经定义了各个基表的主键。CREATE TABLE sc ( sno varchar(6) NOT NULL, cno varchar(3) NOT NULL, grade int(11) DEFAULT NULL, PRIMARY KEY (sno,cno) DEFAULT CHARSET=gbk;Create Table student ( sname varchar(6) DEFAULT NULL, sex varchar(2) DEFAULT NULL, bdate datetime DEFAULT NULL, dept varchar(8) DEFAULT NULL, classno

3、 varchar(3) DEFAULT NULL, PRIMARY KEY (sno)Create Table course ( cname varchar(12) DEFAULT NULL, lhour int(11) DEFAULT NULL, credit int(11) DEFAULT NULL, semester varchar(2) DEFAULT NULL, PRIMARY KEY (cno)不过为了进一步熟悉主键的操作。我对每个基表先删除主键,然后添加主键如下图,从而实现实体完整性约束:接下来,我给sc表添加student和course的外键,实现参照完整性约束如下图: 添加完

4、主键和外键后,我们用show create table命令查看各基表信息,可得如下截图。我们可以清楚地看到各个基表的主键和外键都成功添加了。3.1.2. 分别向学生表、课程表插入具有相同学号和相同课程编号的学生数据和课程数据,验证其实体完整性约束; 从截图可见,我们分别对student和course表格插入具有相同学号和相同课程编号的学生数据和课程数据,都失败了,出现error,即,验证了其实体完整性约束。3.1.3. 向学生选课表中插入一条数据,课程编号是课程表中没有的,验证参照完整性约束; 如图,course表格中没有C09,因此向sc表中添加此数据时,受参照完整性约束,而出现了错误,插入

5、失败。 即验证了参照完整性约束。3.1.4. 删除学生表中的所有数据,验证参照完整性约束; 由截图可见,删除失败了,这是受参照完整性约束的影响。3.1.5. 定义存储过程,完成查询某个学生的选课情况,并执行;由于存储过程中会用到结束符,所以我们先用delimiter修改结束符为/。由下图,我们还可以看到现在数据库里没有任何存储过程。 接着,我们定义存储过程查询某个学生的选课情况。并显示出现在的存储过程。由图可见,创建成功。 在此存储过程中,我定义了一个读入的参数numt,用来存储我们要查询的学生学号。 最后,我们调用存储过程,查看运行结果。证明调用成功。3.1.6. 定义触发器,当向学生表插入

6、新的一条记录时,将所有学生出生日期加1;并对其进行测试;由于Mysql和其他的软件不一样,所以几经纠结,最后才终于找到了正确的创建触发器的方法。需要复制一个新的table,然后通过对旧table的操作来触发对新table的操作,而不能通过一个表的insert触发对同一个表的操作。下图是正确的做法,错误的做法会在实验小结中遇到的问题里给出。 其中,我还用到了MySQL的时间处理函数date_add。日期加1我的理解是加一天,而且借此学习了一下时间处理的相关函数,而不是直接bdate=bdate+1 向student里插入一条新纪录,触发触发器mytri的操作。 现在查看student和new_s

7、tudent的变化。 可见student已经插入成功,但数据都还是原数据,没有变化。 而new_student里的数据则出生日期加了一天。1月2号都变为3号。3.2. 安全性实验内容3.2.1. 定义一新的登陆帐号、数据库用户,并授予其访问学生数据库的读权限;定义一个新的登录帐号、数据库用户sy。 对sy授予访问student的读权限。 我们查看加入新用户后的用户表格:3.2.2. 分别用超级用户和新定义的用户访问学生数据库,并对其中的学生表数据进行修改;登录测试:用超级用户即root登录用新用户sy登录。可见两个用户都登录成功了。访问student测试:用root查看student 用sy查

8、看student 由于sy也有查看student的权限,所以两个用户都查看成功。插入student测试: 用root修改student: 用sy修改student: 可见,sy由于没有权限,所以修改失败了。访问sc测试: 用root访问sc: 用sy访问sc: 同样,我们可以看到,由于sy只有查看student的权限,所以查看sc也失败了。3.2.3. 创建数据库角色,并授予访问学生数据库的读、写权限;3.2.4. 将角色赋予(1)中定义的用户,建立用户和角色联系;3.2.5. 再次用此用户访问学生数据库,并对其中的学生表数据进行修改。此上三部分实验由于MySQL不支持创建role,所以无法实

9、验。4. 实验小结实验中遇到的问题:这次实验进行比较顺利,只是按照实验要求逐步编程实现即可。实验中,但是由于MySQL本身的问题纠结了很久。MySQL对触发器的支持还没有像SQL Server那么充分,需要创建新表来进行触发操作。 若是对旧表操作,则会出现死循环报错。 删除触发器的相关操作为: 此外,MySQL不支持创建role,所以导致部分实验内容无法完成。实验心得:通过这次实验,我在对完整性规则的定义实现中,熟悉了解MySQL中完整性保证的规则和实现方法,加深对数据完整性的理解。并通过对安全性相关内容的定义,熟悉了MySQL中安全性的内容和实现方法,加深对数据库安全性的理解。实验过程中虽然为触发器纠结了很久,但是总而言之,实验还是比较简单的,而且最重要的是在实践中巩固了我课堂所学的概念,真切体会到数据库完整性和安全性的概念,并实践了存储过程和触发器的知识。实验不可小看,只有在实践中在自己的编程实现中,才能真正地较好掌握课堂所学的知识。实践出真知就是这个道理。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1