Структура базы данных SQL с двумя изменяющимися свойствами - PullRequest
1 голос
/ 14 марта 2019

Давайте предположим, что я создаю бэкэнд программного обеспечения для управления университетом.У меня есть таблица пользователей со следующими столбцами:

id
name
birthday
last_english_grade
last_it_grade

столбцы таблицы profs:

id
name
birthday

Я хотел бы иметь третью таблицу, с помощью которой я могу определить всех преподавателей, преподающихученик.Поэтому я бы хотел назначить нескольких учителей каждому ученику.Эти профессора могут измениться в любое время.Новые студенты могут быть добавлены в любое время.

Какой лучший способ добиться этого?

1 Ответ

2 голосов
/ 14 марта 2019

Канонический способ сделать это - ввести третью таблицу junction , которая существует в основном для связи пользователей с профессорами:

users_profs (
    user_id,
    prof_id,
    PRIMARY KEY (user_id, prof_id)
)

Первичным ключом этой соединительной таблицы является комбинация идентификатора пользователя и профессора. Обратите внимание, что эта таблица довольно скудна и позволяет избежать проблемы повторения метаданных для данного пользователя или профессора. Скорее, информация пользователя / профессора остается в ваших двух исходных таблицах и не повторяется.

...