我正在尝试使用WP创建一个插件,我在弄清楚如何构建数据库时遇到了一些麻烦。我的项目由几个要点组成,我坚持的部分是让用户可以加入“项目”的数据库交互。用户可以创建,加入(最大的部分是我遇到了麻烦),如果他们愿意,也可以删除“项目”。我正在考虑的数据库架构是这样的:
projects_db
id
name
description
other fields describing date created, created by, etc.
如何实施更多字段或创建另一个数据库来处理“项目”的加入用户? 谢谢!
答案 0 :(得分:0)
您可以创建一个表,该表将存储有关属于特定项目的用户的信息。考虑一个表:
project_users
fk_user_id
fk_project_id
(possibly date joined here etc)
现在,添加/删除有关新用户的信息非常容易。希望这有帮助!
答案 1 :(得分:0)
您基本上是在users
和projects
之间实现N:M关系。对此的经典解决方案是使用映射表:
CREATE TABLE user_projects (
user_id INT,
project_id INT,
PRIMARY KEY (user_id, project_id),
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (project_id) REFERENCES projects(id)
)
编辑: 要详细说明注释,使用连接项目只是插入此表。例如,如果用户1加入项目345:
INSERT INTO user_projects VALUES (1, 345)
要查询哪些用户已加入项目,您可以使用join
:
SELECT *
FROM users u
JOIN user_projects up ON u.id = up.user_id
WHERE up.project_id = 345
或者,如果您想根据项目的其他一些细节进行搜索,例如,它的名字,您也可以加入该表:
SELECT *
FROM users u
JOIN user_projects up ON u.id = up.user_id
JOIN projects p ON up.project_id = p.id
WHERE p.project_name = 'my_project'