数据库中表关系(一对多,多对多,一对一)
2016-03-08 11:41
471 查看
一对多关系
一对多关系是最普通的一种关系。在这种关系中,A 表中的一行可以匹配 B 表中的多行,但是 B 表中的一行只能匹配 A 表中的一行。例如,publishers和
titles表之间具有一对多关系:每个出版社出版很多书,但是每本书名只能出自一个出版社。
只有当一个相关列是一个主键或具有唯一约束时,才能创建一对多关系。
多对多关系
在多对多关系中,A 表中的一行可以匹配 B 表中的多行,反之亦然。要创建这种关系,需要定义第三个表,称为结合表,它的主键由 A 表和 B 表的外部键组成。例如,authors和
titles表具有多对多关系,这是由于这些表都与
titleauthors表具有一对多关系。
titleauthors表的主键是
au_id列(
authors表的主键)和
title_id列(
titles表的主键)的组合。
一对一关系
在一对一关系中,A 表中的一行最多只能匹配于 B 表中的一行,反之亦然。如果相关列都是主键或都具有唯一约束,则可以创建一对一关系。这种关系并不常见,因为一般来说,按照这种方式相关的信息都在一个表中。可以利用一对一关系来:
分割具有多列的表。
由于安全原因而隔离表的一部分。
保存临时的数据,并且可以毫不费力地通过删除该表而删除这些数据。
保存只适用于主表的子集的信息。
相关文章推荐
- Redis入门很简单之二【常见操作命令】
- SQL Server存储过程中编写事务处理的方法小结
- Redis入门很简单之一【简介与环境搭建】
- Mysql 文件配置(my.ini)
- SQL语言的一些归纳总结
- postgresql数据库备份和恢复
- mysql慢查询日志分析
- 数据库死锁
- SQL视图的好处
- mongodb 中data lock解决方法
- oracle表分区详解
- 20160308 C#代码实现Excel数据导入到SQL Server数据库中
- 数据库怎么设置代码折叠?
- sqoop使用mysql做为metastore
- 让Sql语句区分大小写
- mysql中间件atlas的相关问题
- 妥妥解决MySqL中文乱码问题,就这么任性
- 常用sql
- MYSQL where 1=1 的作用
- mongodb的shell执行脚本-js脚本