Я немного новичок в phpmyadmin, и я пытаюсь найти способ логически структурировать распределительную таблицу, чтобы выполнить мою задачу под рукой.
Я делаю веб-приложение табеля рабочего времени. В настоящее время у меня есть таблица сотрудников, таблица проектов и таблица расписаний. Я пытаюсь придумать лучший способ структурировать распределительную таблицу сотрудников / проектов для хранения проектов, которые каждый сотрудник хотел бы показать в своих расписаниях.
Я создал php-форму, которая создает таблицу со всеми доступными проектами и ставит флажок рядом с каждым, чтобы сотрудник мог войти в систему со своим идентификатором пользователя, а затем управлять теми проектами, над которыми он работает.
Как мне настроить таблицы, чтобы разрешить оператор INSERT / UPDATE, который добавляет / удаляет связь проекта с каждым сотрудником? Я пытался создать employee_projects с идентификатором первичного ключа и внешними ключами employeeID и projectID, но тогда у меня нет возможности сослаться, если эта связь уже существует (т. Е. Я думал что-то вроде циклического просмотра результатов php POST для выбранных флажков и запроса INSERT INTO employee_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_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);
Других решений пока нет …