Как создать диаграмму очень большой схемы базы данных (SQL Server)

У меня очень большая база данных, которая мне нужна для диаграммы. База данных - это SQL Server 2008 на x64. Он большой в том, что есть сотни связанных таблиц, каждая из которых имеет до 2000 полей (некоторые из них разреженные), множественные отношения между таблицами (часто сотни на таблицу), несколько схем... вы получаете идею.

Я попытался использовать функцию "Диаграммы базы данных" в SQL Server Management Studio, но он разбился с помощью Win32Exception: "Недостаточно памяти для обработки этой команды..."

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

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

Я за инструментом, чтобы выпустить диаграмму этой базы данных, чтобы мы могли это сделать. Любые предложения?

EDIT: Чтобы подчеркнуть, диаграмма действительно не должна использоваться для фактической полезной ссылки. Это устройство управления взаимоотношениями с клиентами, чтобы продемонстрировать сложность/масштаб системы.

Ответ 1

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

Ответ 2

Я работал в месте, где было несколько сотен таблиц (около 1 тыс.), и никто не знал, что происходит в системе, компания росла и много нанимала. Парню поставили задачу сделать диаграмму, и он автоматически создал волшебный плакат с плакатом, в котором содержался каждый стол с линиями, соединяющими разные столы (по всему месту). Я не уверен, что он использовал, это был Unix и Oracle много лет назад (путь до Linux и с открытым исходным кодом). Не было никакой реальной рифмы или причины расположения таблиц на его диаграмме. Он успешно создал диаграмму для каждой таблицы. "Плакат" был поставлен на стену в общей зоне и получил несколько взглядов, но никто никогда не использовал его, он был непригодным, слишком загроможденным, слишком неорганизованным. В результате я использовал MS-Word для создания единой страницы, содержащей 20 основных таблиц (через несколько итераций, когда я "обнаружил" новые основные таблицы) с линиями для каждого внешнего ключа и каждой таблицей, расположенной логически, Я показал имя столбца, тип данных, nullability, PK и все FK. Я поместил свою диаграмму на свою стену монитором. В конце концов все хотели получить копию моей диаграммы, включая человека, который сделал "плакат". Когда я оставил эту работу, они все еще предоставляли мою диаграмму новым сотрудникам.

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

Ответ 3

Поскольку у вас есть несколько схем, может быть, хорошая идея - генерировать диаграммы для каждой схемы.

Ответ 4

Используйте graphviz. Используйте некоторые инструкции SQL для генерации digram, затем запустите его через dot.exe для создания PDF или PNG.

Я использовал его для генерации digrams данных в таблицах SQL Server. Нет причин, по которым вы также можете использовать его для таблиц.

http://www.graphviz.org/

Существуют также утилиты java, silverlight и AJAX для навигации по большим графам, так как PDF предназначен только для одной страницы.

Ответ 5

Я бы избегал делать все это на одной диаграмме. Как вы упомянули, инструменты рушится, и, вероятно, невозможно легко понять диаграмму с сотнями таблиц с потенциально тысячами записей на таблицу. Можете ли вы генерировать диаграммы меньших логических областей с некоторым перекрытием с другими логические области?

В качестве альтернативы вы можете попробовать использовать что-то вроде graphviz для анализа операторов DDL, а затем создать график. Скорее всего, он немного изменится, но я помню, как я видел в диаграммах размером с университетский плакат с крошечной печатью, которые, вероятно, были такой же сложной, как ваша. Удачи!

Ответ 6

FWIW, предполагая, что вы хотите продолжить это, я лично обнаружил, что модельный ряд базы данных Visual Studio 2010 делает самые приятные диаграммы, с которыми я сталкивался до сих пор. Просто импортируйте свою базу данных так, как будто вы собираетесь использовать ее для Linq2SQL

Ответ 7

schemaspy предоставляет удобный интерфейс для создания интерактивных диаграмм, которые охватывают несколько схем, используя graphviz в качестве бэкэнд. Я никогда не пробовал его ни на что такого размера.

Ответ 8

IntelliJ (в частности, IDEA как раз пробовал с этим, но я считаю, что их другие IDE предлагают эту функцию https://www.jetbrains.com/) имеет встроенный базы данных, здесь вы можете подключиться к своей базе данных и проанализировать отдельные таблицы, конкретную комбинацию или таблицу или все ваши таблицы, выделив нужные таблицы, щелкнув правой кнопкой мыши и выбрав параметр "диаграмма". Вы можете сохранить для последующей справки, а также распечатать. Я просто пробовал это на большой БД с 500 + таблицами и отображался в секундах, векторная диаграмма служит альтернативным способом визуального анализа структур баз данных и отношений и ограничений между определенными таблицами, но не рекомендуется для печати. ​​

введите описание изображения здесь