我这种文章和标签的数据表设计可以吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
peizhao2017
V2EX    问与答

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

  •  
  •   peizhao2017 2018-05-09 09:57:27 +08:00 2568 次点击
    这是一个创建于 2793 天前的主题,其中的信息可能已经有所发展或是发生改变。



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


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

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

    但是反过来
    通过 tag 的 id
    sql 要怎么写才能取出含有这个 tag 的文章
    U7Q5tLAex2FI0o0g
        6
    U7Q5tLAex2FI0o0g  
       2018-05-09 15:37:12 +08:00
    你的设计没问题
    zhaohui318
        7
    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
        8
    qsnow6  
       2018-05-10 08:31:57 +08:00
    @zhaohui318 #7 这个复杂了点吧,3 个表
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1255 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 17:20 PVG 01:20 LAX 09:20 JFK 12:20
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86