我这种文章和标签的数据表设计可以吗?

2018-05-09 09:57:27 +08:00
 peizhao2017



如图
加了个中间表
需要的时候先到这个表里面查 id
在一个文章 5 个 tag 的情况下
1000 篇文章这个表差不多 5000 行
还有其他的好办法吗?
2207 次点击
所在节点    问与答
8 条回复
whypool
2018-05-09 10:09:01 +08:00
标签一般会做冗余数据,文章生成之后,标签一般不会改
少量冗余,文章表里面加一个 tags 字段,里面存 tag 表的 id,优点是数据冗余少,缺点是多一次查询
适量冗余,文章表还是加一个 tags 字段,里面存 tag 的 id 和 tag 的名称,推荐这样,适量冗余查询效率高
peizhao2017
2018-05-09 11:26:31 +08:00
@whypool #1
方法一建个 tags 字段
然后以数组形式存 tag 的 id
比如 1,2,3,4,5
这样吗?


再往下读数据这不明白了
比如我想读 tag_id=1 的数据
要怎么查数据表里的数组
akira
2018-05-09 11:41:17 +08:00
这样存没问题啊。 在几千篇文章以前应该都不会有太大的性能问题。
出现性能问题的时候,再针对标签做个文章列表的缓存应该就足够了
whypool
2018-05-09 13:41:12 +08:00
@peizhao2017 所以多一次查询,拿到 tag id 去 where in 一下
peizhao2017
2018-05-09 15:24:57 +08:00
@whypool #4

请教下
第一种取出文章的 tag 简单

但是反过来
通过 tag 的 id
sql 要怎么写才能取出含有这个 tag 的文章
littleylv
2018-05-09 15:37:12 +08:00
你的设计没问题
zhaohui318
2018-05-09 18:11:37 +08:00
关系型数据库,"关系"单独拿出来建个表

Table: Article
Columns: Article_ID, Article_Title, Content

Table: Tag
Columns: Tag_ID, Tag_Title

Table: Article_Tag
Columns: Article_ID, Tag_ID
qsnow6
2018-05-10 08:31:57 +08:00
@zhaohui318 #7 这个复杂了点吧,3 个表

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/453318

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX