归一化到3nf和功能依赖两个

时间:2012-06-21 23:53:49

标签: mysql sql database-normalization

我需要识别功能依赖项并将以下表规范化为3NF。我还不清楚所有的依赖关系。

如果我有依赖项,我会将它们推入其他表吗?

视频商店

客户表

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

customerno是我的主键,除numberofbooking以外的所有内容都依赖于customerno

视频表

SerielNo | CopyNumber | title | yearmade | director | origen
  • SerialCode - 在DVD的背面唯一的序列码。
  • CopyNumber - 该视频的副本编号。例如,视频可以存储多个副本,这用于区分每个副本。
  • 标题 - 影片的名称。
  • 一年取得 - 年兴田电影出版。
  • 导演 - 电影导演。
  • 起源 - 其中电影制成的国家。

由于serielno不是唯一的,因此我是goint,因为序列号可以包含多个副本,因此我可以为每个视频添加videoId唯一身份。

租借表

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

不知道该怎么做。

2 个答案:

答案 0 :(得分:0)

根据你列出的内容我会...

  • 删除numberOfBooking列(稍后可以使用rentals表中的子查询干净地计算出来。)
  • Director应该是它自己的表,然后如果需要这种关系,则从Video创建一个外键引用。
  • 使用对customers表的外键引用替换出租表上的customerName列。
祝你好运!

答案 1 :(得分:0)

  • 从customer表中删除NumberOfBooking字段。这是多余的,可以从租赁表中轻松计算出来。

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

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

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

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

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

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