【说明】 在一个航空公司的航班管理系统中,有以下一些事实。 (1)一个航班可能是一个或多个乘客的运输工具,每个乘客可能是一个或多个航班的旅客。 (2)一个且仅一个飞行员必须对每个航班负责,每个飞行员可能负责一个或多个航班。 (3)一个或多个飞行员必须对每个乘客负责,每个飞行员必须对一个或多个乘客负责。 现有飞行员的实体如下: 飞行员(飞行员编号,航班编号,姓名,工资,起飞地,到达地,飞行信用时间) 说明:飞行信用时间是一个特定的航班分配给一名飞行员,授权他可以驾驶管理这个航班。 【问题1】 实体“飞行员”是否符合1NF,如果不符合,如何将它规范化。 【问题2】 由问题1得到的实体“飞行员”是否符合2NF,如果不符合,如何将它规范化。 【问题3】 指出最后得到关系模式的候选码。
参考答案:
解析:[问题1] 航班(航班编号,起飞地,到达地) 飞行员(飞行员编号,航班编号,飞行员姓名,工资,飞行信用时间) [问题2] 飞行员(飞行员编号,飞行员姓名,工资) 信用时间(飞行员编号,航班编号,信用时间) [问题3] 航班一航班编号;飞行员—飞行员编号:信用时间—飞行员编号,航班编号 为了将飞行员实体转换成1NF,必须将它划分成两个实体:飞行员和航班。 航班(航班编号,起飞地,到达地) 飞行员(飞行员编号,航班编号,飞行员姓名,工资,飞行信用时间) 问题1中得到的飞行员实体不属于2NF,因为尽管复合键是(Flight-Id,Pilot-Id),但是Flight-Time-Credited是只依赖于Flight-Id,而不依赖于Pilot-Id。因此,应将它划分为两个实体,即飞行员和信用实现。如下: 飞行员(飞行员编号,飞行员姓名,工资) 信用时间(飞行员编号,航班编号,信用时间)