peizhao2017
V2EX  ›  问与答

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

  •  
  •   peizhao2017 · May 9, 2018 · 2792 views
    This topic created in 2964 days ago, the information mentioned may be changed or developed.



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


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

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

    但是反过来
    通过 tag 的 id
    sql 要怎么写才能取出含有这个 tag 的文章
    U7Q5tLAex2FI0o0g
        6
    U7Q5tLAex2FI0o0g  
       May 9, 2018
    你的设计没问题
    bqbkbz
        7
    bqbkbz  
       May 9, 2018
    关系型数据库,"关系"单独拿出来建个表

    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  
       May 10, 2018
    @zhaohui318 #7 这个复杂了点吧,3 个表
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1168 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 17:26 · PVG 01:26 · LAX 10:26 · JFK 13:26
    ♥ Do have faith in what you're doing.