我对phpmyadmin有点陌生,我正试图想出一种逻辑结构连接表的方法来完成手头的任务。
我正在制作一个员工时间表Web应用程序。我目前有一个雇员表,项目表,时间表表。我在想最好的方法来构建员工/项目的连接表,以存储每个员工希望在他们的时间表中显示的项目。
我创建了一个php表单,该表单创建了一个包含所有可用项目的表,并在每个项目旁边放置一个复选框,这样员工就可以使用他们的userid登录,然后管理他们正在处理的项目。
如何设置表以允许插入/更新语句添加/删除与每个员工的项目关联?我尝试用主键ID和外键EnvieID和PrimeDeD制作雇员项目,但是我无法引用该关联是否已经存在(例如,我正在思考类似于通过我的PHP帖子循环的结果,选中的复选框和查询插入到雇员项目项目值($EID),$pid),但这不会捕获重复的条目)。
任何帮助都很好!

最佳答案

你需要的是一个数据透视表。例如,我将使用一个用户表和一个组表,其中用户可以在多个组中,每个组可以有多个用户。表格结构如下:
用户表

+----+------+-------------+
| ID | name |    email    |
+----+------+-------------+
|  1 | Foo  | [email protected] |
|  2 | Bar  | [email protected] |
+----+------+-------------+

分组表
+----+------------+--------------+
| 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
最后,要停止任何重复,您可以在group_users表的两列之间创建一个唯一的键。这个sql可以做到这一点-ALTER TABLE group_user ADD UNIQUE (group_id, user_id);

09-06 23:49