根据上述说明,请给出: (1)“职员”关系模式的主键和外键。 (2)“部门”关系模式的主键和外键。 原来的“职员”关系模式存在什么问题?在不增加新关系模式的前提下,请给出修改后的“职员”和“部门”关系模式。

admin2009-05-15  24

问题 根据上述说明,请给出:
   (1)“职员”关系模式的主键和外键。
   (2)“部门”关系模式的主键和外键。
原来的“职员”关系模式存在什么问题?在不增加新关系模式的前提下,请给出修改后的“职员”和“部门”关系模式。

选项

答案“职员”关系模式主要的问题是: (1)数据冗余问题。因为某部门的职员人数有多少人,其办公室和电话将要重复存入多少个。 (2)数据修改不一致问题。因为某部门的办公室变了可能会导致某些职员的属性修改了,某些职员的属性未修改。 将关系模式修改为:职员(职员号,职员姓名,月工资,部门号) 部门(部门号,部门名,负责人代码,任职时间,办公室,电话)

解析 根据表2-3,“职员”关系的主键可为属性“职员号”,根据表2-4,“部门”关系的主键可为属性“部门号”。在“部门”关系中,由于“负责人也是公司的一名职员”,因此“负责人代码”亦即职员号,是“职员”关系的主键,是外键;在“职员”关系中,“部门号”是“部门”关系的主键,是外键。
   问题2是考查用SQL定义关系,在定义时需要特别注意完整性约束,包括:实体完整性、参照完整性。在“职员”关系中,“职员号”是主键,须声明实体完整性约束,“部门号”是外键,须声明参照完整性。故空(a)应填PRIMARY KEY,表示主键,空(b)应填FOREIGN KEY,表示外键。
   问题2的(2)是创建部门视图,条件是“部门人数大于2”,这样就要求按部门分组统计职员人数。根据视图的概念,易得空(c)应填“COUNT(*),SUM(月工资),AVG(月工资)”,由于需要分组,故空(d)处应由“GROUP BY 部门号”,这样其后只能搭配HAVING语句,故空(d)应填“GROUP BY 部门号 HAVING”。
    问题3就是插入数据时,完整性约束的检查,必须满足实体完整性和参照完整性,以及用户自定义完整性。在此,实体完整性为“职员号唯一且非空”,参照完整性为“部门号只能取部门表中的某个部门号或为空”,用户自定义完整性为“月工资大于等于1000且小于等于 8000”。根据这3个完整性易得:记录1不能插入,其工资是800,违反了用户自定义完整性;记录2不能插入,其职员号60802在表2-3中已存在,违反实体完整性(主键唯一):记录3可以插入,部门号等属性为空,表示尚未分配到任何部门。
   考虑到“每个部门有一名负责人、一间办公室、一部电话、多名职员”,因此“职员”表中的属性“办公室”和“电话”存在数据冗余,而且有可能导致数据修改不一致。因此,应该将“职员”关系中的属性“办公室”和“电话”放到“部门”关系中,这样修改后的关系模式如下:
   职员(职员号,职工姓名,月工资,部门号)
   部门(部门号,部门名,负责人代码,任职时间,办公室,电话)
转载请注明原文地址:https://kaotiyun.com/show/j5xZ777K
0

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