Инструмент для автоматической генерации и выкладки диаграммы отношений сущностей?
Я видел много инструментов, которые могут реконструировать ERD из существующей базы данных, но я не смог найти тот, который мог бы автоматически планировать диаграмму разумным способом. Большинство из них просто помещают все сущности друг на друга и называют это днем. Некоторые пытаются организовать организации, но они не очень хорошо справляются с этим.
Существует ли какой-либо инструмент, который позволит реконструировать структуру существующей базы данных, а затем автоматически выстроить ее так, чтобы ее было легко понять и выявить организацию базы данных? Если бы я создал такой инструмент, он бы позволил минимизировать длину линий, соединяющих сущности, минимизировать количество линий, которые пересекают друг друга, и выделять группы связанных сущностей друг от друга. Я также попытался бы определить, какие таблицы являются поисковыми таблицами, какие являются промежуточными таблицами мана-множество и т. Д., И выложить сущности так, чтобы эти роли были очевидны для человека, который смотрит на диаграмму.
У меня точно нет средств для выполнения вышесказанного, но у меня есть средства для покупки такого инструмента, если он хорош.
Изменить: я должен отметить, что я пытаюсь построить базу данных с более чем 100 таблицами, поэтому я хотел бы автоматизировать как можно большую ее часть. База данных - не та, с которой я очень хорошо знаком, поэтому я стремлюсь научиться смотреть на диаграмму, а не выкидывать то, что я знаю, в диаграмму (что, по-видимому, и предназначено для большинства инструментов диаграмм).
5 ответов
Пока у вас есть внешние ключи в вашей базе данных, я обнаружил, что Visio делает довольно хорошую работу. У меня была база данных postgresql, содержащая около 150 таблиц из четырех разных объединенных проектов, которые были связаны через различные внешние ключи, и она проделала огромную работу по извлечению всех связей и группированию таблиц вместе. Диаграмма имела только несколько перекрывающихся линий, несмотря на обширные внешние ключи. Кроме того, благодаря тому, что логические элементы внешних ключей были сгруппированы, было ясно, в каких базах данных содержится большинство таблиц.
SchemaCrawler автоматически генерирует диаграммы из баз данных, используя GraphViz. Реальная сила SchemaCrawler в том, что
- Вы можете использовать регулярные выражения для ограничения таблиц и столбцов на диаграмме, что делает его действительно полезным при изучении незнакомой базы данных
- вы можете обнаружить связи между таблицами, которые не выражены как внешние ключи, используя функцию "слабых ассоциаций"
Просто скачайте 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 для этого в прошлом и был очень доволен. Это с открытым исходным кодом / бесплатно, и вы можете перемещать объекты на диаграмме вокруг. Тем не менее, пользовательский интерфейс может немного привыкнуть.