最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

mysql表的relationship

网站源码admin41浏览0评论

mysql表的relationship

mysql表的relationship

数据表关联关系映射 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.wif

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论