我对phpmyadmin有些新手,我正在尝试提出一种逻辑结构连接表来完成手头任务的方法。
我正在制作员工时间表网络应用。我目前有一个员工表,项目表和时间表表。我正在考虑构建员工/项目联结表的最佳方法,以存储每个员工希望在他们的时间表中显示的项目。
我创建了一个php表单,它创建了一个包含所有可用项目的表,并在每个项目旁边放置一个复选框,以便员工可以使用他们的userID登录,然后管理他们正在处理的项目。
我应该如何设置表以允许INSERT / UPDATE语句添加/删除与每个员工的项目关联?我尝试使用主键ID和外键employeeID和projectID创建employees_projects,但是如果该关联已经存在,我无法引用(即,我正在考虑循环选择所选复选框的php POST结果并查询INSERT INTO employees_projects VALUES($ eID,$ pID),但这不会捕获重复的条目。)
任何帮助都会很棒!
答案 0 :(得分:1)
您需要的是数据透视表。例如,我将使用用户表和组表,其中用户可以在许多组中,每个组可以有许多用户。表结构如下所示:
+----+------+-------------+
| 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_id | user_id |
+----------+---------+
| 1 | 1 |
| 2 | 1 |
| 2 | 2 |
+----------+---------+
然后,您可以在Group_Users表中设置外键,将group_id
与ID
表格中的group
相关联,同样user_id
中的user
} table。
最后,要停止任何重复项,您需要在group_users
表中的两列中创建唯一键。这个SQL可以做到 - ALTER TABLE group_user ADD UNIQUE (group_id, user_id);