2015-08-24 2 views
1

Я управляю, чтобы создать свой первый сложный J2E решение и в каждом уроке я найти какую-то посредническую использование таблиц, как здесь:Промежуточная таблица SQL: зачем?

Таблицы: User, User_Roles, Роли Хотя логика просто добавить ключ к пользователю Таблица, ссылающаяся на ее роль в таблице Roles, почему использование этой промежуточной таблицы?

Я думал, что это один или два варианта выбора, но везде я ищу учебник, я нахожу этот вид схемы sql.

Это лучше? Помогает ли это чему-то конкретному? Скорость, безопасность? Причина с логической точки зрения, с использованием одной таблицы User и внешнего ключа для ролей лучше.

Спасибо

+0

Вам нужно это для отношений n-m: несколько пользователей могут иметь несколько ролей. –

+0

Нет, у меня есть школьная система. Учитель не может быть студентом –

+1

Если у пользователя может быть только одна роль, вам не нужна таблица между ними. –

ответ

2

Это обычное моделирование отношения базы данных под названием M-N (многие ко многим). Пользователь может иметь много ролей, а роль может быть назначена для многих пользователей, поэтому вам нужна промежуточная таблица. Другой пример - Учитель может преподавать много классов, и каждый класс может преподавать много учителей (например, в разные семестры). Тогда вам понадобится промежуточная таблица учителя-класса.

Другим видом отношений является 1-N (от одного до N). Пользователь может иметь много телефонов, но каждый телефон принадлежит одному пользователю. В этом случае PK пользователя экспортируется как FK в таблицу телефонов. Нет необходимости в промежуточной таблице.

+1

Итак, для моего примера я не нуждаюсь в нем для пользователя, который может быть учителем или учеником –

+0

Сначала нет. Вам понадобится таблица занятий с PK (int) и описание занятия (студент, профессор и т. Д.). И PK Occupation будет экспортироваться как FK в User (но значение столбца может быть NULL). – user244255

Смежные вопросы