数据库设计-如何实现用户组表?

问题描述

| 我想使用户组系统模仿即时通讯程序中的组策略。 每个用户可以根据需要创建任意数量的组,但是他们不能具有名称重复的组,并且可以将任意数量的朋友放入任何组。 例如,John的朋友Jen可以同时在John的“ school”组和John的“ coworker”组中。而且,这完全与Jen如何将John纳入她的团队无关。 我正在考虑在数据库user_group表中实现此问题的两种可能方法。 1。
user_group (
id INT PRIMARY KEY AUTO_INCREMENT,user_id INT,group_name VARCHAR(30),UNIQUE KEY (user_id,group_name)
)
在这种情况下,所有用户拥有的所有组都将具有唯一的ID。因此,仅凭id就能确定哪个用户和组的名称。 2。
user_group (
user_id INT,group_id INT AUTO_INCREMENT,PRIMARY KEY (user_id,group_id),group_name)
)
在这种情况下,每个用户的group_id始终从0开始,因此,可能存在许多具有相同group_id的组。但是,pk对(user_id,group_id)在表中是唯一的。 哪种方法更好地执行,为什么? 每种情况的优缺点是什么? 编辑: 在第二种情况下,向group_id添加了AUTO_INCREMENT,以确保为每个user_id从0自动分配。 编辑: “更好”是指... -在SELECT / INSERT / UPDATE朋友组中的性能更好,因为这将是与用户组有关的最常用的操作。 -数据库的健壮性,例如就用户规模而言,哪种数据库更安全。 -彼此比较受欢迎或普遍偏爱。 -灵活性 -可扩展性 -可用性-易于使用。     

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)