6

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

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

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

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

4 ответа4

2

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

2

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

0

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

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .