Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL将用户插入到另一个用户拥有的组中_Php_Mysql - Fatal编程技术网

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

Php MySQL将用户插入到另一个用户拥有的组中,php,mysql,Php,Mysql,我需要能够将用户分配到我(当前用户)拥有的多个组,但不确定最佳方法。我读过其他一些帖子,但我认为我的要求略有不同 这种情况适用于AS3中的移动应用程序,该应用程序允许注册用户创建朋友和组,然后将朋友分配给组 目前我的表结构是: User table id username -------------- 1 user1 2 user2 3 user3 Friend link table id user_id friend_user_id --------

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

这种情况适用于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链接)。然后用户可以将他们的朋友分配到组中

我想我有三个问题:

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


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

    我给你的一个建议是,DB结构应该是朋友列表和组列表之间的区别是什么?这两组人都有特定的头衔,对吗?对我来说,由于重复链接,您可能会有一些不必要的开销

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

    group_id: int not_null auto_increment
    owner_id: int not_null
    group_name: varchar(125) not_null
    
    然后创建一个组连接表

    group_joinid: int not_null auto_increment
    groupid: int not_null
    userid: int not_null
    

    其中groupid来自组表,userid来自用户表。我不知道你的受众规模,所以这种方法可能需要调整,但这是为了消除用户和群体之间重复链接的可能性,这种结构似乎是合理的。我不确定我是否理解问题2。展示你已经尝试过的,并解释它是如何不起作用的;不要只问开放式的问题。添加其他信息。既然我写了,似乎我应该将所有组ID从应用程序传递到PHP脚本,而不仅仅是所选的组ID。所以你不打算显示你的代码吗?我建议对问题2进行更多的澄清。问题是保持数据的完整性?是否先保存好友链接,然后保存组链接?正确。一个用户可以与多个人成为朋友,但他们都必须注册(并确认朋友状态)才能添加到组中。在将好友添加到组链接之前,用户必须创建组和好友链接。我真的不知道该怎么解释。问题不是将朋友添加到组中,而是您提到的,在从组中删除朋友或从朋友链接中删除朋友时保持数据完整性这仍然会提出一个问题,即如果我只传递选定的组,如何从组中删除用户。我正在传递用户ID和好友用户ID,在插入一组新的选定组之前,删除与好友用户ID和用户拥有的所有组ID匹配的所有组链接记录是否不好?然后您只需使用一个join并从组中删除delete\u join as gj join group as g ON gj.group\u ID=g.groupid,其中g.owner\u ID=[userid]和gj.userid=[friends userid]您上面提到的与我所期望的差不多,我还有一个朋友链接表,其作用与组表相同。朋友链接在两个用户之间。组由一个用户拥有,该用户将其他用户放入组链接(join)除非我遗漏了什么,否则我会试试你的建议……谢谢