北邮数据库实验五 数据库完整性与安全性实验 联系客服

发布时间 : 星期日 文章北邮数据库实验五 数据库完整性与安全性实验更新完毕开始阅读

(2) 分别用root用户和新定义的用户访问学生数据库,并对其中的学生表数据进行修改;

root超级用户登录:

lqy3用户登录:

Root超级用户查询及修改课程信息:

Lqy3 用户查询及修改课程信息,因为lqy3用户仅有读权限,所以可以查询数据库,但是不能够对数据库中的信息进行修改。

(3) 再次用此用户访问学生数据库,并对其中的学生表数据进行修改。

登录root用户,授予lqy3用户写权限:

再次用lqy3用户登录,更改课程信息,成功。

实验总结

1、实现参照完整性约束时遇到的问题

最初建立外键时sql语句错误,错误信息是“cannot add or update a child row: a foreign key constraint fails”,原因在于:查询优化实验中,对sc表插入了三个元组,sno的值为10111,而该值并没有在student表中存在。参照完整性约束的规定是:若M是关系S中的一属性组,且M是另一关系Z的主关键字,则称M为关系S对应关系Z的外关键字。若M是关系S的外关键字,则S中每一个元组在M上的值必须是空值或是对应关系Z中某个元组的主关键字值。因此,存在三个sno='10111'的元组,而student表中并不存在sno='10111'的学生信息,相当于三个不存在的学生却拥有成绩表。这显然是不合理的。因此只要将这三行元组删除即可。

2、定义存储过程中遇到的问题

注意要先更改结束符,因为存储过程中的sql语句以通用的分号为结束符,其作为定义存储过程的sql语句的一部分,会引发语句错误。

3、定义触发器时遇到的问题

使用create trigger 语句创建触发器是可以成功的,但是向student插入记录,触发触发器的操作时,出现了循环的错误信息,后来将student表复制了一份,重写create trigger 语句,定义触发器为:在对旧表student进行插入操作之前,更新new_student表,使每一元组的bdate增加一天。

4、定义新的登陆账号、数据库用户遇到的问题

grant和create均可创建用户,但注意创建的用户是基于所有主机(@'%')的。另外在命令行创建了用户,可以使用flush privileges更新权限表,而不用重新登录。