SQL - запрос из нескольких ссылок или больше связей? - PullRequest
2 голосов
/ 19 сентября 2019

У меня есть картина, что модель отношений должна быть настолько простой, насколько это возможно.'D', относящийся к 'A', будет запрашиваться с использованием ссылок A-> B-> C-> D id (каждая 1: n ссылок).enter image description here Но я подумал, есть ли случай, когда кто-то должен усложнить ситуацию и создать больше отношений для экономии производительности (?) Вместо запроса из нескольких ссылок?enter image description here

1 Ответ

4 голосов
/ 19 сентября 2019

Это слишком долго для комментария.

Во-первых, я предполагаю, что столбец в C будет называться D, а не A.

Во-вторых, вынарушая один из принципов нормализации.Значение D хранится в двух местах (в обеих таблицах A и C), но, согласно вашему описанию, это действительно означает одно.

То, что вы предлагаете, является существенным осложнением длямодель данных.Совсем другое дело гарантировать, что D, на который ссылается A, соответствует D.Осуществить это сложно.Нарушения становятся ошибкой данных.

Что касается производительности, соединения по первичным ключам обычно довольно быстрые.Цепочки таких объединений, как правило, не являются узким местом производительности.

Что касается технического обслуживания, то в итоге вы получите совершенно разные способы представления одного и того же набора результатов.Это может усложнить отладку кода.

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

...