V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Zrehtt
V2EX  ›  程序员

个人博客数据库设计问题

  •  
  •   Zrehtt · 2021-03-13 20:32:06 +08:00 via iPhone · 2287 次点击
    这是一个创建于 1342 天前的主题,其中的信息可能已经有所发展或是发生改变。

    主要是文章表 article 和标签表 tag 之间的关系应该是多对多的关系,如果我想添加或者更新文章,那 tag 怎么办?这两个表应该如何设计? SQL 语句如何写?

    8 条回复    2021-03-15 09:16:16 +08:00
    binjoo
        1
    binjoo  
       2021-03-13 20:33:27 +08:00
    加一张关联表。
    lizheming
        2
    lizheming  
       2021-03-13 20:34:55 +08:00
    captain2011
        3
    captain2011  
       2021-03-13 20:39:12 +08:00
    简单方法:articles 表加一个字段 tag_ids 存 1,2,3 这样的字符串,然后到时候特殊处理就行
    复杂点:多一个 article_tags 中间表,多 join 查询一下就行
    BeautifulSoap
        4
    BeautifulSoap  
       2021-03-13 20:40:07 +08:00
    单独一个 article_tag_relationship 表啊,就两个 column
    article_id | tag_id

    这样一个表你写 sql 语句还难吗

    ORM 处理多对多关系也都是这样的
    qiayue
        5
    qiayue  
       2021-03-13 21:00:17 +08:00   ❤️ 2
    用中间表记录关系,每次更新文章,如果标签有变动,有两种办法:
    1 、逻辑简单:先把该文章 ID 对应的所有标签 ID 关系都删除,重新插入新的对应关系;
    2 、逻辑复杂:比较新老对应关系,删除不再使用的关系,插入新的关系,不改的关系继续保留;

    建议用方法 1
    Zrehtt
        6
    Zrehtt  
    OP
       2021-03-14 17:46:59 +08:00 via iPhone
    嗯,说的很明白了,非常感谢
    dongtingyue
        7
    dongtingyue  
       2021-03-14 21:08:21 +08:00
    我是这样弄的,文章表,分类表,关联表,分类表只做增加不做删除。文章保存的时候分类转 id 然后把原来的关联全删,添加新的关联。
    meshell
        8
    meshell  
       2021-03-15 09:16:16 +08:00
    我直接用得 wordpress 的表
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5751 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:46 · PVG 09:46 · LAX 17:46 · JFK 20:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.