此数据库设计是否满足2NF或3NF?

时间:2012-05-15 09:50:30

标签: database oracle database-design database-normalization

好的,我有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,还是两个都没有?

2 个答案:

答案 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。