Как можно объединить все связанные реляционные таблицы в базе данных? - PullRequest
0 голосов
/ 23 декабря 2018

Я пробовал следующие подходы

  • Топологическая сортировка для поиска табличных зависимостей для программного создания запросов на объединение
  • BFS для упорядочения таблиц таким образом, чтобы объединениезапрос может быть сформирован

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

Вдиаграмма зависимости схемы ниже,

Sample Schema

Каждая стрелка указывает на таблицу, которая имеет ссылку на внешний ключ к данной таблице, например, таблица sheep имеет 2внешние ключи, один для домашнего животного и один для домашнего скота.

Я хочу объединить все таблицы в ненормализованное единое представление.

Мои два подходаошибка в этом случае, потому что с топологической сортировкой мой скрипт попытается соединить Table Bird с таблицей Animal еще до того, как он присоединится к таблице chicken, поэтому это приведет к ошибке.

При использовании BFS я могуПройдя по первой половине графика легко и в правильном порядке, но проблема возникнет, когда мне нужно пройти по второй половине (таблица Bird and Eagle), и нет простого способа выбрать таблицу Bird перед таблицей Eagle.

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

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

Я использую MSSQL, и мои текущие сценарии написаны на python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...