我正在尝试在两个表之间实现简单的多对多关系。
用户和组。
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/