2016-04-25 151 views
0

说我有这个表,其中比萨代码是主键规范化和3NF

pizza table

这是表中3NF?如果我更改比萨名称,那价格肯定会受到影响。但在同一时间,我可以看到,这种依赖是孤立的,所以我的问题是:

  1. 在当前的数据结构,其中的 名称/价格依赖于一个单独的表是孤立的,我们可以说那这个 表是在3NF吗?
  2. 如果2个非关键表列是更大的“订单”表的一部分,那么订单表将不在3NF中,对不对?
+0

正确。只在匹配表中存储匹萨。 – jarlh

+0

您可能正在寻找一个缓慢变化的维度,因此对于给定的代码,名称和价格可随时间变化。 –

回答

0

你应该问自己,这是意思PizzaCode的在你的表:

  1. 这仅仅是一个(从目前的值,因为它似乎)缩写名称的方式?换句话说,改变比萨饼的名称(和价格)的操作是可以被认为是插入新的比萨饼而不是旧的比萨饼的操作?

  2. 它用于唯一标识某个对象(对象相同对象),可以改变某个时间的名称和/或价格?

在第一种情况下,摆脱它,并使用PizzaName作为主键(和作为外部键在订单表中)。改变披萨的名称及其价格的操作将相当于增加一个新的比萨和删除旧的披萨(或者,如果您想保留原有的/不可用的属性跟踪所有有售的比萨饼)。

在第二种情况下,使用PizzaCode作为主键和表中的外键。