结构推理 今有两个关系模式: 职工(职工号,姓名,年龄,职务,工资,部门号) 部门(部门号,名称,经理名,地址,电话号) 请用SQL的GRANT和REVOKE语句(加上视图机制)完成以下授权定义或存取控制功能: (1)用户王明对两个表有SELECT权力; (2)用户李勇对两个表有INSERT和DELETE权力; (3)每个职工只对自己的记录有SELECT权力; (4)用户刘星对职工表有SELECT权力,对工资字段具有更新权力; (5)用户张新具有修改这两个表的结构的权力; (6)用户周平具有对两个表所有权力(读,插,改,删数据),并具有给其他用户授权的权力; (7)用户杨兰具有从每个部门职工中SELECT最高工资、最低工资、平均工资的权力,他不能查看每个人的工资。
【正确答案】(1) GRANT SELECT ON TABLE职工,部门 TO王明; (2) GRANT INSERT,DELETE ON TABLE职工,部门 TO李勇; (3)GRANT SELECT ON TABLE职工 MIEN USER()=NAME TO ALL; 这里假定系统的GRANT语句支持WHEN子句和USER()的使用。用户将自己的名字作为ID。注意,不同的系统中这些扩展语句可能是不同的。读者应该了解你使用的DBMS产品的扩展语句。 (4) GRANT SELECT,UPDATE(工资) ON TABLE职工 TO刘星; (5) GRANT ALTER TABLE ON TABLE职工,部门 TO张新; (6) GRANT ALL PRIVILIGES ON TABLE职工,部门 TO周平 WITH GRANT OPTION; (7)首先建立一个视图。然后对这个视图定义杨兰的存取权限。 GREATE VIEW部门工资AS WHERE职工.部门号=部门.部门号 GROUP BY职工.部门号; GRANT SELECT ON部门工资 TO杨兰;
【答案解析】