问题描述
|
我想使用户组系统模仿即时通讯程序中的组策略。
每个用户可以根据需要创建任意数量的组,但是他们不能具有名称重复的组,并且可以将任意数量的朋友放入任何组。
例如,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 (将#修改为@)