zxCoder
V2EX  ›  问与答

关于 web 开发 数据库实体的问题

  •  
  •   zxCoder · Oct 10, 2020 · 1420 views
    This topic created in 2131 days ago, the information mentioned may be changed or developed.

    举个例子,比如博客文章,一篇文章对应多个 tag,那么文章的实体里面要有一个字段 list<string>吗,因为这种一对多的关系数据库应该用另一个表存,这种情况感觉挺常见的,不知道标准的做法应该是怎么做的。

    还是说要两个实体类?一个和数据库映射的,一个是处理之后和上层 service 交互的?

    最简单的方法应该是怎么做呢?

    Supplement 1  ·  Oct 10, 2020

    好像大家都看不懂我的问题。。。。 我的问题不是说怎么建表,怎么查。。。

    CoCoMcRee
        1
    CoCoMcRee  
       Oct 10, 2020
    常规处理的话就
    一张 tag 表, 存各种 tag.
    一张 文章 id 和 tag 的多对多表, 存文章 id 和 tag 的对应关系.

    以上是我写个人博客练习时候的做法.
    340244120w
        2
    340244120w  
       Oct 10, 2020
    tag 最关键的概念是反向索引,你文章就用一个 string 来存 tags,就做不到反向索引了
    zxCoder
        3
    zxCoder  
    OP
       Oct 10, 2020
    @CoCoMcRee 存我知道,查呢?
    zxCoder
        4
    zxCoder  
    OP
       Oct 10, 2020
    @340244120w 我没有用一个 string 来存 tags 啊
    340244120w
        5
    340244120w  
       Oct 10, 2020
    @zxCoder #4
    一篇文章对应多个 tag,那么文章的实体里面要有一个字段 list<string>吗
    ------------------------------------------------------------------------------------
    这句话的意思不就是咩。。。
    而且文章和 tag 是多对多,不是一对多
    passerbytiny
        6
    passerbytiny  
       Oct 10, 2020 via Android
    文章对标签是多对多,不是一对多。

    只有实体之间才存在关联关系,所以不存在 List < String >类型的关联字段(非关联关系的基本字段,可以有这种类型)。关联字段的类型,若是 List,则必定是 List < Entity >。

    建议楼主先从零开始学习一下 ORM 。
    QingXuJiaZhi
        7
    QingXuJiaZhi  
       Oct 10, 2020
    推荐一个网站 https://pgexercises.com/ 这个教程学 sql 循序渐进,由浅入深,覆盖的场景也很多,都是通过具体例子来教学。

    看这里 https://pgexercises.com/questions/joins/simplejoin.html 看它的三个表,特别注意看中间那个表。
    多对多关系通常采用三个表,其中一个表起到桥梁的作用将 tag 表与 article 表连接起来。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2013 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 00:01 · PVG 08:01 · LAX 17:01 · JFK 20:01
    ♥ Do have faith in what you're doing.