我想让这些表符合Inmons 3NF方法(我正在使用Northwind数据库):
我注意到Address的东西不断重复,它甚至不是原子的,所以我决定把另一个表格放在名为“Address”的图表中:
这是有效的方法吗? 由于表地址存储了所有地址,我可以为所有其他表共享它们吗?
由于
答案 0 :(得分:0)
您的解决方案有效且绝对更加规范化。
但是,它尚未在3NF中。严格地说,对于3NF的表,您不能有任何非键的相互依赖关系。在您的示例中,例如,城市和国家之间存在此类依赖关系。因此,每当有人进入巴黎,他们也需要进入法国。如果有人不小心进入德国巴黎,这可能会导致异常。对于3NF,您必须创建一个额外的City表,该表存储城市及其各自的国家/地区。城市将成为关键,国家是非关键属性。地址表将具有城市的外键。为简洁起见,我省略了Postcode和Region,但它们也需要包含在规范化中。所以,要制作这个3NF,你需要更多的实体。
这种复杂性是为什么Kimball的明星模式比Inmon的3NF方法更受欢迎......