总结一下数据库的 一对多、多对一、一对一、多对多 关系

关联映射:一对多/多对一

存在最普遍的映射关系,简单来讲就如球员与球队的关系;

一对多:从球队角度来说一个球队拥有多个球员 即为一对多

多对一:从球员角度来说多个球员属于一个球队 即为多对一

数据表间一对多关系如下图:

关联映射:一对一

一对一关系就如球队与球队所在地址之间的关系,一支球队仅有一个地址,而一个地址区也仅有一支球队。

数据表间一对一关系的表现有两种,一种是外键关联,一种是主键关联。图示如下:

一对一外键关联:

一对一主键关联:要求两个表的主键必须完全一致,通过两个表的主键建立关联关系

关联映射:多对多

多对多关系也很常见,例如学生与选修课之间的关系,一个学生可以选择多门选修课,而每个选修课又可以被多名学生选择。

数据库中的多对多关联关系一般需采用中间表的方式处理,将多对多转化为两个一对多。

数据表间多对多关系如下图:

时间: 2024-10-05 04:26:00

总结一下数据库的 一对多、多对一、一对一、多对多 关系的相关文章

数据库的 一对多、多对一、一对一、多对多 关系

数据库实体间有三种对应关系:一对一,一对多,多对多.一对一关系示例:一个学生对应一个学生档案材料,或者每个人都有唯一的身份证编号.一对多关系示例:一个学生只属于一个班,但是一个学院有多名学生.多对多关系示例:一个学生可以选择多门课,一门课也有多名学生.这三种关系在数据库中逻辑结构处理分析:1.一对多关系处理:我们以学生和班级之间的关系来说明一对多的关系处理方法.假设现有基本表学生表(学号,姓名,--),班级表(班级号,备注信息,--). 方法一:新增一个关系表,用来表示学生与班级的属于关系,该关

jango 模型管理数据model,数据库外键主键与一对一,一对多,多对多关系

四.models.py 定义和管理模型: 4.1模型class的属性就映射与数据库的字段参数 继承models.Model class TestClass(models.Model): 4.2在数据库生成数据表: #django默认在makemigrations会为表对象创建主键id,id = models.AutoField(primary_key=True) 你也可以自定义一个主键对象: 4.2.1: 生成迁移文件python manage.py makemigrations 4.2.2执行

多对多 一对一 一对多 主从 关联 字典

 "订单"表中的主键.  "产品"表中的主键.  一个订单可以包含多种产品 ...   ... 且每种产品可以出现在多个订单上.   课程文本 在多对多关系中,一个表中的一个记录与第二个表中的多个记录相关,第二个表中的一个记录与第一个表中的多个记录相关. 这种类型的关系需要一个称为连接表的第三个表.连接表包含另两个表中的主键,并将它们用作其外键. 例如,"订单"表和"产品"表具有多对多关系.一个订单可以包含多种产品,每种产品可

数据库设计中一对一、多对一、多对多关系依据外键的实现条件及方法

作者:二歪求知iSk2y链接:https://www.jianshu.com/p/2b27c7ba0653来源:简书 下面以departments和staff_info表为例(为staff_info添加指向departments的外键) 一个表的字段作为外键的条件: 列值必须非空且唯一 测试例子如下: mysql> create table departments (dep_id int(4),dep_name varchar(11)); Query OK, 0 rows affected (0

Hibernate中用注解配置一对多双向关联和多对一单向关联

Hibernate中用注解配置一对多双向关联和多对一单向关联 Hibernate提供了Hibernate Annotations扩展包,使用注解完成映射.在Hibernate3.3之前,需单独下载注解开发包 配置持久化类 配置关联关系 下面我们先从多对一单向关联关系讲起,多对一单向关联就是在多的一方植入一的一方的主键作为外键,下面我们先进行初始配置, 在配置的过程中我们会遇到一个问题  就是无论用load还是get都不会出现延迟加载,那么我们应该如何设置为要延迟加载,这样做的好处是可以在用的时候

Mybatis 一对一,一对多,多对一,多对多的理解

First (一对一) 首先我来说下一对一的理解,就是一个班主任只属于一个班级,一个班级也只能有一个班主任.好吧这就是对于一对一的理解 怎么来实现呢? 这里我介绍了两种方式: 一种是:使用嵌套结果映射来处理重复的联合结果的子集 另一种呢是:通过执行另外一个SQL映射语句来返回预期的复杂类型 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis

关联查询 一对多,多对一,多对多,自关联

关联查询: 一对一,一对多,多对一,多对多,自关联 仅供参考:(返回值是对象的是一对多,返回值是集合的是多对一) 一对一过于简单,只是两表连查 一对多: 职位entity: DAO .xml文件 给对象赋值使用collection标签 property:属性名 ofType:类型 测试: 多对一 entity: DAO: .xml文件 给集合赋值使用association property:属性名 javaType:类型 测试: 多对多 entity: DAO: .XML文件 测试 自关联 (说

hibernate 关联关系(多对一、多对多、一对一)的配置

1:多对一 一般关系由多的一方来维护 多的一方需要有一方的字段,一的一方要有多的一方的set集合 一方的配置文件: ClientEntity为一的一方,OrderEntity为多的一方 <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hiberna

创建Oracle数据库、数据库名与实例名与SID之间的关系(图文详解)

目录 目录 软件环境 前言 安装Oracle监听程序 启动停止监听程序 创建数据库 数据库名db_name 数据库实例名instance_name 数据库名与实例名的关系 操作系统环境变量ORACLE_SID 软件环境 操作系统 RHEL 6.1 软件环境 Oracle10gr2 前言 在上一篇RHEL6.1 安装 Oracle10gr2 (图文.解析)中记录了如何成功的在RHEL6.1安装Oracle10gr2,但是在安装的过程中没有创建数据库,本篇主要记录了如果创建数据库和监听程序. 安装O