我正在尝试在两个表之间实现简单的多对多关系。
用户和组。

User
---------
user_id
user_name

Group
----------
group_id
group_name

UserGroup
----------
user_id
group_id


假设用户表和组表均具有1000个条目。

我必须创建一个属于所有组的管理员用户。
我应该在UserGroup表中为“ admin”用户创建1000个条目吗?

我可以在用户表中创建一个布尔列,说“ Applicable_to_all_groups”,然后从用户组表中进行选择之前应首先进行检查?

任何有关以正确方式执行此操作的建议将不胜感激。

最佳答案

好吧,我会说这种情况下没有“真正的”解决方案。

让我们来看看一些优点/缺点

解决方案1,全部在UserGroup表中

优点

获取允许的组的请求更容易编写(没有OR子句)

缺点

每次在组表中添加条目时,都必须在该表中添加条目。
当然可以,但是很无聊,而且容易出错。

如果您想要一个新的“也可以与所有组相关的用户”,则必须重写所有过程/触发器/您使用的任何具有“最新” UserGroup表的内容来添加新内容。

解决方案2,标志(=布尔列)

优点

避免在数据库中输入不必要的条目(好一点)

始终“最新”,无需任何其他工作。

轻松添加具有“所有组”权限的新用户(只需将标记设置为true)

缺点

在请求允许的组时,您必须添加OR子句(基于标志或GroupUser)
表)

个人观点

我会去标志解决方案...

关于mysql - MySQL多对多关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26407320/

10-08 20:43