0

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

这种情况适用于 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. 因为我需要在添加/删除用户时显示所有可用的组,一旦用户保存了朋友/组链接,我应该如何插入/删除数据?

谢谢

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

4

1 回答 1

0

我对您的数据库结构的建议是朋友列表和组列表之间的区别是什么?两者都是特定头衔下的人群,对吗?对我来说,由于重复链接,您可能会产生一些不必要的开销。

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

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 来自 group 表, userid 来自 user 表。我不知道您的受众规模,因此可能需要调整这种方法,但这可以消除用户和组之间重复链接的可能性

于 2013-07-09T03:13:05.303 回答