[问题2]对关系“旅客”,请回答以下的问题: (1)针对“旅客”关系,用100字以内文字简要说明会产生什么问题,并加以修正。 (2)列出修正后的关系模式的所有候选键。 (3)把“旅客”分解为第三范式,并用图4-1所示的关系模式的形式表示,分解后的关系名依次取旅客1、旅客2、…。
参考答案:
解析:[问题2]解答参考答案:1 (1)在题中给出的“旅客”关系中,不同的团队会有相同的旅客编号,所以,旅客编号不能作为候选键,如果同一旅客不同时间参加不同的团队将导致“身份证号”无法确定关系中的每一个元组,所以“身份证号”也不能作为候选键。为此,需要增加一个“团队编号”的属性。又由于{(身份证号,团队编号)→旅客编号;(旅客编号,团队编号)→身份证号;身份证号→(姓名,联系方法,出生日期,性别)},所以该关系模式存在部分函数依赖,导致旅客参加多少次团队,其姓名等信息将重复多少次。 (2)候选键:(身份证号,团队编号)和(旅客编号,团队编号) (3)“旅客”分解为第三范式如下所示:
参考答案:2 (1)在题中给出的“旅客”关系中,不同的团队会有相同的旅客编号,所以,旅客编号不能作为候选键,如果同一旅客不同时间参加不同的团队将导致“身份证号”无法确定关系中的每一个元组,所以“身份证号”也不能作为候选键。为此,可以通过修改“旅客编号”属性的定义加以解决,旅客编号由“团队编号+队内编号”来解决。这时关系的候选键为“旅客编号”,该关系模式存在传递依赖,导致旅客参加多少次团队,其姓名等信息将重复多少次。 (2)候选键:旅客编号。 (3)“旅客”分解为第三范式如下所示:
[分析]: 问题2可以有两种解题思路。 第一种解题方法: (1)在题中给出的“旅客”关系中,不同的团队会有相同的旅客编号,所以,旅客编号不能作为候选键,如果同一旅客不同时间参加不同的团队将导致“身份证号”无法确定关系中的每一个元组,所以“身份证号”也不能作为候选键。为此,需要增加一个“团队编号”的属性。又由于{(身份证号,团队编号)→旅客编号:(旅客编号,团队编号)→身份证号;身份证号→(姓名,联系方法,出生日期,性别)},所以该关系模式存在部分函数依赖,导致旅客参加多少次团队,其姓名等信息将重复多少次。 (2)候选键:(身份证号,团队编号)和(旅客编号,团队编号) (3)“旅客”分解为第三范式如下所示:
第二种解题方法: (1)在题中给出的“旅客”关系中,不同的团队会有相同的旅客编号,所以,旅客编号不能作为候选键,如果同一旅客不同时间参加不同的团队将导致“身份证号”无法确定关系中的每一个元组,所以“身份证号”也不能作为候选键。为此,可以通过修改“旅客编号”属性的定义加以解决,旅客编号由“团队编号+队内编号”来解决。这时关系的候选键为“旅客编号”,该关系模式存在传递依赖,导致旅客参加多少次团队,其姓名等信息将重复多少次。 (2)候选键:旅客编号。 (3)“旅客”分解为第三范式如下所示: