我正在处理一个非常简单的数据库,但是我不知道数据透视表是否是一个好的解决方案。如果我使用数据透视表,则只需要增加无用的表即可。
让我们从头开始。
在用户注册期间,将创建一个新表GROUP。在GROUP表中,我们注册了user_id和group_id。该表允许/拒绝对文件夹的访问。
该用户可以将其他用户(相同的group_id)添加到他的组中。
我的问题:
我不想使用数据透视表,因为我需要另一个数据表,并且它没有用,因为我不需要为组设置名称等。我也不能使用增量,因为我不能重复相同的数字(group_id)。
第一个架构:
第二个架构(枢轴)
答案 0 :(得分:0)
如何表示数据库中用户和组之间的关系?
对此的答案取决于关系的建模方式:
如果一个用户可能仅属于一个组,或者每个组仅包含一个用户,则您具有1-N关系;您可以将信息作为附加列存储在表user
或表group
如果一个组可以包含多个用户,并且一个用户可能属于多个组,则您具有N-M关系;表示它的正确方法是创建一个桥接表(您称为数据透视表),其中每个记录都存储了桥接的外键和用户表的外键。
答案 1 :(得分:0)
我认为您没有正确使用术语“数据透视表”。至少不是其他人使用该术语的方式。
看起来您只需要用户和组之间的多对多关系。您可能会认为您不需要group
的表,因为您不需要该组的名称或其他属性。
但是请考虑:您的folder
表中有一个引用组ID的外键。 user_group
表中的哪一行应引用?对于给定的组ID,该表中将有许多行。外键应引用被引用表的主键。