mysql表的relationship_数据表关联关系映射 Relationship Map

本文介绍了MySQL数据表之间的三种关联关系:一对一、一对多和多对多映射。详细阐述了每种关系的使用场景、实现方式以及数据查询操作,包括外键和反向查询。通过示例代码展示了如何在Django ORM中创建和操作这些关联关系。
摘要由CSDN通过智能技术生成

数据表关联关系映射 Relationship Map

在关系型数据库中,通常不会把所有数据都放在同一张表中,这样做会额外占用内存空间,

在关系列数据库中通常用表关联来解决数据库。

用的表关联方式有三种:

一对一映射

如: 一个身份证对应一个人

一对多映射

如: 一个班级可以有多个学生

多对多映射

如: 一个学生可以报多个课程,一个课程可以有多个学生学习

一一对一映射

一对一是表示现实事物间存在的一对一的对应关系。

如:一个家庭只有一个户主,一个男人有一个妻子,一个人有一个唯一的指纹信息等

1.语法:

在关联的两个类中的任何一个类中:classA(model.Model):

...classB(model.Model):

属性= models.OneToOneField(A)

2.用法

(1)创建作家和作家妻子类

#file : xxxxxxxx/models.py

from django.db importmodelsclassAuthor(models.Model):'''作家模型类'''name= models.CharField('作家', max_length=50)classWife(models.Model):'''作家妻子模型类'''name= models.CharField("妻子", max_length=50)

author= models.OneToOneField(Author) #增加一对一属性

(2)查询

在 Wife 对象中,通过 author 属性找到对应的author对象

在 Author 对象中,通过 wife 属性找到对应的wife对象

(3)创始一对一的数据记录

from . importmodels

author1= models.Author.objects.create(name='王老师')

wife1= models.Wife.objects.create(name='王夫人', author=author1) #关联王老师

author2 = models.Author.objects.create(name='张老师') #一对一可以没有对应的数据

(4)一对一数据的相互获取

1.正向查询

直接通过关联属性查询即可

#通过 wife 找 author

from . importmodels

wife= models.Wife.objects.get(name='王夫人')print(wife.name, '的老公是', wife.author.name)

2.反向查询

通过反向引用属性查询

反向引用属性为实例对象,引用类名(小写),如作家的反向引用为作家对象.wife

当反向引用不存在时,则会触发异常

#通过 author.wi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值