我遇到一种情况,我需要能够将用户分配到我(当前用户)拥有的多个组,但不确定最佳方法。我读过其他一些帖子,但我认为我的要求略有不同。
这种情况是针对 AS3 中的移动应用程序,该应用程序允许注册用户创建 friend 和群组,然后将 friend 分配到群组。
目前我的表结构是:
User table
id username
--------------
1 user1
2 user2
3 user3
Friend link table
id user_id friend_user_id
-------------------------------
1 1 2
2 2 1
3 1 3
4 3 1
Group table
id group_name user_id
---------------------------
1 group1 1
2 group2 1
Group link table
id group_id user_id
-------------------------
1 1 2
2 2 2
3 1 3
基本上,用户创建一个设置 ID 的帐户,然后添加可以是其他注册用户的 friend 。这会在好友链接表中创建 2 条记录(每个用户一条)。然后,用户可以创建组(组通过用户 ID 链接)。然后用户可以将他们的 friend 分配到组中。
我想我有 3 个问题:
- 当前的结构对于这种情况是否正确?
- 因为我需要在添加/删除用户时显示所有可用的群组,所以当用户保存好友/群组链接后,我应该如何插入/删除数据?
谢谢
编辑:问题 2 继续 - 我已经能够通过设置组 ID、用户 ID 和 isSelected 标志将数组从应用程序传递到 PHP 脚本来将选定的组写入组链接表,但是在以下情况下会失败用户被从组中删除,因为我只传递选定的组,而不传递未选定的组。
最佳答案
我给你的数据库结构的建议是 friend 列表和群组列表有什么区别?两者都是具有特定头衔的人群,对吗?在我看来,由于重复链接,您可能会产生一些不必要的开销。
例如,我建议将组表更改为更像
group_id: int not_null auto_increment
owner_id: int not_null
group_name: varchar(125) not_null
然后有一个group_join表
group_joinid: int not_null auto_increment
groupid: int not_null
userid: int not_null
其中groupid来自组表,userid来自用户表。我不知道您的受众群体的规模,因此这种方法可能需要调整,但这似乎可以消除用户和群组之间重复链接的可能性
关于php - MySQL 将用户插入到另一个用户拥有的组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17539054/