Подтвердить что ты не робот

Сгенерируйте диаграмму E-R путем обратного проектирования базы данных

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


Запрос словаря данных PostgreSQL для внешних ключей и отношения между таблицами очень прост, но как я могу использовать эту информацию для создания графика отношений между таблицами?

Любые рекомендации по инструментам, которые могут это сделать?

РЕДАКТИРОВАТЬ: Я знаю, что GraphVIZ/DOT может быть полезным, однако я не знаю, есть ли какие-либо идеи относительно того, как закодировать приложение, которое будет генерировать ориентированный граф .DOT файл.

4b9b3361

Ответ 1

Dot является частью пакета graphviz, который является довольно проклятым крутым/полезным инструментом. Конечно, вам понадобится что-то, чтобы сгенерировать dot файлы для graphviz. Я использовал SchemaSpy один или два раза в прошлом, и он работает очень хорошо, если у вас есть отношения, определенные в базе данных.

Ответ 2

Microsoft Visio легко это сделает.

Ответ 3

По крайней мере, для Oracle я запускаю этот запрос или попрошу администратор базы данных запустить его и отправить мне результаты. Результаты могут быть скопированы непосредственно в текстовый файл, который будет интерпретироваться с помощью инструментов Graphviz, что приведет к диаграмме базы данных.

SELECT '"' || Source.TABLE_NAME || '" -> "' 
           || Destiny.TABLE_NAME || '";' AS For_GraphViz
FROM dba_constraints Source
JOIN dba_constraints Destiny
ON Source.owner='my_db_owner' AND Destiny.owner='my_db_owner'
AND Source.CONSTRAINT_TYPE='R'
-- theoretically this validation should be redundant
-- AND Destiny.Constraint_type = 'P'
AND Source.R_CONSTRAINT_NAME = Destiny.CONSTRAINT_NAME
ORDER BY Source.TABLE_NAME, Source.CONSTRAINT_TYPE, Source.CONSTRAINT_NAME
    , Source.R_CONSTRAINT_NAME, Source.INDEX_NAME;

Аналогичный запрос может быть легко создан для SQL Server, не знает о MySQL, PostgreSQL и др.

Ответ 4

Dot является многоплатформенным и может быть полезным.

Ответ 5

DBVisualizer также является бесплатной и приятной альтернативой.