powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Поиск связей между таблицами
5 сообщений из 5, страница 1 из 1
Поиск связей между таблицами
    #38911132
andzhi4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Появилась неординарная (а может и вполне обычная :)) задача из области BI.
Клинент, по всей видимости, не знает как устрена его база и ему лень разбираться. Но он хочет знать, как логически можно связать несколько таблиц, используя имеющиеся внешние ключи, чтобы потом искать законмерности и т.д.
Суть задачи: клиент задает таблицу A и таблицу B. Функция на базе должна найти путь по FK между ними, если он существует конечно. По FK можно пройти как от родителя к потомку, так и от потомка к родителю. Например, если A->C и B->C, значит путь между таблицами A и B = A->C->B (ну надо еще конкретные столбцы указать конечно).
Похоже задача сводится к поиску пути в неориентированном невзвешенном графе, который еще и несвязный к тому же. В принципе, обойти граф - это не проблема. Проблема - реализовать это в базе. Не понятно, как представить постгресовскую базу в виде графа (Postgresql 9.2.6) и как на plpsql запрограммировать его обход и выдачу результата.
Если есть какие-нибудь идеи или опыт в таких задачах, поделитесь пожалуйста.
...
Рейтинг: 0 / 0
Поиск связей между таблицами
    #38911144
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andzhi4 Проблема - реализовать это в базе. Не понятно, как представить постгресовскую базу в виде графа (Postgresql 9.2.6) и как на plpsql запрограммировать его обход и выдачу результата.
Если есть какие-нибудь идеи или опыт в таких задачах, поделитесь пожалуйста.

Ничего не надо реализовывать, все исходные данные уже есть.
Нужно смотреть "information schema.table_constraints"
НУ и "покурить" над рекурсивным запросом.
<:o)
...
Рейтинг: 0 / 0
Поиск связей между таблицами
    #38911185
andzhi4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но в результате рекурсивного запроса я получу например:
A
-B
-C
--D
E
-F
-G
-D

Отсюда легко найти связь между скажем А и С, но неочевидно, что А и E тоже связаны, только через D, которая для них общий потомок. Все равно напрашивается хитрый алгоритм обхода всей этой пыжни.
...
Рейтинг: 0 / 0
Поиск связей между таблицами
    #38911203
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andzhi4Но в результате рекурсивного запроса я получу например:
A
-B
-C
--D
E
-F
-G
-D

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

А почитайте про запросы по дереву.
У вас будет
A, B
A, C
B, C
Где-то так. :-)
Можно даже путь получить.
A, B, [A,B]
A, C, [A,B,C]
B,C, [B,C]
Сам такие запросы писал, только давно. Сейчас без гугла не вспомню :-)
...
Рейтинг: 0 / 0
Поиск связей между таблицами
    #38911253
ARTURV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andzhi4,

Вспомните об ортографах и пишите алгоритмы поиска для показа цепочек связей
Успехов Вам
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Поиск связей между таблицами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]