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

简介:
关于一对多,举个例子,一个用户组可以包含多个用户,每个用户只能属于一个用户组。一个人可以有多辆车,每辆车只能属于一个人。这些都是一对多的关系。

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

两张表,一张表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

相关文章
|
2月前
|
SQL 缓存 Java
框架分析(9)-Hibernate
框架分析(9)-Hibernate
|
5天前
|
Java 数据库连接 数据库
探索JPA生态:Hibernate与其他ORM框架的对比分析
【6月更文挑战第25天】**JPA标准下的Hibernate是流行的ORM实现,提供丰富功能如二级缓存和延迟加载,但其学习曲线较陡,性能优化复杂。相比如MyBatis,Hibernate的JPQL更面向对象,MyBatis则接近SQL。选择ORM需考虑项目需求和个人偏好。**
|
10天前
|
Java 数据库连接
杨老师课堂之JavaEE三大框架Hibernate入门第一课
杨老师课堂之JavaEE三大框架Hibernate入门第一课
8 0
|
2月前
|
SQL Java 数据库连接
Java从入门到精通:3.1.2深入学习Java EE技术——Hibernate与MyBatis等ORM框架的掌握
Java从入门到精通:3.1.2深入学习Java EE技术——Hibernate与MyBatis等ORM框架的掌握
|
2月前
|
SQL 缓存 Java
Java一分钟之-Hibernate:ORM框架实践
【5月更文挑战第15天】Hibernate是Java的ORM框架,简化数据库操作。本文列举并解决了一些常见问题: 1. 配置SessionFactory,检查数据库连接和JDBC驱动。 2. 实体类需标记主键,属性映射应匹配数据库列。 3. 使用事务管理Session,记得关闭。 4. CRUD操作时注意对象状态和查询结果转换。 5. 使用正确HQL语法,防止SQL注入。 6. 根据需求配置缓存。 7. 懒加载需在事务内处理,避免`LazyInitializationException`。理解和避免这些问题能提升开发效率。
43 0
|
2月前
|
SQL Java 关系型数据库
数据库访问:什么是Hibernate框架?
【4月更文挑战第15天】Hibernate是开源ORM框架,将Java对象与数据库表映射,简化对象-关系映射,提升开发效率和性能。它自动化处理数据操作,支持多种数据库,自动生成SQL,提供配置选项和高级特性,减少手动SQL编写,便于切换数据库。
39 2
|
12月前
|
SQL XML 存储
Hibernate框架【五】——基本映射——多对多映射
Hibernate框架【五】——基本映射——多对多映射
145 0
|
2月前
|
SQL XML Java
Hibernate - 单向多对一关联关系映射
Hibernate - 单向多对一关联关系映射
21 0
|
10月前
|
Java 数据库连接
简述使用Hibernate框架的几个步骤
简述使用Hibernate框架的几个步骤
44 0
|
11月前
|
SQL Java 关系型数据库
Hibernate框架概述
Hibernate框架概述
89 0