数据透视表以外的其他方法-增量

时间:2019-02-17 21:54:20

标签: mysql sql database pivot

我正在处理一个非常简单的数据库,但是我不知道数据透视表是否是一个好的解决方案。如果我使用数据透视表,则只需要增加无用的表即可。

让我们从头开始。

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

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

我的问题:

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

第一个架构:

第二个架构(枢轴)

2 个答案:

答案 0 :(得分:0)

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

对此的答案取决于关系的建模方式:

  • 如果一个用户可能仅属于一个组,或者每个组仅包含一个用户,则您具有1-N关系;您可以将信息作为附加列存储在表user或表group

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

答案 1 :(得分:0)

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

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

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