我正在开发一个PHP / MySQL的webapp,我已经到了需要创建用户/组关联的地步.
这是我拍摄的内容:
>我将拥有越来越多的团体和用户.
>用户将能够修改他们的组关联
随时随地.
>小组协会将决定内容的优先级
显示在网站上.
>发送给用户的电子邮件更新将由其当前组确定
关联.
我的问题是,处理此用户/组关联的最佳方法是什么?
我当前的表结构如下所示(为简化通信而简化):
Users:
User_ID, User_name, Fname, Lname, is_dealer
Deals:
Deal_ID, Dealer_ID, Deal_name, Deal_content
Dealers:
Dealer_ID, User_ID, Dealer_name, Dealer address.. etc.
我最初的想法是创建一个包含Group_ID和Group_name列的Groups表.然后我可以做两件事之一:
我可以在Groups表中创建一个名为“User_ID”的列,对于每个组关联,我都有一行说明Group_ID,Group_name和User_ID.该选项感觉它会创建一个巨大的超级冗余数据库表.
我能想到的另一个选择是在Users表中创建一个Group_ID列,并在一些必须解析的文本数组中填充用户所关联的所有组.这里的问题是我希望有无限数量的组,并且将用户表组中的每一行的所有用户的组关联卡入一个“值”似乎非常草率.
真的,这是一个SQL数据库逻辑/设计问题.
任何援助都将是一个很大的帮助.
谢谢!
解决方法:
只需创建一个将用户与组相关联的表.两列:一列存储唯一的user_id,另一列存储唯一的group_id.
如果使user_id-group_id组合唯一,则表中不需要唯一键.两个列就足够了.
+---------+ +------------+
| user | | user2group | +----------+
+---------+ +------------+ | group |
| user_id |----->| user_id | +----------+
| name | | group_id |
| pass | +------------+ | name |
| ... | | ... |
+---------+ +----------+
如果我记得正确,这是规范化的三个步骤之一.也许你应该看看这个.
标签:mysql,sql,database-design,relational-database
来源: https://codeday.me/bug/20190716/1479376.html