Как структурировать базу данных phpmyadmin sql, чтобы позволить многим отношениям?

Я немного новичок в phpmyadmin, и я пытаюсь найти способ логически структурировать распределительную таблицу, чтобы выполнить мою задачу под рукой.

Я делаю веб-приложение табеля рабочего времени. В настоящее время у меня есть таблица сотрудников, таблица проектов и таблица расписаний. Я пытаюсь придумать лучший способ структурировать распределительную таблицу сотрудников / проектов для хранения проектов, которые каждый сотрудник хотел бы показать в своих расписаниях.

Я создал php-форму, которая создает таблицу со всеми доступными проектами и ставит флажок рядом с каждым, чтобы сотрудник мог войти в систему со своим идентификатором пользователя, а затем управлять теми проектами, над которыми он работает.

Как мне настроить таблицы, чтобы разрешить оператор INSERT / UPDATE, который добавляет / удаляет связь проекта с каждым сотрудником? Я пытался создать employee_projects с идентификатором первичного ключа и внешними ключами employeeID и projectID, но тогда у меня нет возможности сослаться, если эта связь уже существует (т. Е. Я думал что-то вроде циклического просмотра результатов php POST для выбранных флажков и запроса INSERT INTO employee_projects VALUES ($ eID, $ pID), но при этом не будут обнаружены повторяющиеся записи).

Любая помощь будет отличной!

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_Users

+----------+---------+
| 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);

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector