Расшифровать схему базы данных

Недавно я унаследовал работу по обслуживанию базы данных, которая была разработана не очень хорошо, и дизайнеры не могут задать какие-либо вопросы. И в ближайшем будущем мне предстоит еще пара.

Было непросто попытаться выяснить отношения между таблицами без какой-либо наглядной информации или диаграммы базы данных.

Мне было интересно, какие инструменты для этого рекомендуются. Я знаю о Visio, но я надеялся, что там есть несколько хороших приложений с открытым исходным кодом / бесплатных программ. Мне это вообще не нужно для изменения базы данных. Просто прочтите его и создайте своего рода наглядное пособие, которое поможет мне понять, как все устроено, и попытаться выяснить, что дизайнер думал о том, как данные должны быть связаны.


Дополнительные данные для ответа: SchemaSpy - это именно то, что я искал, но, поскольку много лет не работал с командной строкой, я решил использовать SchemaSpyGUI. Также была некоторая конфигурация, к которой нужно было привыкнуть, так как я мало работаю с Java, но конечный результат был тем, что я искал (по замене с открытым исходным кодом для диаграмм Visio ER).

См. Также stackoverflow.com/questions/7031203/…

reinierpost 07.07.2016 21:32
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
9
1
14 214
13
Перейти к ответу Данный вопрос помечен как решенный

Ответы 13

Какую СУБД (систему управления базами данных) вы используете? Многие современные СУБД, такие как SQL-сервер и Access, могут создать для вас диаграмму E-R.

Microsoft Visio - отличный инструмент, который может реконструировать SQL из любого источника данных.

ДДТ (средство проектирования баз данных) может реконструировать необработанный SQL в Windows и очень легкий (очень небольшая бесплатная загрузка).

MySQL Workbench - один из наиболее популярных инструментов MySQL, имеющий бесплатную загружаемую версию.

SQLFairy может сделать то же самое для MySQL в Linux.

Я использую рабочую среду mysql (http://www.mysql.com/products/workbench/) для баз данных mysql. Вы можете прикрепить верстак к своей базе данных, и он нарисует для вас ER-биграмму.

Используя pgsql / win32, я обнаружил, что самым простым решением было написать сценарий Perl, который использовал Graph :: Easy из CPAN. Запросите в базе данных отношения внешнего ключа, создайте ориентированный граф с таблицами в качестве узлов и отношениями FK в качестве ссылок. Если это ваша установка, я могу опубликовать код.

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

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

Между этим и небольшой проверкой гипотез об отношениях FK (если FK физически не присутствует в таблице) вы можете разобраться в довольно сложных схемах. Я обнаружил, что такой подход к построению диаграмм делает Visio безупречным лидером, потому что вы можете легко взаимодействовать с реконструированной моделью довольно удобным способом. Вы можете заполнить недостающие внешние ключи, построить диаграммы предметной области и добавить аннотации к диаграммам. Интерактивность этого процесса делает его хорошим инструментом обучения.

Это несколько субъективный взгляд, но интерактивность работает для меня очень хорошо как процесс обучения, и это, безусловно, мой предпочтительный подход. Большинство сайтов не будут завидовать вам примерно 300 фунтов за лицензию, если у них ее еще нет. Единственный сайт, на котором я когда-либо работал, где они должны были это получить, был потому, что у них был Visio Standard вместо Pro. Я вежливо спросил, и PHB подписал это.

Мне нравится проверять, есть ли у приложений, использующих базу данных, способы регистрации используемого SQL (или самого бэкэнда БД, но это, как правило, менее управляемо). Чувство того, какие запросы выполняются в базе данных, помогает вам сосредоточиться на важных таблицах.

Как и в большинстве случаев, здесь применяется правило 80/20: 20% столов выполняют 80% всего интересного. После того, как вы их разобрали, диаграмма понадобится редко.

Да неужели? 20% из 40 столов управляемы. 20% от 2000 столов, не так много

Stephanie Page 10.02.2011 22:22

Да, действительно. У меня есть пара систем с 1200+ таблицами. В одном вам действительно нужно знать, как взаимосвязаны 12 или около того. В другом - около 25. Диаграмма всей схемы бесполезна, но карты этих «основных» таблиц достаточно для понимания системы на разумном уровне.

dland 12.05.2011 14:17

хорошо ... 20% от 1200 = 240. 25 ближе к 2%, так что вы подтверждаете мою точку зрения.

Stephanie Page 12.05.2011 20:30

Попробуйте DBVis - загрузите по адресу http://www.minq.se/products/dbvis/ - есть про-версия (не требуется) и открытая версия, которой должно хватить.

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

Ответ принят как подходящий

Попробуйте SchemaSpy. Я запустил его на довольно сложной базе данных и остался очень доволен результатом с советами по оптимизации.

Это действительно ответ на вопрос? Этот инструмент, похоже, не выводит ключи, что, я думаю, является частью вопроса.

reinierpost 07.07.2016 21:33

@reinierpost Я не вижу "ключ" в исходном вопросе, поэтому я не уверен, почему вы так думаете ... :-) (На самом деле, я даже не понимаю, что вы имеете в виду под "вывести ключи".) В любом случае , интересно получить несколько ответов - предложить несколько инструментов, чтобы вы могли выбрать лучший для себя.

PhiLho 08.07.2016 16:53

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

reinierpost 08.07.2016 17:21

dbdesc не является бесплатным, но я слышал о нем очень хорошие отзывы. Он работает с несколькими основными базами данных.

Мне повезло, что мне еще не пришлось расшифровывать схемы баз данных других людей. Я использую набор шаблонов, поставляемых с CodeSmith.

Взгляните на первичный ключ и внешний ключ Relationshsips, которые были настроены в качестве отправной точки.

Поскольку база данных без существующих диаграмм может не иметь формально установленных отношений, я смотрю на структуры и имена таблиц и делаю свои предположения относительно того, что может быть связано с чем, а затем копаться в структурах, чтобы увидеть, есть ли очевидные (но undefined) внешние ключи. Я смотрю на сохраненные процедуры, чтобы понять, как таблицы соединяются и какие поля запрашиваются.

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

Во-первых, позвольте мне сказать, что я чувствую вашу боль!
Вот пара моих советов:

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

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

Stephanie Page 10.02.2011 22:18

Спасибо, @Stephanie. Это полезно знать. Вы можете назвать несколько?

AJ. 11.02.2011 13:24

PowerDesigner может это сделать. Это то, что я использую. Это недешево, но есть 15-дневная полная версия с бомбой замедленного действия.

Stephanie Page 16.02.2011 22:13

У меня есть неплохой опыт работы с Aqua Data Studio для обратного проектирования схемы БД. Он очень многофункциональный и поддерживает даже более экзотические базы данных, такие как Informix или Sybase.

Это помогло мне сгенерировать диаграммы ER на MS SQL Server 2012:

MS SQL Server Management Studio> меню "Файл"> "Подключить обозреватель объектов" Выберите узел базы данных и разверните его. под этим узлом вы найдете подузел под названием «Диаграммы базы данных» Щелкните правой кнопкой мыши «Диаграммы базы данных»> «Новая диаграмма базы данных»> Добавьте таблицы, в которых вы хотите видеть столбцы, отношения и т. д.

Используйте Visio. Если вы используете Vision 2010, вам нужно будет использовать общий поставщик OLEDB для SQL Server, чтобы не возникло проблем с подключением к драйверу Visio.

Это не сработает. Visio не определяет отношения между таблицами.

reinierpost 07.07.2016 21:30

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