MySQL将用户插入到另一个用户拥有的组中

时间:2013-07-09 02:44:36

标签: php mysql

我有一种情况,我需要能够将用户分配给我拥有的多个组(当前用户),但不确定最佳方法。我已经阅读了其他一些帖子,但我认为我的要求略有不同。

AS3中的移动应用程序的情况允许注册用户创建朋友和群组,然后将朋友分配到群组。

目前我的表结构是:

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的帐户,然后添加可以是其他注册用户的朋友。这将在朋友链接表中创建2条记录(每个用户一条)。然后,用户可以创建组(组按用户ID链接)。然后,用户可以将他们的朋友分配到组。

我想我有3个问题:

  1. 目前的结构是否适合这种情况?
  2. 因为我需要在添加/删除用户时显示所有可用组,所以在用户保存好友/组链接后如何插入/删除数据?
  3. 由于

    编辑:问题2继续 - 通过设置组ID,用户ID和isSelected标志,将数组从应用程序传递到PHP脚本,我已经能够将选定的组写入组链接表,但是这会失败用户从组中删除,因为我只传递选定的组,而不是未选择的组。

1 个答案:

答案 0 :(得分:0)

我对你的DB结构的建议是朋友列表和组列表之间有什么区别?两者都是特定标题下的人群,对吗?对我而言,由于重复链接,您可能会遇到一些不必要的开销。

例如,我建议将组表更改为更像

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来自用户表。我不知道你的观众的规模,所以这种方法可能需要调整,但这种接缝可以消除用户和群体之间重复链接的可能性