我本来的想法是一个作者表一个文章表,文章表有一个外键是作者 id 。今天看到有人说应该设计一个中间表存放两者之间的关系。哪种比较好?
1
ChoateYao 2020-05-14 09:20:14 +08:00
你一篇文章会有多个作者吗?以后会有这个功能嘛?
没有你用中间表做什么? |
2
mijimoji 2020-05-14 09:24:14 +08:00
你要搞明白,一对一,一对多,多对多的关系
你这个大部分是一对一的关系(一篇文章对应一个作者) 一对多,多对多才要用中间表 |
3
RHxW 2020-05-14 09:30:54 +08:00
用 ORM 的话中间表是自动生成的
|
4
shawnbluce 2020-05-14 10:05:53 +08:00
简单来说,你在文章表里加一个作者字段就好了,不要在作者表里加一个“我写的文章们”的字段
|
5
Hayek 2020-05-14 10:22:57 +08:00
一个文章如果有多个作者才需要这样设计。
但是如果只是博客或者一般企业信息网站,总共也没有几万篇文章,文章表的作者字段就是逗号分隔的 id 都可以,反正数据量小。 |
6
glp664186796 OP @mijimoji 但是一个作者可以发表多篇文章,所以是一对多吧?
|
7
glp664186796 OP @ChoateYao 我就是没有明白中间表的价值是什么
|
8
glp664186796 OP @RHxW 那我就只需要做一个作者表和一个文章表,在文章表里加个外键,是吧?
|
9
glp664186796 OP @shawnbluce 我不会在作者表里加“我的文章们”这样的东西。不过一个作者表一个文章表,和一个文章表里加个作者字段,这两种有什么区别吗?
|
10
glp664186796 OP @Hayek 嗯,数据量确实不大。我就是想知道正确的做法是什么。
|
11
ElCorazon 2020-05-14 11:02:54 +08:00
没有正确的做法,是根据需求来的
|
12
RHxW 2020-05-14 11:06:51 +08:00
@glp664186796
对的,这个外键就是作者和文章一对多,不需要中间表 多对多的时候需要中间表 你试一下就知道了,文章里加一个 ManyToManyField,然后看数据库,django 会自动把中间表建好,里面保存的是作者和文章的多对多关系 |
13
bnm965321 2020-05-14 11:15:04 +08:00
一篇文章是有可能有多个作者的,不过大部分情况是一个作者
|
14
HashV2 2020-05-14 11:31:35 +08:00
建议先学习一下数据库的知识,还有就是 django orm 不需要你关心这么多,你只要把业务逻辑理顺了指定一对多还是多对多就好,orm 会帮你建立关系表的。
|
15
jmc891205 2020-05-14 11:35:44 +08:00
你用 django 的时候不用考虑这么多吧
你在 model 里定义了多对多的关系,django 就自动帮你建个中间表了 |
16
glp664186796 OP @jmc891205 就是说只要建文章表和作者表,设个外键,其他的不用管是吧
|
17
glp664186796 OP @HashV2 好的,谢谢
|
18
fxxkgw 2020-05-14 15:25:48 +08:00
多对多可以用中间表
|