#sql #relational-database
#sql #реляционная база данных
Вопрос:
Давайте предположим, что я создаю серверную часть программного обеспечения для управления университетом. У меня есть таблица users со следующими столбцами:
id
name
birthday
last_english_grade
last_it_grade
столбцы таблицы profs:
id
name
birthday
Я хотел бы иметь третью таблицу, с помощью которой я мог бы определить всех профессоров, обучающих студента.
Итак, я хотел бы назначить несколько преподавателей каждому ученику.
Эти преподаватели могут измениться в любое время.
Новые учащиеся также могут быть добавлены в любое время.
Каков наилучший способ добиться этого?
Ответ №1:
Каноническим способом сделать это было бы ввести третью таблицу junction, которая существует главным образом для связи пользователей с профессорами:
users_profs (
user_id,
prof_id,
PRIMARY KEY (user_id, prof_id)
)
Первичный ключ этой таблицы соединений представляет собой комбинацию идентификатора пользователя и профессора. Обратите внимание, что эта таблица довольно скудная и позволяет избежать проблемы повторения метаданных для данного пользователя или профессора. Скорее, информация о пользователе / профессоре остается в ваших двух исходных таблицах и не повторяется.
Комментарии:
1. Спасибо. Как бы я управлял несколькими преподавателями, принадлежащими одному студенту?
2. Каждое уникальное отношение студент-профессор получает одну запись в таблице соединений, которую я предложил.
3. Большое спасибо. Действительно, выглядит как очень чистое решение!