标准化和3NF

时间:2016-04-25 10:46:30

标签: sql database database-normalization

假设我有这个表,其中Pizza Code是主键

pizza table

这张桌子在3NF吗?如果我更改比萨饼名称,那么价格肯定会受到影响。但与此同时,我可以看到这种依赖是孤立的,所以我的问题是:

  1. 用当前的数据结构,其中的依赖关系 名称/价格被隔离在一个单独的表中,我们可以这样说 表在3NF?
  2. 如果2个非关键表列是较大的一部分,例如“订单” 表,然后Orders表不会在3NF,对吧?

1 个答案:

答案 0 :(得分:0)

你应该问自己哪个是你桌上的PizzaCode的含义

  1. 这只是缩写名称的一种方式(从当前值看来)?换句话说,更改比萨饼的名称(和价格)的操作是否可以被认为是插入一种新的比萨饼代替旧比萨饼?

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

  3. 在第一种情况下,只需删除它,并使用PizzaName作为主键(以及Order表中的外键)。更改比萨饼名称及其价格的操作相当于添加新比萨饼并删除旧比萨饼(或者只是你可以标记旧比萨饼的属性可用/不可用如果你想保留跟踪所有出售的比萨饼。)

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