好的,我有2张桌子。第一个表的名称是owner
和
owner_id primary key
first_name
last_name
我还有另一张表car
和
car_reg_no primary key
car_type
car_make
car_model
car_origin
owner_id foreign key
这个设计是2NF还是3NF,还是两个都没有?
答案 0 :(得分:2)
AFAIK,2NF,由于car
表的字段的相互依赖性。您需要第car_type
个表,其中列出了car_type_id
表中的品牌,型号和原产地以及外国car
。
答案 1 :(得分:1)
3NF意味着它在2NF中并且没有transitive functional dependencies。用一个稍微可以理解的术语来说:“所有属性都依赖于密钥,整个密钥,只有密钥”。
第一张表符合所有这些,所以它在3NF。
第二个表需要一些分析:非密钥是否存在功能依赖性?具体来说,是否可以有属于不同品牌的相同车型?
car_model
- > car_make
不存在,表格为3NF(除非某些其他依赖项违反3NF - 请参阅下面car_origin
的评论)。car_model
- >违反3NF的car_make
。此外,car_origin
的含义是什么?如果它在功能上取决于非键,这也可能违反3NF。