Я знаю, что уже поздно отправлять сообщения, но я использую сайт для своих собственных ссылок, и поэтому я хотел разместить здесь ответ для себя, чтобы ссылаться и в будущем. Я надеюсь, что вы (и другие) найдете это полезным.
Давайте представим, что группа экспертов по супер Эйнштейну разработала нашу базу данных. Наша супер совершенная база данных имеет 3 таблицы, и между ними определены следующие отношения:
TblA 1:M TblB
TblB 1:M TblC
Notice there is no relationship between TblA and TblC
В большинстве сценариев такую простую базу данных легко ориентировать, но в коммерческих базах данных на этапе проектирования, как правило, невозможно определить все возможные варианты использования и комбинации применений для данных, таблиц и даже целых баз данных, особенно По мере того как системы строятся, а другие системы интегрируются, переключаются или выключаются. Этот простой факт породил целую индустрию, основанную на базах данных под названием Business Intelligence. Но я отвлекся ...
В приведенном выше случае структура настолько проста для понимания, что ее легко увидеть, вы можете присоединиться от TblA, к B, и к C, и наоборот, чтобы получить то, что вам нужно. Это также очень смутно выдвигает на первый план некоторые проблемы с этим. Теперь расширьте эту простую цепочку до 10, 20 или 50 отношений. Теперь вдруг вы начинаете предполагать необходимость именно вашего сценария. Проще говоря, соединение от А до С или наоборот, от А до F или от В до Z или что-то еще по мере роста нашей системы.
Есть много способов, которыми это действительно может быть сделано. Тот, что упоминался выше, является самым популярным, он пролегает по всем ссылкам. Основная проблема в том, что это очень медленно. И чем медленнее растет количество таблиц, добавляемых в цепочку, тем больше эти таблицы растут и тем дальше вы хотите пройти через них.
Решение 1. Найдите общую ссылку. Должно быть, если вы учили о причине присоединения А к С. Если это не очевидно, создайте отношения, а затем присоединяйтесь к ним. то есть, чтобы соединиться с A по B через C, должна быть некоторая общность, иначе ваше объединение приведет либо к нулевым результатам, либо к огромному числу, либо к результатам (декартово произведение). Если вы знаете эту общность, просто добавьте необходимые столбцы в A и C и свяжите их напрямую.
Правило отношений - у них просто должна быть причина существования. Ничего более. Если вы можете найти вескую причину для ссылки с А на С, сделайте это. Но вы должны убедиться, что ваша причина не является избыточной (т. Е. Она уже обработана каким-либо другим способом).
Теперь слово предупреждения. Есть некоторые подводные камни. Но я не очень хорошо объясняю их, поэтому я отсылаю вас к моему источнику вместо того, чтобы говорить об этом здесь. Но помните, что это связано с некоторыми тяжелыми вещами, так что это видео о ловушках фанатов и пропастей - действительно только отправная точка. Вы можете присоединиться без отношений. Но я советую сначала посмотреть это видео, так как оно выходит за рамки того, что большинство людей изучают в колледже, и хорошо относится к территории ребят из BI и SAP. Эти ребята, в то время как они могут программировать, их дневная работа заключается в том, чтобы специализироваться именно на таких вещах. Как получить огромное количество данных, чтобы общаться друг с другом и иметь смысл.
Это видео является одним из лучших видео, которые я встречал на эту тему. И стоит посмотреть некоторые другие его видео. Я многому у него научился.