【问题标题】:How can I reference a many-to-many relationship using ID's consisting of sequenced numbers with dash?如何使用由带有破折号的序列号组成的 ID 来引用多对多关系?
【发布时间】:2021-12-05 15:42:52
【问题描述】:

一个“数据”表到多个“评论”表。在许多情况下,cmets 适用于一系列 data_id。例如,评论行连接到 data_id (3-60, 90, 100-130)。应该如何实现数据库设计、关系和数据类型。必须是易于访问的 ID,用于连接、搜索等。 寻求创建这样的关系以在每个评论表行上保存多个 data_id。 就数据库结构和数据类型而言,这将如何实现?

【问题讨论】:

  • 请包含两个表中的一些示例数据。
  • 寻求创建这样的关系来保存每个评论表行上的多个data_id。
  • 您所描述的是数据和评论之间的多对多关系。此类关系需要一个中间“联结”或“映射”表来实现多对多关系。
  • 就数据库结构和数据类型而言,这看起来如何?

标签: sql database-design ids


【解决方案1】:

它可能有助于您阅读/观看 SQL 关系类型:一对一、一对多和多对多。

在您的情况下,如果一个评论行链接到多个数据行,但数据行只有一个评论行,您应该将评论 id 放在数据行中(一对多)。

如果注释行链接到许多数据行并且数据行可以链接到许多 cmets,您应该创建第三个表,其中包含数据行 ID 和注释行 ID 以链接它们(多对多)。

一对多查询:

SELECT * FROM data
LEFT JOIN comment ON data.comment_id = comment.id
WHERE comment.id = 1

一对多查询

SELECT * FROM data
LEFT JOIN data_comment ON data. id = data_comment.data_id
LEFT JOIN comment ON data_comment.comment_id = comment.id
WHERE comment.id = 1

“data_comment”为data_id和comment_id的关系表

【讨论】:

    猜你喜欢
    • 2020-04-22
    • 1970-01-01
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    相关资源
    最近更新 更多