1、数据库原理实验报告学号 姓名 班级 日期题目:实验三:数据完整性与安全性控制 2014302692 孟玉军 10011402 16.10.18一. 实验内容、步骤以及结果1 利用图形用户界面对实验一中所创建的 Student 库的 S 表中,增加以下的约束和索引。(18 分,每小题 3 分) (1) 非空约束:为出生日期添加非空约束。(2) 主键约束:将学号(sno)设置为主键,主键名为 pk_sno。(3) 唯一约束:为姓名(sname)添加唯一约束(唯一键),约束名为 uk_sname。(4) 缺省约束:为性别(ssex)添加默认值,其值为“男”。(5) CHECK 约束:为 SC 表的成
2、绩(grade)添加 CHECK 约束,约束名为 ck_grade,其检查条件为:成绩应该在 0-100 之间。(6) 外键约束:为 SC 表添加外键约束,将 sno,cno 设置为外键,其引用表分别是 S 表和 C 表,外键名称分别为 fk_sno,fk_cno。2 在图形用户界面中删除以上小题中已经创建的各种约束,用 SQL 语言分别重新创建第 1 题中的(2)-(6)小题.(15 分,每小题 3 分,提示:alter table add constraint)(2)alter table Sadd constraint pk_sno primary key(sno)(3)alter ta
3、ble Sadd constraint uk_sname unique(sname)(4)alter table Sadd constraint uk_sex default(男) for ssex(5)alter table SCadd constraint ck_grade check(grade between 0 and 100)(6)alter table SCadd constraint fk_sno foreign key(sno) references S(sno)alter table SCadd constraint fk_cno foreign key(cno) refe
4、rences C(cno)3 利用图形用户界面根据上述 SC 表中的外键定义画出由 S,C,SC 表构成的数据库关系图。(5 分,提示:选中 student - 数据关系图)4 用 SQL 语言删除 S 表中所创建的缺省约束和外键约束。(6 分,每小题 3 分)alter table Sdrop constraint uk_snamealter table SC drop constraint fk_sno5 在图形用户界面中创建新登录名以及用户。(16 分)(1) 根据第五版教材第四章 第 7 题,创建数据库 company 和其中的基本表,并创建该题中所需要用到的各个用户以及相关的登录名。
5、(10 分)(2) 用图形用户界面完成以下的权限赋予:(每小题 3 分)a)用户王明对两个表均有 Select 和 Insert 的权力。b)用户李勇对职工表具有 Select 权力,对工资字段具有更新权力。6 用 SQL 语句授权和收回权限并对权限加以验证。(40 分,每题 20 分)(1) 根据第五版教材第四章 第 7 题。1).grant select on employee,departmentTO 王明2). grant insert ,delete on employee to 李勇grant insert ,delete on departmentto 李勇3).先创建视图;cr
6、eate view view_ias select * from employeewhere ename=CURRENT_USER再进行授权:grant select on view_ito public4).grant select,update(salary)on employee to 刘星5).grant alter on employeeto 张新grant alteron departmentto 张新6).grant all privileges on departmentto 周平 with grant option grant all privileges on employ
7、ee to 周平 with grant option7).创建部门工资视图;create view department_salary(department_dname,max_salary,min_salary,avg_salary)asselect dname,max(salary),min(salary),avg(salary)from department,employeewhere department.dno=employee.dno group by department.dno,dname授权:grant select on department_salaryto 杨兰(2)
8、根据第五版教材第四章 第 8 题。(提示:(c)和(g)小题可创建合适的视图,针对视图进行授权,(c)小题用 CURRENT_USER)1).revoke select on department from 王明revoke select on employee from 王明2).revoke select ,delete on employee from 李勇 revoke select ,delete on department from 李勇3).revoke select on view_ifrom public4).revoke select ,update(salary)on e
9、mployee from 刘星5).revoke alter on department from 张新revoke alter on employee from 张新6).revoke select,insert,delete,alter on employeefrom 周平 cascaderevoke select,insert,delete,alter on departmentfrom 周平 cascade7).revoke selecton department_salaryfrom 杨兰 选做实验1 利用 SQL 语言创建,验证和删除规则。(1)创建一个 ssex_rule 规则(
10、create rule),将其绑定(sp_bindrule)到 S 表的 ssex性别字段上(请验证该规则生效,保证了输入的性别只能是“男”或者“女”)。 :创建create rule ssex_ruleas ssex in (男,女) :绑定 exec sp_bindrule ssex_rule,S.ssex :验证(2)删除 ssex_rule 规则(注意:规则已绑定到 ssex 表的性别字段上,需要先解除原有的绑定 sp_unbindrule, drop rule)。 exec sp_unbindrule S.ssexdrop rule ssex_rule2 利用 SQL 语言创建,验证
11、和删除默认值。(1)创建一个 ssex_def 默认对象(create default),将其绑定(sp_bindefault)到 S表的 ssex 性别字段上,使其默认值为“男”(请验证该默认值生效)。 :创建create default ssex_def as 男 : 绑定exec sp_bindefault ssex_def,S.ssex; : 验证 (2)删除 ssex_def(注意:默认对象已绑定到 S 表的 ssex 性别字段上,需要先解除原有的绑定 sp_unbindefault, drop default)。exec sp_unbindefault S.ssexdrop default ssex_def;二. 实验中出现的问题以及解决方案(对于未解决问题请将问题列出来)除了标题内容以外,该部分内容中还可以写对于实验的一些感受,建议,意见等。通过创建合适的视图,可以令问题简单化,视图为重构数据库提供了一定程度的逻辑独立性。批阅者: 批阅日期:实验成绩: 批注: