【发布时间】: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