多对多联系的例子(事物间具有多对多联系的例子)
大家好!今天让创意岭的小编来大家介绍下关于多对多联系的例子的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。
开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等
只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端
本文目录:
一、一对多及多对多关系
生活中的多对一关系:班主任,班级关系。一个班主任可以带很多班级,但是每个班级只能有一个班主任
以上创建了两条老师数据
由于我们设置外键关联可以为空null=True,所以此时在班级表创建时,可以直接保存,不需要提供老师数据
以上创建了两条老师数据
由于我们设置外键关联可以为空null=True,所以此时在班级表创建时,可以直接保存,不需要提供老师数据
将老师分配个班级之后,由于班级表关联了老师字段,我们可以通过班级找到对应老师,虽然老师表中没有关联班级字段,但是也可以通过老师找到他所带的班级,这种查询方式也叫作关联查询
通过模型类名称后追加一个_set,来实现反向查询
由于我们这是一个一对多的关系,也就说明我们的老师可以对应多个班级
我们可以继续给H1老师分配新的班级
一个班级只能对应一个老师,外键是唯一的,那么你在继续给C1班级分配一个新的老师时,会覆盖之前的老师信息,并不会保存一个新的老师
把这个班级的老师删除,由于设置了外键字段可以为null,此时班级的老师选项为null
注意:
1、要记得删除之后要重新获取一次数据,否则查看到的结果中还是之前获取到的有老师的班级数据
2、c1 = Class.objects.all().first()或是c1=Class.objects.filter(id=2).first(),都需要加 .first() ,否则会报错!!!
生活中,多对多关系:一个音乐家可以隶属于多个乐队,一个乐队可以有多个音乐家
创建音乐家以及乐队
创建出两个乐队之后对其进行音乐家的添加,多对多字段添加时,可以使用add函数进行多值增加,在ManyToManyField所在模型的记录使用add方法
B1乐队含有A1,A2两名成员,B2乐队含有A1成员
可以在音乐家表中查找某个音乐家属于哪些乐队
也可以查找这音乐家在哪个乐队
多对多关联字段的删除,要使用remove来进行关系的断开,而不是直接使用delete,remove只会断开数据之间的联系,但是不会将数据删除
在B1乐队中删除A1音乐家
创建一个多对一关系的父子表,一个父亲可能有多个儿子
创建父亲和儿子们
查询所有父亲名字是jack的孩子
查询所有儿子名开头为J的父亲
获取到某一个父亲的所有孩子,通过某一条数据的小写表名_set反向查询
创建一些数据
通过soldier_set我们就可以关联到对应的士兵表,并且对应返回结果可以执行我们常用的filter,exclude等查询操作
也可以通过定义关联字段中的related_name值,来实现自定义的反向查询名字,注意:related_name的值必须唯一
接下来通过某条数据反向查询
注意:related_name一定是一个唯一的值,否则反向查找时会出现二异性错误,也可以将related_name初始化为+,来取消反向查询
二、实体间存在多种联系,什么模型能够描述实体间多对多的联系。
(1)实体:现实世界中的事物;
(2)属性:事物的特性;
(3)联系:现实世界中事物间的关系。实体集的关系有一对一、一对多、多对
三、请问数据库在创建表的时候如何设计表关系,一对一,一对多,多对多 请高手举例说明。谢谢!!!
多对多关系至少需要3个表,我们把一个表叫做主表,一个叫做关系表,另外一个叫做字典表或者副表(字典表是纪录比较少,而且基本稳定的,例如:版块名称;副表是内容比较多,内容变化的,例如)。
按照数据库的增删查改操作,多对多关系的查找都可以用inner join或者
select * from 主表 where id in (select 主表id from 关系表)
1,角色任命型
特点:关系表两外键组合无重复纪录,关系表一般不需要时间字段和主键,有一个表是字典类型的表。
界面特点:显示主表,用checkbox或多选select设置多选关系。
例如:任命版主(用户表-关系表-版块名称表),角色权限控制等,用户是5个版块版主,只要关系表5行纪录就可以确立,关系表的两个外键具有联合主键性质。
增加关系:如果没有组合纪录,insert之。
删除关系:如果有组合纪录,删除之。
2,集合分组型
特点:同角色任命型类似,关系表两外键组合无重复纪录,关系表一般不需要时间字段和主键。区别是主副表都不是字典表,可能都很大不固定。
界面特点:显示主表,用搜索代替简单的checkbox或多选select,或者一条一条的添加。
例如:歌曲专集(专集表-关系表-歌曲表)。手机分组(分组表-关系表-手机表)。用户圈子(圈子表-关系表-用户表)。文章标签(文章表-关系表-标签表)
增加关系:同版主任命型。
删除关系:同版主任命型。
3,明细帐型
特点:关系表可以有重复纪录,关系表一般有时间字段,有主键,可能还有文字型的字段用来说明每次发生关系的原因(消费)。
界面特点:显示关系表,用radio或下拉设置单选关系。
例如:现金消费明细帐或订单(用户表-订单表-消费原因表),用户可能多次在同一事情上重复消费。积分变化纪录也属于这类。
增加关系:不管有没有组合纪录,insert之,纪录时间。
删除关系:根据关系表PK删除。
4,评论回复型
特点:同明细帐型关系表一般有时间字段,有主键,区别是重点在文字型的字段用来说明每次发生关系的内容(评论回复)。
界面特点:回复文本框。
例如:论坛回复(用户表-回复表-帖子表),用户可能多次在不同帖子上评论回复费。
增加关系:不管有没有组合纪录,insert之,纪录时间和文字。
删除关系:根据关系表(回复表)PK删除。
5,站内短信型
特点:主副表是同一个,关系表一般有时间字段,有主键,重点在关系表文字型的字段用来说明每次发生关系的内容(消息)或者其他标记位来表示文字已读状态时间等。
界面特点:回复文本框。
例如:站内短信(用户表-短信表-用户表),用户可能给用户群发或者单发,有标记位来表示文字已读状态时间等。
增加关系:不管有没有组合纪录,insert之,纪录时间和文字。
删除关系:根据关系表(回复表)PK删除。
6,用户好友型
特点:主副表是同一个,同集合分组型,关系表两外键组合无重复纪录,关系表一般不需要时间字段和主键。
界面特点:同集合分组型,显示主表,用搜索代替简单的checkbox或多选select,或者一条一条的添加。
例如:下载站点的文件,(文件表-关系表-文件表)可以被软件工具打开,软件工具本身也是一种文件,可以被下载。用户的好友,也是用户(用户表-好友关系表-用户表)
增加关系:同版主任命型。
删除关系:同版主任命型
四、数据库怎么建立多对多的关系,给各具体的access例子
ACCESS 中不存在多对多的关系,只有一对多的关系……要实现多对多,需要建立中间表,即一个表C有表A,B的关系在其中……
以上就是关于多对多联系的例子相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。
推荐阅读:
拼多多对方已屏蔽了你的消息(拼多多对方已屏蔽了你的消息是拉黑了吗)