单选题
A.SELECTON emp TO U1 B.SELECT TO U1 ON emp C.INSERT TO U1 ON emp D.UPDATE TO U1 ON emp
【正确答案】
A
【答案解析】[解析] 由题干中的关键信息“职工编号唯一识别一个职工”可得,属性“职工编号”可以作为“职工”关系模式的主键。同理,由“每个项目必须有负责人,且负责人为职工关系中的成员”和常识可得,属性“项目编号”可以作为“项目”关系模式的主键,“负责人编号”是其外键;由“一个职工可以同时参与多个项目,一个项目需要多个职工参与”可得,属性“职工编号”和“项目编号”既是“职工项目”关系模式的主键,也是其外键。 完整性约束包括实体完整性、参照完整性和用户定义的完整性3类。实体完整性约束规定关系的主属性不能取空值,关系模型中以主码作为唯一性标识;参照完整性约束规定若属性(或属性组)A是关系R上的主码,B是关系S上的外码,A与B相对应(来自相同的域),则B取值为空或者来自于R上的某个A的值。用户定义的完整性约束是针对具体的数据库应用而定义的,它反映该应用所涉及的数据必须满足用户定义的语义要求。 依题意,本题定义了两个完整性约束,职工的姓名不能为空,这是用户定义的完整性约束,因此空缺处应填入“NOTNULL”关键字。职工编号唯一识别一个职工,这是实体完整性约束,用PRIMARY KEY关键字,而空缺处应填入“PRIMARY KEY (职工编号)”。 查询至少参加两个项目的职工编号及参与项目数的SQL语句如下。 SELECT 职工编号,COUNT(项目编号) FROM 职工项目 GROUP BY 职工编号 HAVING COUNT(项目编号)>=2; 在设计数据库时,可以对不同的用户定义不同的视图,以实现对机密数据的安全保护功能。假设项目编号为“P001”的项目负责人李强(其用户名为U1)有对参与该项目的职工进行查询(即SELECT)的权限,SQL语言用CREATE VIEW命令建立视图,其格式如下。 CREATE VIEW<视图名>[(<列名>[,<列名>]...)] AS <子查询> [WITH CHECK OPTION]; 在定义视图时,视图的属性列或者全部省略或者全部指定。若全部省略,则表示该视图由子查询中SELECT子句目标列中的诸字段构成,此时要求这些字段是简单的属性名。因此空缺处可填入emp(或emp(职工编号,姓名,性别,城市))。 要对参与项目编号为“P001”项目的职工进行相关操作,则空缺处可填入“职工编号”;空缺处可填入“项目编号='P001'”。 授权语句的基本语法如下。 GRANT <权限> ON <对象> TO <用户名>; 因此空缺处应填入“SELECT ON emp TO U1”。