2010-08-17 6 views
11

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

Я пытался использовать Database Diagrams особенность SQL Server Management Studio, но он упал с Win32Exception: «Не хватает памяти для обработки команды ...»

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

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

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

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

+0

Некоторые предложения здесь http://stackoverflow.com/questions/1307944/sql-data-modelling-mapping-software-for-200-tables –

ответ

9

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

+1

Я однажды попробовал схему 800 таблиц. Это был тонкий 60 страниц. И 30 высоко или около того. Не стена в офисе - боковина офиса СТРОИТЕЛЬСТВО. Плакат, очевидно, не получил то, что он на самом деле хочет здесь. – TomTom

+1

@TomTom: Возможно, они собираются использовать проектор, чтобы показать его сбоку от здания по вечерам. Базовый эквивалент фильма с приводом. – FrustratedWithFormsDesigner

+2

Пока есть попкорн, я там! – RedFilter

0

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

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

+0

Да, когда мы делали большие базы данных до этого, они разбивали их на логические области довольно неплохо. Если вы не можете сломать что-то большое в логически логически связанные области, у вас, вероятно, есть больше проблем, чем на диаграмме. Инструмент обратного преобразования Visio на самом деле неплохой, но может занять что-то такое большое. В качестве альтернативы, [Erwin] (http://erwin.com/) может справиться с этим, и есть бесплатная пробная версия, чтобы вы могли узнать это заранее. –

2

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

0

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

+0

Не совсем - не для db, который пользователь опубликовал. Это закончится диаграммой, где каждая таблица является POINT;) – TomTom

+0

Я оставил это, генерируя диаграмму в одночасье. Это все еще продолжается. Обновит вопрос и отметит это как ответ, если он будет работать :-) – tomfanning

+0

Нет кубиков. Visual Studio полностью не отвечала, когда это закончилось. – tomfanning

11

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

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

+0

+1 'за то, что вы делаете трудную задачу звучать весело! – RedFilter

+0

+1 - БОЛЬШЕ разумнее. Существует ограничение на элементы, которые все еще можно обрабатывать на диаграмме. – TomTom

+1

@TomTom, да, 'как можно больше конкретных диаграмм'. У кого есть одна уличная карта всего мира? у вас обычно есть подробные карты для каждой важной области, когда вы едете в одном городе, нет необходимости в подробностях о другом городе. –

2

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

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

http://www.graphviz.org/

Есть также Java, Silverlight и AJAX утилиты для навигации очень большие графики, так как PDF только для одной страницы.

0

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

0

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

enter image description here

Смежные вопросы