【问题标题】:How to normalize this table如何规范化此表
【发布时间】:2012-04-06 16:46:21
【问题描述】:

您好,这是我的非规范化表

BookOrNo  PublisherCode  PublisherName  PublisherAddr PubishedDate  ISBNno Desc     Qty  Price 
B001      P120           A              …….          3/2/11        01-9   Fiction   3   20.00 
                                                                   01-10  Fashion   6   25.00
B002      P121           B              …….          3/2/11        01-11  sports    15  30.00 

我试图规范化但我失败了。这是我的标准化步骤

BookOrder (BookOrNo,PublisherCode,ISBNno,Qty)
Book (ISBNno,Desc,Price,PublishedDate)
Publisher(PublisherCode,PublisherName,PublisherAddr)

将 STEPS 标准化为 1NF、2NF、3NF。

【问题讨论】:

  • 这是作业吗?你应该这样说。 (或者如果没有这样说)。这里有一些问题要问自己:当您从亚马逊订购几本书时,他们会为该图书订单为出版商提供什么?
  • “我失败了” - 你怎么知道?
  • 您的 Book 和 Publisher 最高为 3NF(假设 ISBNno 是您在 Book 中的主键)。 BookOrder 需要工作。您是否需要已经拥有 ISBNNo 的 PublisherCode?价格呢?它在书中,但这最终会改变。订单必须保持不变,因此您也需要那里的价格。你在正确的轨道上。
  • BCNF 和 5NF 怎么样?
  • ...大多数设计师使用常识和经验,而不是应用正式的规范化过程,并且大多数时候他们要么达到 5NF,要么达不到 1NF(重复行、非标量值、空值等)。根据我的经验,代码审查应该确定一个没有完全规范化的设计,但参与者从不花时间担心它是否符合 2NF、3NF、4NF 等,如果你告诉他们,设计者可能不会在意!

标签: sql database database-design normalization


【解决方案1】:

大家好,感谢您的解释。 2天后,我解决了这个问题。

@Levin Magruder 是的,这是我的作业

@onedaywhen。是的,你是绝对正确的。我可以直接将规范化表转换为规范化。但是我不能一步一步来。但现在我感谢我可以。 :)。

这是我的答案。希望这对某人有所帮助。

【讨论】:

    猜你喜欢
    • 2015-05-24
    • 1970-01-01
    • 2015-08-24
    • 2011-03-08
    • 2012-09-01
    • 1970-01-01
    • 2011-05-09
    • 2021-11-07
    • 2016-07-08
    相关资源
    最近更新 更多