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

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

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

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

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

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

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

8 ответов


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


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

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


поскольку у вас есть несколько схем, возможно, хорошей идеей является создание диаграмм на схему вместо


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

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

http://www.graphviz.org/

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


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

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


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


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


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

enter image description here