数据库系统概论题目

来源:百度知道 编辑:UC知道 时间:2024/05/21 07:12:41
今有两个关系模式:
职工(职工号,姓名,年龄,职务,工资,部门号)
部门(部门号,名称,经理名,地址,电话号)
请用SQL的GRANT和REVOKE语句(加上视图机制)完成以下授权定义或存取控制功能:
1.每个职工只对自己的记录有SELECT权利;
2.用户扬兰具有从每个部门职工中SELECT最高工资,最低工资,平均工资
的权利,他不能查看每个人的工资.
我把我的积分全部奉上了.那位数据库学的好的帮帮忙啊,
非常谢谢!

[标准答案]
1、
GRANT SELECT ON 职工
WHEN USER()= NAME
TO ALL;
这里假定系统的 GRANT语句支持WHEN子句和USER()的使用。用户将自己的名字作为ID。

REOVKE SELECT ON 职工
WHEN USER()= NAME
FROM ALL;
这里假定用户将自己的名字作为ID,且系统的REOVKE语句支持WHEN子句,系统也支持USER()的使用。
2、
CREATE VIEW 部门工资统计(最高工资,最低工资,平均工资)
AS SELECT MAX(工资),MIN(工资),AVG(工资)
FROM 职工
GROUP BY 部门号;
GRANT SELECT ON 部门工资统计
TO 扬兰;

REVOKE SELECT ON 部门工资统计
FROM 扬兰;