假设我有这个表,其中Pizza Code是主键
这张桌子在3NF吗?如果我更改比萨饼名称,那么价格肯定会受到影响。但与此同时,我可以看到这种依赖是孤立的,所以我的问题是:
答案 0 :(得分:0)
你应该问自己哪个是你桌上的PizzaCode的含义:
这只是缩写名称的一种方式(从当前值看来)?换句话说,更改比萨饼的名称(和价格)的操作是否可以被认为是插入一种新的比萨饼代替旧比萨饼?
它用于唯一地标识某个对象(相同的对象),可以在某个时候更改名称和/或价格吗?
在第一种情况下,只需删除它,并使用PizzaName作为主键(以及Order表中的外键)。更改比萨饼名称及其价格的操作相当于添加新比萨饼并删除旧比萨饼(或者只是你可以标记旧比萨饼的属性可用/不可用如果你想保留跟踪所有出售的比萨饼。)
在第二种情况下,在表Order中使用PizzaCode作为主键和外键。