0

好的,所以我有 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 或者两者都不是?

4

2 回答 2

2

AFAIK,2NF,由于car表字段的相互依赖。您将需要第三张表,car_type其中列出了制造商、型号和原产地,以及表car_type_id中的外来物car

于 2012-05-15T09:55:11.990 回答
1

3NF 意味着它在 2NF 中,并且没有传递函数依赖。用一种更容易理解的术语来说:“所有属性都依赖于密钥,整个密钥,只有密钥”。

第一个表满足了所有这些,所以它在 3NF 中。

第二张表需要分析一下:非键是否存在函数依赖?具体来说,可以有属于不同品牌的相同车型吗?

  • 如果是,那么函数依赖car_model->car_make 不存在,并且该表在 3NF 中(除非其他一些依赖违反 3NF - 请参阅car_origin下面的评论)。
  • 不,然后有car_model->car_make违反了 3NF。

还有,是什么意思car_origin?如果它在功能上依赖于非密钥,这也可能违反 3NF。

于 2012-05-15T11:16:40.280 回答