两张表,存在着一对多和多对一的关系,谁是主表,谁是从表
数据库表中字段自定义
一个项目类型下有多个项目 一个项目属于一个项目类型 一个项目标签下有多个项目 一个项目可以有多个项目标签
要维护这些关系,两张表可不够用:
项目 和 项目类型:多对一,所以在 项目表 中需要关联 项目类型表 的主键
项目 和 项目标签:多对多,所以需要有张第三方表保存它们之间的关联关系
三张表
1.项目表
2.项目类型表
3.项目标签表
项目和项目标签:可以是一对多,也可以是多对一的关系。
我项目表是小说表,项目标签表是类型,有后宫,玄幻这些类型,小说表引用项目标签表的id,获取类型,但我只能添加数据是一对一的关系,没有一对多的关系,意思是一个小说对应这一个类型,但我想要一个小说对应多个类型,这该怎么解决
项目表字段
id 编号
author 作者
title 书名
status 状态(0停更,1连载中)
typeid 类型id
names 类型名称(项目了下表中)
项目标签字段
id 编号
type 类型
@宋人鱼:
每添加一个关系 就在关联表中 新增一条记录,
查询的时候:
@飒沓流星: 你的意思是项目表和项目标签表不设置主外键关系,创建第四张表,然后第四张表,为主表,外键引用项目表和项目标签表。
@宋人鱼:
一个项目标签下有多个项目 一个项目可以有多个项目标签
要实现这个关系,项目表 和 项目标签表 没办法 设置主外键关系,那就成了一对一了
你现在明显是 多对多的 关系,只能创建一张关联表来维护这个多对多的关系,细品一下
@飒沓流星: 你说的这个我大概知道了,但我还有一个问题,就是你说要创建一张关联表,就像上面你发的图片一样,那这两个字段,要和项目表和项目标签表进行关联,关联表为主表。
对吧?
@宋人鱼:
我觉得主表和从表的概念一般在关联查询的时候才会用到 ,比如:
select a.*,b.* from A a left join B b on a.id = b.id
那么A就是主表,B就是从表
至于说关联表应该算是一个第三方表
@飒沓流星: 那我对项目表和项目标签表进行增删改操作,要不要用到关联表了?
如果要用到关联表
我要对项目表进行增删改查操作,那是否要三表连接查询,然后进行增删改查的操作。
@宋人鱼:
关联表的作用就是维护项目表和项目标签之间的关联关系
@飒沓流星: 好的,谢谢解答我的疑惑
没有绝对的主从表之分,看你需求。
举个例子:有两张表,Class表
和Student表
,一个班有多个学生,Class表
主键CID
是Student表
外键,按照一般理解,Class
是主表,Student
是从表:
1.如果你查询班级信息,那么Class表
就是主表
2.如果你查询学生信息,那么Student表
就是主表
好的,知道了。
但我现在要的是,一对多的关系怎么添加数据,或者多对一的关系怎么添加数据
那就是多对多吧,搞个中间关系表
你的意思是,项目表和项目标签表不设置主外键关系,创建第四张表,然后第四张表为主表,然后引用项目表和项目标签表?
@宋人鱼: 是的,这应该是标准做法
项目Id | 标签Id |
---|---|
1 | 1 |
1 | 2 |
2 | 1 |
2 | 2 |
@会长: 好的,知道了谢谢