2012-05-15 41 views
0

好,所以我有2个表。第一个表的名字是owner此数据库设计是否满足2NF或3NF?

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

这功课吗?如果是这样,请将其标记为。 –

+0

没有不作业。 –

回答

1

3NF表示其在2NF并且没有transitive functional dependencies。用一个更容易理解的术语来说:“所有属性都取决于密钥,整个密钥,而只有密钥。

第一张桌子满足所有这一切,所以它在3NF。

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

  • 如果是,则函数依赖car_model - >car_make不存在,桌子是3NF(除非其他一些依赖违反3NF - 见下面car_origin评论)。
  • 它不,那里有car_model - >car_make它违反了3NF。

另外,car_origin的含义是什么?如果它在功能上取决于非键,这也可能违反3NF。

+0

不同制造商制造的2辆车不能有相同的车型,所以我猜它违反了3NF。 –

+0

@SomeBody Yup,这将意味着它违反了3NF。 –

2

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

+0

我同意车型数据将被复制 –

+0

规范化与添加代理ID号无关。 –

+0

@Catcall:不,但它确实与重复数据有关。新领域只是达到目的的手段。 – Amadan