我对 phpmyadmin 有点陌生,我正在尝试想出一种方法来逻辑地构建联结表以完成我手头的任务。
我正在制作一个员工时间表网络应用程序。我目前有一个员工表、项目表和时间表表。我试图想出构建员工/项目联结表的最佳方法,以存储每个员工希望在他们的时间表中显示的项目。
我创建了一个 php 表单,它创建了一个包含所有可用项目的表格,并在每个项目旁边放置了一个复选框,以便员工可以使用他们的用户 ID 登录,然后管理他们正在处理的项目。
我应该如何设置我的表以允许添加/删除与每个员工的项目关联的 INSERT/UPDATE 语句?我尝试使用主键 ID 和外键 employeeID 和 projectID 制作 employees_projects,但是我无法引用该关联是否已经存在(即,我在想一些事情,比如循环遍历所选复选框的 php POST 结果并查询 INSERT INTO employees_projects VALUES ($eID,$pID) 但这不会捕获重复条目。
任何帮助都会很棒!
最佳答案
您需要的是数据透视表。例如,我将使用一个用户表和一个组表,其中用户可以在多个组中,每个组可以有多个用户。表结构如下所示:
用户表
+----+------+-------------+
| ID | name | email |
+----+------+-------------+
| 1 | Foo | foo@baz.com |
| 2 | Bar | bar@baz.com |
+----+------+-------------+
组表
+----+------------+--------------+
| ID | group_name | group_access |
+----+------------+--------------+
| 1 | Admins | 1 |
| 2 | Users | 0 |
+----+------------+--------------+
Group_Users 表
+----------+---------+
| group_id | user_id |
+----------+---------+
| 1 | 1 |
| 2 | 1 |
| 2 | 2 |
+----------+---------+
然后您在 Group_Users 表中设置外键以链接 group_id
至 ID
在group
表,同样适用于 user_id
在user
表。
最后,为了停止任何重复,您在 group_users
中的两列之间创建了一个唯一键。 table 。这个 SQL 可以做到这一点 - ALTER TABLE group_user ADD UNIQUE (group_id, user_id);
关于php - 如何构建 phpmyadmin sql 数据库以允许多对多关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41703265/