天天看点

【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