2012-05-15 81 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