Задать вопрос
@legz
начинающий фронтенд-разработчик

Как строятся связи в БД?

По какому принципу связываются таблицы в базе данных? К примеру как я могу связать таблицы teachers и subjects. Можно связать таблицу учителя по id_subject? И как это будет выглядеть?

p.s можете указать источник, где все это хорошо описано с нуля.
  • Вопрос задан
  • 168 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Мартин Грабер - SQL для простых смертных
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
anton_reut
@anton_reut
Начинающий веб-разработчик
Это будет выглядеть так:
5db7d4271a941452132254.jpeg
Ответ написан
tsklab
@tsklab
Здесь отвечаю на вопросы.
К примеру как я могу связать таблицы teachers и subjects. Можно связать таблицу учителя по id_subject?
Нет. Так как учитель может вести несколько предметов, а предмет несколько учителей. То есть нужна отдельная таблица учитель, предмет.
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Связи между таблицами - понятие больше архитектурное, чем техническое. На уровне базы данных они вообще могут никак не контролироваться или просто давать ограничение для поддержания корректности базы.
Связь один-к-одному используется достаточно редко и две таблицы с такой связью могут быть заменены на одну, содержащую данные из обеих таблиц.
Связь один-ко-многим чаще всего используется при работе со всякими справочниками. Например, таблица городов и таблица адресов. Один и тот же город может входить в произвольное количество адресов, при этом каждому адресу соответствует только один город. Такая связь реализуется через указание идентификатора строки из первой таблицы в одном из полей второй таблицы. На уровне базы данных может быть наложено ограничение, запрещающее записать в таблицу адресов строку с неверным или не указанным идентификатором города.
Связь многие-ко-многим. Например, таблица пользователей и таблица чатов. В одном чате может принимать участие произвольное количество пользователей, один пользователь может участвовать в произвольном количестве чатов. Такое отношение реализуется с помощью промежуточной таблицы, каждая запись которой связывает одного пользователя с одним чатом. Кроме связи, такая таблица может содержать дополнительные данные, например роль данного пользователя в данном чате. На уровне БД может быть наложено ограничение на создание записей с несуществующими или не указанными идентификаторами пользователя или чата.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы