我对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);