问题 问答题


阅读下列说明,回答问题1至问题3,将解答填入的对应栏内。
[说明]
M公司为某宾馆设计宾馆机票预订系统,初步的需求分析结果如下:
(1)客户可以在提前预订或直接入住时向宾馆提供相关信息,宾馆登记的客户信息.包括:客户编号,姓名,性别,类型,身份证号,联系方式,预订日期,入住时间和离开时间等信息。其中类型字段说明客户是普通客户或VIP客户,不同的客户类型享受订票的折扣额度不同。直接入住的客户其预订日期取空值。
(2)需要预订机票的客户应填写“机票预订”表,提供飞行日期、航班号、出发时间、目的地等信息。宾馆根据客户订票信息购票后,生成“客户订单”表,并根据客户类型确定相应的折扣额度。“机票预订”和“客户订单”表如下表1、表2所示。

表2 “客户订单”示例
客户编号飞行日期航 班 名机票订单号折扣额度
A100012009.5.1AZ100900010.8
A100012009.5.3AC400900010.8
A100012009.5.5KC560900010.8
A100012009.8.6AZ100900010.8
A100022009.5.1AZ100900020.9
A100022009.5.3AC400900020.9
B100012009.5.5BC600900030.9
B100022009.5.5BC600900040.85
B100012009.8.9AZ320912060.9
B100022009.9.5KC560912070.85
[逻辑结构设计]
根据需求阶段收集的信息,设计的关系模式如下图所示。

关系模式的主要属性、含义及约束如下表3所示。

[问题1]
对关系“客户”,请回答以下的问题:
(1)若选定(客户编号,预订日期)作为主码,未预订而直接入住的客户信息能否录入客户表 如不能,请说明原因。
(2)对“客户”关系增加一个流水号属性作为主码,“客户”关系属于第几范式 还存在哪些问题
(3)将增加入住标识属性后的“客户”关系分解为第三范式,分解后的关系名依次取客户1、客户2、…。

答案

参考答案:

解析:(1)不能,因为预订日期是主属性,直接入住客户的预订日期应该取空值,这违反实体完整性约束,记录无法插入到客户表。
(2)“客户”关系属于2NF,存在数据冗余等问题。若某一客户有多次预订及入住信息,则其姓名等信息将重复多次。
(3)“客户”分解为第三范式如下所示:


[分析]: (1)若选定(客户编号,预订日期)作为主码,未预订而直接入住的客户信息是不能记入客户表的。因为预订日期是主属性,直接入住客户的预订日期应该取空值,这违反实体完整性约束,所以对于直接入住的客户信息记录是无法插入到客户表中。
(2)对“客户”关系增加一个流水号属性作为主码,“客户”关系属于第二范式,存在数据冗余等问题。如表4所示。

从表4所示的例子可以看出,A10001客户有3次预订信息,则其姓名、性别、身份证号、联系方式和类型信息将重复3次。
(3)将增加入住标识属性后的“客户”关系分解为第三范式如下所示:


从表5和表6可以看出,将“客户”关系分解为第三范式后能消除信息冗余及插入删除的不一致性。

表5 客户关系举例
客户编号姓名性别身份证号联系方式类型
A10001李军40011180120121138001221VIP
A10002张晓丽61015183030611256732222普通
A10003王向东32021178091132171628354普通
表6 客户2关系举例
流水号客户编号预订日期入住时间离开时间
10001A100012009.5.12009.5.1.08.302009.5.6.12.00
10002A100012009.5.132009.5.13.14.002009.5.18.09.00
10003A100012009.7.5
10004A100022009.8.6
10005A100032009.5.112009.11.09.202009.5.21.11.30
10006A100032009.8.3

单项选择题 A1型题
单项选择题