【问题标题】:Database Normalization using composite key?使用复合键的数据库规范化?
【发布时间】:2012-04-27 02:56:11
【问题描述】:

您好,我一直在思考我要解决的数据库规范化问题几个小时。在我的问题中,我有一个复合主键,并且该键的一列中的数据具有多个值。主键的一列中的多个值是主要问题。我想知道在第一范式中是否只删除除主键以外的重复组,或者也将删除具有多个值的主键列。对于你们人们来说,理解起来可能还是很模糊。所以我发布了表格的截图:

http://tinypic.com/view.php?pic=ev47jr&s=5

(请打开上图查看表格)

这里我想问的问题是,在第一个范式中,是否只删除第 4、5、6、7 列还是删除第 2 列(因为它还包含多个值)?

如果我不删除第 2 列,那么它不会进入 1NF,但如果我也删除它,那么它将直接进入 3NF。帮忙?

谢谢。

【问题讨论】:

  • 我只是想要一个提示,因为我知道这违反了你的“道德”来帮助完成作业。
  • 您不能在 1NF 的 any 列中保留多个值。
  • 图像不再可用。您能否提供您的表格的有效链接?

标签: database normalization


【解决方案1】:

这里我想问的问题是,是否在第一范式中 只有第 4、5、6、7 列将被删除或第 2 列将被删除 也被删除

将更改包含多个值的所有列。这包括第 2 列。

如果我不删除第二列,那么它不会出现在 1NF 中,但如果我 也去掉,直接进入3NF。

标准化不能这样工作:

  • 确定在 1NF 中,但在 2NF 中还没有的结构。
  • 确定 在 2NF 中,但在 3NF 中还没有的结构。
  • 确定 在 3NF 中,但在 BCNF 中还没有的结构。
  • 确定 在 BCNF 中,但在 4NF 中还没有的结构。
  • 确定结构 在 4NF 中,但在 5NF 中还没有
  • 确定 在 5NF 中,但在 6NF 中还没有的结构。

关系模型并不是说对于每个在 1NF 中的关系 R,都存在一个分解,即 在 2NF 中,但在 3NF 中还没有。只是没有这么说,但这是一个常见的误解。

在实践中,移除部分键依赖以达到 2NF 并发现结果在 5NF 中并不罕见。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-20
    • 2015-06-10
    • 2012-01-11
    • 1970-01-01
    • 2012-08-10
    • 2012-10-08
    • 2012-06-21
    相关资源
    最近更新 更多