2016-11-07 42 views
0

我想使这些表匹配Inmons 3NF方法(IM工作的Northwind数据库):此更改是否与northwind数据库中的3NF匹配?

Before

我注意到地址的事情不断重复,而它不是有点甚至原子,所以我决定把另一表图所谓的“地址”是这样的:

After

这是有效的方法? 由于表地址存储所有的地址无论如何我可以分享他们的所有其他表?

谢谢

回答

0

您的解决方案是有效的,肯定是更规范化。

但是,它不在3NF呢。严格地说,对于一个表在3NF中,你不能有任何非关键的相互依赖关系。在你的例子中,例如在城市和国家之间存在这种依赖关系。所以每次有人进入巴黎时,他们也需要进入法国。如果有人意外进入德国巴黎,这可能会导致异常情况。对于3NF,您必须创建一个额外的城市表格,用于存储城市及其各自的国家/地区。城市将是关键,国家是非关键属性。地址表将有一个外键到城市。为简洁起见,我省略了邮政编码和区域,但它们也需要包含在规范化中。所以,为了制作这个3NF,你需要更多的实体。

这个复杂性就是为什么Kimball的星型模式比Inmon的3NF模式更受欢迎......