【问题标题】:Other way than pivot table - Incrementation数据透视表以外的其他方式 - 增量
【发布时间】:2019-02-18 09:06:45
【问题描述】:

我正在开发一个非常简单的数据库,但我不知道数据透视表是否是一个很好的解决方案。如果我使用数据透视表,我需要添加无用的表只是为了增加。

让我们从头开始。

在用户注册期间,会创建一个新表 GROUP。在 GROUP 表中,我们注册了 user_id 和 group_id。此表允许/拒绝访问文件夹。

此用户可以将其他用户(相同的 group_id)添加到他的组中。

我的问题:

我不想使用数据透视表,因为我需要另一个表,它没用,因为我不需要为组设置名称等。我也不能使用增量,因为我不能重复相同的数字(group_id)。

第一个架构:

第二个架构(枢轴)

【问题讨论】:

  • 让生活更轻松不要使用保留字作为表名。
  • 我不知道这个问题是关于什么的,无法访问链接。

标签: mysql sql database pivot


【解决方案1】:

如何表示数据库中用户和组之间的关系?

这个问题的答案取决于关系是如何建模的:

  • 如果一个用户可能只属于一个组,或者每个组只包含一个用户,那么你有一个 1-N 关系;您可以将信息作为附加列存储在(分别)表user或表group

  • 如果一个组可以包含多个用户,并且一个用户可能属于多个组,那么你有一个 N-M 关系;表示它的正确方法是创建一个桥表(称为数据透视表),其中每条记录存储桥的外键和用户表的外键。

【讨论】:

    【解决方案2】:

    我认为您没有正确使用“数据透视表”一词。至少不是其他人使用该术语的方式。

    看起来您只需要用户和组之间的多对多关系。您可能认为您不需要group 的表,因为您不需要该组的名称或其他属性。

    但请考虑:您的 folder 表中有一个外键,它引用了一个组 ID。 user_group 表中的哪一行应该引用?对于给定的组 ID,该表中将有很多行。外键应引用被引用表的主键。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-28
      • 1970-01-01
      • 2016-01-26
      • 1970-01-01
      相关资源
      最近更新 更多