В MySQL у меня есть ряд связанных таблиц:
Мне нужно будет регулярно переходить с tableA на tableD, например, при перечислении записей из tableA вместе со счетчиком связанных записей в tableD. Это приведет к громоздкому коду и потенциальным узким местам производительности.
Альтернативой было бы создать FK в tableD, который ссылается на tableA. Строго говоря, это был бы избыточный ключ, но я думаю, что я могу легко управлять обновлениями значений (чтобы избежать проблем с целостностью данных). Я думаю, что улучшение производительности будет значительным, и код будет более читабельным.
Я направляюсь в мир боли, делая это? Или это образец, который можно увидеть в другом месте? Я планирую обозначить ключ, чтобы он понял, что это только удобство, а не нормативная ссылка.
Это не то, что вы обычно делаете. При правильных индексах на tableB
и tableC
производительность с соединениями должна быть достаточно хорошей.
Если вы обнаружите, что этого недостаточно, вы должны попробовать более героические меры - например, дублированный внешний ключ. В этом случае я не вижу причин для преждевременной оптимизации базы данных даже до возникновения каких-либо проблем с производительностью.