【hibernate框架】关于多对一与一对多关系的剖析

来源:互联网 发布:海洋污染数据 编辑:程序博客网 时间:2024/06/14 17:25
关于一对多,举个例子,一个用户组可以包含多个用户,每个用户只能属于一个用户组。一个人可以有多辆车,每辆车只能属于一个人。这些都是一对多的关系。

打个比方,一个人可以有多辆车,每辆车只能属于一个人。

两张表,一张表Person,一张表Car。关键是他们两个之间在数据库表中怎么设计关联呢?

Person id<int> name<vechar>; 
Car id<int> color<vachar>;

错误做法:
1.在一方加冗余
Person id<int> name<vechar> car_id<int>; 
Car id<int> color<vachar>;

为什么会产生冗余?如果有一个人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

0 0
原创粉丝点击