Должен ли я нарушить правила нормализации и добавить дополнительный FK

0

В MySQL у меня есть ряд связанных таблиц:

  • tableA имеет много строк в таблицеB
  • tableB имеет много строк в таблице C
  • tableC имеет много строк в tableD

Мне нужно будет регулярно переходить с tableA на tableD, например, при перечислении записей из tableA вместе со счетчиком связанных записей в tableD. Это приведет к громоздкому коду и потенциальным узким местам производительности.

Альтернативой было бы создать FK в tableD, который ссылается на tableA. Строго говоря, это был бы избыточный ключ, но я думаю, что я могу легко управлять обновлениями значений (чтобы избежать проблем с целостностью данных). Я думаю, что улучшение производительности будет значительным, и код будет более читабельным.

Я направляюсь в мир боли, делая это? Или это образец, который можно увидеть в другом месте? Я планирую обозначить ключ, чтобы он понял, что это только удобство, а не нормативная ссылка.

Теги:
database
foreign-keys
relational-database

1 ответ

1

Это не то, что вы обычно делаете. При правильных индексах на tableB и tableC производительность с соединениями должна быть достаточно хорошей.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню