阅读下列说明,回答问题1至问题5。 说明 某工厂的信息管理数据库的部分关系模式如下所示: 职工(职工号,姓名,年龄,月工资,部门号,电话,办公室) 部门(部门号,部门名,负责人代码,任职时间) 关系模式的主要属性、含义及约束如表2—

admin2005-03-20  29

问题 阅读下列说明,回答问题1至问题5。
说明
   某工厂的信息管理数据库的部分关系模式如下所示:
   职工(职工号,姓名,年龄,月工资,部门号,电话,办公室)
   部门(部门号,部门名,负责人代码,任职时间)
   关系模式的主要属性、含义及约束如表2—1所示,“职工”和“部门”的关系示例分别如表2-2和表2-3所示。

选项

答案(a)PRIMARY KEY (b)FOREIGN KEY (负责人代码) REFERENCES职工 (c)FOREIGN KEY (部门号) REFERENCES部门 (d)月工资>=500 AND<月工资=5000,或月工资 BETWEEN 500 AND 5000 (e)count(*),Sum (月工资),Avg (月工资) (f)GrOup by部门号

解析 根据题意,“职工”和“部门”的关系模式如下:
   
   用SQL定义关系模式的一个非常重要的问题是完整性控制。完整性控制应具有三方面的功能:定义功能、检测功能、处理功能(一旦发现违背了完整性约束条件,采取相关的动作来保证数据的完整性)。数据库中最重要的约束是声明一个或一组属性形成关系的键。键的约束在SQL的CREATETABLE命令中声明。在关系系统中,最重要的完整性约束条件是:实体完整性和参照完整性。
   1.实体完整性定义
   在关系中只能有一个主键。声明主键有两种方法:
   ①将PRIMARY KEY保留字加在属性类型之后。
    ②在属性列表中引入一个新元素,该元素包含保留字PRIMARYKEY和用圆括号括起的形成该键的属性或属性组列表。
   2.参照完整性
   参照完整性定义格式如下:
   FOREIGN KEY(属性名)REFERENCES表名(属性名)
   [ONDELETE[CASCADE|SETNULL]
   参照完整性是通过使用如下保留字:FOREIGN KEY  定义那些列为外码; REFERENCES  指明外键对应于哪个表的主键;ON DELETE CASCADE  指明删除被参照关系的元组时,同时删除参照关系中的元组;SETNULL表示置为空值方式。本试题中,部门关系的主键为部门号,职工关系的主键为职工号。其中,部门关系的主键为部门号可采用如下两种方式定义:
   部门号CHAR(1)PRIMARY KEY或者是PRIMARY KEY(部门号)
   又因为负责人也是一个职工,所以负责人代码应该是一个外码,应进行参照完整性定义。根据分析部门的SQL定义如下:
   Create Table 部门(部门号          CHAR(1)  PRIMARY KEY   ,
                    部门名          CHAR(16),
                    负责人代码      CHAR(4),
                    任职时间        DATE,
                    FOREIGN KEY (负责人代码) REFERENCES  职工  (职工号));
   在职工关系中,部门号是一个外码,应进行参照完整性定义。又因为在试题表2-1中的条件“500元≤月工资≤5000元”,所以在职工关系中应加上用户定义完整性。根据
   分析职工的SQL定义如下:
   Create Table 职工 (职工号CHAR(4),
                      姓名          CHAR(8),
                      年龄          NUMBER(3),
                      月工资NUMBER(4),
                      部门号CHAR(1),
                      电话    CHAR(8),
                      办公室CHAR(8),
                      PRIMARY DEY   (职工号),
                      FOREIGNKEY  (部门号) REFERENCES  部门  (部门号),
                      CHECK(月工资  BETWEEN 500 AND 5000  ));
    建立D_S视图需要COUNT函数来统计各部门的人数C,SUM来计算工资总数 Totals,用AVG来计算平均工资Averages,用分组语句GROUPBY来对不同部门进行分组。因此创建D_S视图的SQL语句是:
   Create ViewD_S (D,C,Totals,Averages)AS
   (SELECT 部门号,COUNT(*),SUM (月工资),AVG(月工资)
      FROM    职工
     GROUP BY 部门号)
转载请注明原文地址:https://jikaoti.com/ti/LAN7FFFM
0

相关试题推荐
最新回复(0)