count(*)>=2 WHERE 部门号 IS NOT NULL);
参考答案:(a)PRIMARY KEY
(b)FOREIGNKEY (部门号) REFERENCES部门
(c)count(*),Sum (月工资),Avg(月工资)
(d)GROUP by部门号HAVING
注:以上答案中的单词可以小写。
解析:
[分析]:
问题2:用SQL定义关系模式的一个非常重要的问题是完整性控制。完整性控制应具有三方面的功能:定义功能、检测功能、处理功能(一旦发现违背了完整性约束条件,采取相关的动作来保证数据的完整性)。数据库中最重要的约束是声明一个或一组属性形成关系的键。键的约束在SQL的CREATE TABLE命令中声明。在关系系统中,最重要的完整性约束条件是实体完整性和参照完整性。
1.实体完整性定义
在关系中只能有一个主键。声明主键有两种方法:
①将PRIMARY KEY保留字加在属性类型之后;
②在属性列表中引入一个新元素,该元素包含保留字PRIMARY KEY和用圆括号括起的形成该键的属性或属性组列表。
2.参照完整性
参照完整性定义格式如下:
FOREIGN KEY (属性名) REFERENCES 表名(属性名)
[ON DELETE[CASCADEt|SET NULL]
参照完整性通过使用保留字FOREIGN KEY定义哪些列为外码;REFERENCES指明外键对应于哪个表的主键;ON DELETE CASCADE指明删除被参照关系的元组时,同时删除参照关系中的元组;SETNULL表示置为空值方式。
本试题中,职员关系的主键为职员号,部门关系的主键为部门号,这样,职员关系中的部门号是外键。其中,职员关系的主键职员号可采用如下两种方式定义:
职员号CHAR(5)PRIMARY KEY或者是PRIMARY KEY (职员号)
根据分析问题2(1)职员关系的SQL定义如下:
Create Table职员 ( 职员号CHAR (5) PRIMARY KEY,
职员姓名CHAR(8),
月工资 NUMBER(4),
部门号 CHAR(1),
办公室 CHAR(20),
电话 CHAR(8),
FOREIGN KEY (部门号) REFERENCES 部门(部门号),
问题2(2)的关键在于要对职员关系采用分组语句按部门分类,并统计。如果统计的元组个数大于等于2,则在结果集中。根据分析,针对人数大于等于2的部门创建视图D——View(Dept,D_num,D_Tomis,D_AvgPay)如下:
Create View D View(Dept,D num,D Totals,D AvgPay)As
(Select 部门号,count (*),Sum(月工资),Avg(月工资)
from 职员
GROUP by部门号 HAVING count(*)>=2 WHERE 部门号 IS NOT NULL);