Инструмент для автоматической генерации и выкладки диаграммы отношений сущностей?

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

Существует ли какой-либо инструмент, который позволит реконструировать структуру существующей базы данных, а затем автоматически выстроить ее так, чтобы ее было легко понять и выявить организацию базы данных? Если бы я создал такой инструмент, он бы позволил минимизировать длину линий, соединяющих сущности, минимизировать количество линий, которые пересекают друг друга, и выделять группы связанных сущностей друг от друга. Я также попытался бы определить, какие таблицы являются поисковыми таблицами, какие являются промежуточными таблицами мана-множество и т. Д., И выложить сущности так, чтобы эти роли были очевидны для человека, который смотрит на диаграмму.

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

Изменить: я должен отметить, что я пытаюсь построить базу данных с более чем 100 таблицами, поэтому я хотел бы автоматизировать как можно большую ее часть. База данных - не та, с которой я очень хорошо знаком, поэтому я стремлюсь научиться смотреть на диаграмму, а не выкидывать то, что я знаю, в диаграмму (что, по-видимому, и предназначено для большинства инструментов диаграмм).

5 ответов

Решение

Пока у вас есть внешние ключи в вашей базе данных, я обнаружил, что Visio делает довольно хорошую работу. У меня была база данных postgresql, содержащая около 150 таблиц из четырех разных объединенных проектов, которые были связаны через различные внешние ключи, и она проделала огромную работу по извлечению всех связей и группированию таблиц вместе. Диаграмма имела только несколько перекрывающихся линий, несмотря на обширные внешние ключи. Кроме того, благодаря тому, что логические элементы внешних ключей были сгруппированы, было ясно, в каких базах данных содержится большинство таблиц.

SchemaCrawler автоматически генерирует диаграммы из баз данных, используя GraphViz. Реальная сила SchemaCrawler в том, что

  1. Вы можете использовать регулярные выражения для ограничения таблиц и столбцов на диаграмме, что делает его действительно полезным при изучении незнакомой базы данных
  2. вы можете обнаружить связи между таблицами, которые не выражены как внешние ключи, используя функцию "слабых ассоциаций"

Просто скачайте SchemaCrawler, поместите его где-нибудь в путь Java и запустите его следующим образом:

java -classpath $(echo ../../_schemacrawler/lib/*.jar | tr ' ' ':') schemacrawler.Main -server=mysql -database=your_database_in_localhost -user=your_user -password=your_password -infolevel=maximum -command=graph -outputformat=pdf -outputfile=my_database_diagram.pdf $*

Также обратите внимание, что вы можете выбирать различные форматы файлов, такие как

  • PNG
  • JPG
  • точка
  • SVG

и много других.

Вы также можете решить, следует ли отображать имена внешних ключей, порядковые номера столбцов и имена схем, задав следующие свойства в файле конфигурации SchemaCrawler, schemacrawler.config.properties.

  • schemacrawler.format.show_ordinal_numbers = верно
  • schemacrawler.format.hide_foreignkey_names= верно
  • schemacrawler.format.show_unqualified_names= верно

Больше информации и примеров на http://schemacrawler.sourceforge.net/diagramming.html

DBeaver имеет возможность просматривать структуру базы данных в виде диаграммы отношений сущностей.

Вероятно , зависит от того, какую базу данных вы используете. Я пробовал это с Microsoft SQL Server Management Studio, и он создает и раскладывает диаграмму. Я не могу точно сказать, соответствует ли он вашим требованиям, но экспресс-версия бесплатна, поэтому всегда можно попробовать.

Я использовал Druid для этого в прошлом и был очень доволен. Это с открытым исходным кодом / бесплатно, и вы можете перемещать объекты на диаграмме вокруг. Тем не менее, пользовательский интерфейс может немного привыкнуть.

Другие вопросы по тегам