gpt4 book ai didi

php - 用于创建组和邀请用户的正确表结构

转载 作者:行者123 更新时间:2023-11-29 05:37:29 25 4
gpt4 key购买 nike

我有以下表格

用户:uid、name_f、name_l...

group_data:id、group_id、admin、invitedusers、subscribers...

例如,当用户 'uid:4' 创建一个组并邀请他的 friend 'uid:7' 和 uid:9' 我插入到 group_data 表中:

'admin:4, invitedusers:4,7,9, subscribers:4,7,9'. I

如果例如 uid:9 不想接收通知,我只需将他/她从逗号分隔列表中删除,订阅者使其成为 'subscribers:4,7' 我也当管理员从组中删除用户时执行相同的操作,除非我更改了 invitedusers 列。

我知道这个设置有很大的缺陷,我必须为受邀用户和订阅者创建一个新表。我只是在寻找一种创建该表的方法以及一个选择新系统中所有用户的 sql 查询。

非常感谢任何帮助。此外,这个答案有点触及这个主题,但我不太了解结构引用并且无法实现它:SQL Array Search

最佳答案

您应该像现有的那样为每个存在的用户创建一个包含一行的表格。称之为“用户”。此表将仅包含有关用户的信息,而不是他们所在的组。

您应该有另一个表格,每组一行,您这样做了。称之为“团体”。此表将仅包含有关该组的信息,而不包含其中的成员。

您应该有第三个表,每个用户所在的每个组都有一行。将其称为“user_groups”或其他名称。此表中的每一行都将“用户”表中的一个用户链接到“组”表中的一个组,并可能提供有关他们订阅该组的信息。

示例设置可能如下所示:

CREATE TABLE users (
userID INT,
firstName VARCHAR,
lastName VARCHAR,
PRIMARY KEY (userID)
);

CREATE TABLE groups (
groupID INT,
groupName VARCHAR,
adminUserID INT, /* this is the userID of the one and only administrator of this group */
PRIMARY KEY (groupID)
);

CREATE TABLE user_groups (
userID INT,
groupID INT,
invited TINYINT, /* 0 or 1 to indicate true or false */
subscribed TINYINT /* 0 or 1 to indicate true or false */
);


编辑 回答评论中的问题:

$groupID = 1;
$userIDArray = explode(",", $row["invitedusers"]); // assuming that $row is a row from the old group_data table
foreach ($userIDArray as $userID)
mysql_query("INSERT INTO user_groups (userID, groupID, invited) VALUES ('". mysql_real_escape_string($userID) ."', '". mysql_real_escape_string($groupID) ."', 1)");

关于php - 用于创建组和邀请用户的正确表结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9503620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com