Shultc
@Shultc
RnD Developer

Плохо ли иметь избыточность внешних ключей в базе данных?

Я хочу создать базу часть структуры которой будет такого вида:
table_one ---(many)---< table_two ---(many)---< table_three ---(many)---< table_four

Как видно, записи из таблицы table_four всегда будут связаны лишь с одной записью из таблицы table_one. Но чтобы получить эту информацию, мне нужно будет каждый раз делать много JOIN'ов.

Могу ли я добавить в таблицу table_four внешний ключ (foreign key), связывающий её с таблицей table_one, или это считается плохой практикой?
  • Вопрос задан
  • 128 просмотров
Пригласить эксперта
Ответы на вопрос 1
@kn0ckn0ck
Продюсер
Это всегда компромисс: нормализация vs удобство/производительность. Денормализация часто применяется на практике, поэтому плохим решением я это не считаю, при условии, что в БД после этого не будет разводиться бардака. Как уже этого достигать - другой вопрос.

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

В разных СУБД есть нативные механизмы поддержки денормализованных отношений, например, что-то типа материализованных представлений в Oracle.

А вообще, нормализация - враг производительности.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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