练习

规范化案例分析与设计

假设对电子商务系统的业务描述如下:

  • 商品(Product)信息包括编号(Pid)、名称(P_Name)、类别(P Category)、价格(P Price)、生产厂家(P_Facturer)、入库时间(P_time)、详细信息(P Descn)、缩略图(P_ Image)。
  • 订单(Order)信息包括:编号(O_id)、提交时间(O_Time)和当前状态(O_Status)。
  • 购买人(Customer)信息包括姓名(C_Name)、性别(C_Sex)、联系方式(C_Contact)、电子邮箱(C_Email)。

其中,电子邮箱确定唯一购买人,联系方式统一存储了购买者的送货地址(CAddr)、邮政编码(C_Zip)和购买人的手机号码(C_phone)。 订单的购买商品信息包括:商品的名称(P_Name)、商品的类别(P_Category)、商品的缩略图(Image)、商品的购买数量(Qty)、商品的销售单价(P Price1)。上述信息需与商品信息对应。 销售过程为:购买人下单生成订单(Generate),然后再挑选(Pick)商品加入到订单中。

根据以上描述定义如下关系模式:

  • Product (Pid,P_Name,P Category,P Price,P_Facturer,P_time,P Descn,P_ Image)
  • Order(O_id,O_Time,O_Status,C_Email)
  • Customer(C_Name,C_Sex,C_Contact,C_Email)
  • Pick(Oid,P_id,Qty,P Price1)

1 写出每个关系的最小依赖集(基本的函数依赖集,不是导出的函数依赖);指出是否存在传递函数依赖;对于函数依赖左部是多属性的情况,讨论其函数依赖是完全函数依赖还是部分函数依赖,指出各关系的候选码。

(1)Product

函数依赖集:{P_id->P_Name,P_id->P_Category,P_id->P_Price,P_id->P_Facturer,P_id->P_time,P_id->P_Descn,P_id->P_Image}

传递函数依赖:无

部分函数依赖:无

完全函数依赖:{P_id->P_Name,P_id->P_Category,P_id->P_Price,P_id->P_Facturer,P_id->P_time,P_id->P_Descn,P_id->P_Image}

候选码:P_id

(2)Order

函数依赖集:{O_id->O_Time,O_id->O_Status,O_id->C_Email}

传递函数依赖:无

部分函数依赖:无

完全函数依赖:{O_id->O_Time,O_id->O_Status,O_id->C_Email}

候选码:O_id

(3)Customer

函数依赖集:{C_Email->C_Contact,C_Contact->C_Name,C_Contact->C_Sex}

传递函数依赖:C_Name对C_Email传递函数依赖;C_Sex对C_Email传递函数依赖

部分函数依赖:无

完全函数依赖:{C_Email->C_Contact,C_Contact->C_Name,C_Contact->C_Sex}

候选码:C_Email

(4)Pick

函数依赖集:{(O_id,P_id)->Qty,(O_id,P_id)->P_Price1}

传递函数依赖:无

部分函数依赖:无

完全函数依赖:{(O_id,P_id)->Qty,(O_id,P_id)->P_Price1}

候选码:(O_id,P_id)

2.使用数据规范化分析方法,分析每个关系模式属于第几范式。

(1)属于第三范式。每一个属性都是原子属性,没有部分函数依赖于主键,没有传递依赖于主键

(2)属于第三范式。每一个属性都是原子属性,没有部分函数依赖于主键,没有传递依赖于主键

(3)非范式模式。C_Email属性还可以再分为其他的属性,第一范式不满足。

(4)属于第三范式。每一个属性都是原子属性,没有部分函数依赖于主键,没有传递依赖于主键