2012-06-21 38 views
1

我需要确定函数依赖关系并将以下表格归一化为3NF。我仍然不清楚所有的依赖关系。归一化为3nf和函数依赖关系两个

如果我有依赖关系,我会将它们推送到其他表吗?

音像店

Customer表

customerNo | customername | address | phone | numberofbooking 
  • 客户号 - 与客户相关的唯一编号。
  • 客户名称 - 客户的名称。
  • 地址 - 客户地址。
  • 电话 - 客户的电话号码。
  • 租金数量 - 当前租用的客户数量。

customerno是我的主键,除了numberofbooking一切都依赖于customerno

视频表

SerielNo | CopyNumber | title | yearmade | director | origen 
  • SerialCode - 在DVD的背面唯一的序列码。
  • CopyNumber - 该视频的副本号码。例如,视频可以在商店中拥有多个副本,这用于区分每个副本。
  • 标题 - 电影的名称。
  • 制作年份 - 年份电影发行。
  • 导演 - 电影导演。
  • 原产地 - 制作电影的国家。

由于serielno不是唯一的我或复制我goint到videoId独特添加到每个视频数作为序列号可以有多个副本。

租金表

title | customerName 
  • 标题 - 已租用的视频名称。
  • customername - 租借电影的客户的名称。

不知道该怎么办。

+0

忘掉目前的租金。我是小姐材料/标题 - >版 - >中等 - >复制/实例。下一步:我要租用什么,标题或副本? – wildplasser

回答

0
  • 从客户表中删除NumberOfBooking字段。这是多余的,可以很容易地从租赁表中计算出来。

  • 考虑将视频表分成两个表格,其中一个包含唯一视频的信息,另一个包含有关每个视频副本的信息。

  • 考虑添加一个id来识别视频副本,这比序列号和视频副本号码的组合更容易使用。

  • 考虑添加导演表,因为一些导演会制作多个视频。

  • 考虑添加国家/地区表,因为许多视频将来自同一个国家/地区。

  • 在租赁表中使用客户编号,而不是客户名称。客户名称可能不唯一。

  • 在出租表中使用视频副本的标识,而不是视频标题。

+0

感谢您的帮助。 –

0

从你列出什么,我会......

  • 删除numberOfBooking列(这可以干净地从rentals表后的子查询计算。)
  • Director应该可能是它自己的表,然后如果需要该关系,则从Video创建一个外键引用。
  • 使用对客户表的外键引用替换租赁表上的customerName列。

祝你好运!

+0

感谢您的帮助 –