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

标签 php mysql

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

这种情况是针对 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 个问题:

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

谢谢

编辑:问题 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/

相关文章:

php - 将字符串转换为 int

php - 如何使用 php 脚本抓取 rss 提要内容

php - 使用 MySQL 字段标志作为 PHP 模型生成的参数

mysql - 两个表之间的查询

mysql - 在 MySQL 数据库中保存信用卡信息?

php - 土耳其语字符显示不正确

php - 在插入到 SERVER1 或 SERVER2 数据库表时触发对 SERVER3 数据库表的不同插入

mysql - 在使用自动增量的 MySQL 中清理表

java - mysql workbench 中的奇怪密码类型

php - 在多个数组中循环多个 SQL 查询