我将如何构建此数据库以实现功能?

时间:2014-10-03 18:48:22

标签: mysql database wordpress

我正在尝试使用WP创建一个插件,我在弄清楚如何构建数据库时遇到了一些麻烦。我的项目由几个要点组成,我坚持的部分是让用户可以加入“项目”的数据库交互。用户可以创建,加入(最大的部分是我遇到了麻烦),如果他们愿意,也可以删除“项目”。我正在考虑的数据库架构是这样的:

projects_db
 id
 name
 description
 other fields describing date created, created by, etc. 

如何实施更多字段创建另一个数据库来处理“项目”的加入用户? 谢谢!

2 个答案:

答案 0 :(得分:0)

您可以创建一个表,该表将存储有关属于特定项目的用户的信息。考虑一个表:

project_users
  fk_user_id
  fk_project_id
  (possibly date joined here etc)

现在,添加/删除有关新用户的信息非常容易。希望这有帮助!

答案 1 :(得分:0)

您基本上是在usersprojects之间实现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'