数据库的一对一,一对多,多对多
来源:互联网 发布:淘宝指数查询 编辑:程序博客网 时间:2024/05/22 11:55
关联映射:一对多/多对一
存在最普遍的映射关系,A 表中的一行可以匹配 B 表中的多行,但是 B 表中的一行只能匹配 A 表中的一行。只有当一个相关列是一个主键或具有唯一约束时,才能创建一对多关系。
简单来讲就如球员与球队的关系;
一对多:从球队角度来说一个球队拥有多个球员 即为一对多
多对一:从球员角度来说多个球员属于一个球队 即为多对一
数据表间一对多关系如下图:
关联映射:多对多
在多对多关系中,A 表中的一行可以匹配 B 表中的多行,反之亦然。要创建这种关系,需要定义第三个表,称为结合表,它的主键由 A 表和 B 表的外部键组成。
多对多关系也很常见,例如学生与选修课之间的关系,一个学生可以选择多门选修课,而每个选修课又可以被多名学生选择。
数据库中的多对多关联关系一般需采用中间表的方式处理,将多对多转化为两个一对多。
数据表间多对多关系如下图:
关联映射:一对一
在一对一关系中,A 表中的一行最多只能匹配于 B 表中的一行,反之亦然。如果相关列都是主键或都具有唯一约束,则可以创建一对一关系。
这种关系并不常见,因为一般来说,按照这种方式相关的信息都在一个表中。可以利用一对一关系来:
- 分割具有多列的表。
- 由于安全原因而隔离表的一部分。
- 保存临时的数据,并且可以毫不费力地通过删除该表而删除这些数据。
- 保存只适用于主表的子集的信息。
一对一关系就如球队与球队所在地址之间的关系,一支球队仅有一个地址,而一个地址区也仅有一支球队。
数据表间一对一关系的表现有两种,一种是外键关联,一种是主键关联。图示如下:
一对一外键关联:
hibernate中配置
<class name="Person"> <id name="id" column="personId"> <generator class="native"/> </id> <many-to-one name="address" column="addressId" <span style="color:#FF0000;">unique="true"</span> not-null="true"/></class><class name="Address"> <id name="id" column="addressId"> <generator class="native"/> </id> </class>create table Person ( personId bigint not null primary key, addressId bigint not null unique ) create table Address ( addressId bigint not null primary key )
一对一主键关联:要求两个表的主键必须完全一致,通过两个表的主键建立关联关系
hibernate中配置
<class name="Person"> <id name="id" column="personId"> <generator class="native"/> </id> </class> <class name="Address"> <id name="id" column="personId"> <generator class="foreign"> <param name="property">person</param> </generator> </id> <one-to-one name="person" constrained="true"/> </class>create table Person ( personId bigint not null primary key ) create table Address ( personId bigint not null primary key )
0 0
- 数据库的一对一,一对多,多对多
- 数据库中表关系(一对多,多对多,一对一)
- 数据库设计(一对一、一对多、多对多)
- 数据库设计(一对一、一对多、多对多)
- django中数据库一对一,一对多,多对多关系
- 开始学习数据库操作 一对一,一对多,多对多
- 总结一下数据库的 一对多、多对一、一对一、多对多 关系
- 数据库的 一对多、多对一、一对一、多对多 关系
- 总结一下数据库的 一对多、多对一、一对一、多对多 关系
- 总结一下数据库的 一对多、多对一、一对一、多对多 关系
- 数据库实体之间的关联关系:一对一、一对多、多对多
- MyBatis 一对一、一对多的
- 一对一,一对多,多对多,关系
- 关系:一对一、一对多,多对多。
- hibernate_一对一、一对多、多对多
- 一对一 一对多 多对多
- JPA一对一、一对多、多对多
- Hibernate一对一,一对多,多对多
- 小胖说事10------iOS scrollview作用原理(一个大的scrollview包含一个小的scrollview,如何滑动小的scrollview的时候,大的scrollview滑动小的不动
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
- POJ2003 Hire and Fire
- 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。例如:1 + 2 + 34 – 5 + 67 – 8 + 9 = 100。
- 程序员必须注意的十大编程禁忌
- 数据库的一对一,一对多,多对多
- 整理js跳转到指定页面代码
- 对plist构建数据模型,完成封装实现数据分离
- Go语言爬取网站磁力链接
- mod_python
- DIV+CSS
- 易语言调用 vs2010 vc++ 写出的dll带参数 报堆栈错误的问题
- Java抽象类和接口
- 分辨率大全