天天看點

【hibernate架構】關于多對一與一對多關系的剖析

關于一對多,舉個例子,一個使用者組可以包含多個使用者,每個使用者隻能屬于一個使用者組。一個人可以有多輛車,每輛車隻能屬于一個人。這些都是一對多的關系。

打個比方,一個人可以有多輛車,每輛車隻能屬于一個人。

兩張表,一張表person,一張表car。關鍵是他們兩個之間在資料庫表中怎麼設計關聯呢?

person id<int> name<vechar>; 

car id<int> color<vachar>;

錯誤做法:

1.在一方加備援

person id<int> name<vechar> car_id<int>; 

為什麼會産生備援?如果有一個人id=1,name=zhangsan,他有兩輛車,一輛顔色為紅色,一輛顔色為黃色,這樣就要存兩個字段

id=1,name=zhangsan,car_id=1

id=1,name=zhangsan,car_id=2

解決辦法:person取消car_id字段,在car一方加一個person_id(因為一輛車隻能屬于一個人).

即是“在多方加外鍵”的方式。

三大範式:

1.要有主鍵,列不可分

2.聯合主鍵的情況不能出現部分依賴

3.不能存在傳遞依賴

原則:不要讓資料産生備援!同樣的資料存一份就可以。

但老鳥的原則是:具體問題,具體分析,實事求是。

轉載請注明出處:http://blog.csdn.net/acmman