Вопрос про архитектуру баз данных SQL

Рейтинг: 1Ответов: 2Опубликовано: 14.03.2023

Допустим, есть таблица students. В ней хранятся: имя студента, возраст и т.д. С этим всё понятно. А теперь допустим, что есть элемент techs в котором лежат технологии которыми овладел студент. Как мне правильно сконструировать базу данных? То есть, нужно ли мне создавать отдельную таблицу techs и закинуть туда id студента или можно как-то это всё запихнуть в единственную таблицу students? Речь идёт о реляционных базах данных

Ответы

▲ 1Принят

Создавать надо две отдельные таблицы для Students и Techs, а также необходимо определить связь между ними по полю, которое уникальное (как правило это и есть id).

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

Тут важно отметить, что отношение между таблицами могут строиться с использованием дополнительных таблиц (посредников), которые для осваивающих, могут быть не очевидны, то есть за кулисами при миграции создается таблица, которая хранит отношения для двух других, например.

▲ 1

В классическом SQL, обычно, создается таблица-связка, в которую записываются пары связей: id студента - id технологии. Таким образом, каждый студент сможет с легкостью владеть никакой, одной или многими технологиями.