2NF数据库规范化

时间:2016-04-19 19:12:27

标签: mysql database normalization database-normalization

美好的一天 -

我正在完成基于以下信息创建数据模型的任务。

  

您的任务是创建用于存储以下内容的模型   信息:专辑和列表       每个专辑封面(图像文件),一个专辑的曲目,乐队的唱片标签或标签       流派和乐队成员。

到目前为止我创建了五个表。我必须覆盖规范化部分但是我对它感到困惑。我创建的一个表有以下列和数据。

bandMember

  1. bandMemberId - 自动增量
  2. bandladelId - FK
  3. 实名
  4. 昵称
  5. memberphoneNo
  6. memberRole
  7. memberActive
  8. memberdob
  9. memberAge
  10. 此表到目前为止已有以下数据。

    enter image description here

    为了解决这个问题,我删除了逗号分隔值,并为数据添加了每一行。现在它看起来像这样。

    enter image description here

    有人可以指导我如何拆分此表并删除此问题(如果存在规范化)?因为我也在这里与主键混淆。 Internet上引用的示例基于Age列。但我没有得到这些例子。在此先感谢。

1 个答案:

答案 0 :(得分:0)

将具有多值属性的行拆分为多行的步骤看起来几乎就像解决重复组以实现1NF的步骤。但是,在该转换中,每个新行都会获得原始对应值的副本。您的自动增量列为新行增加,因此您的第二个表是另一个问题,而不是第一个表的1NF版本。

转换为1NF的第一个表将有2行,bandMemberId值为1并使用(bandMemberId, memberRole)作为候选键。由于所有非素数属性仅依赖于bandMemberId,因此这是部分依赖性。将(bandMemberId, memberRole)复制到单独的表并从memberRole表中删除bandMember将为我们提供2NF架构。你不提供任何功能依赖,所以我不确定模式是否也在3NF中。