2010-08-17 13 views
11

Tengo una base de datos muy grande que necesito para diagramar. La base de datos es SQL Server 2008 en x64. Es grande porque hay cientos de tablas relacionadas, cada una con hasta 2000 campos (algunos son escasos), relaciones múltiples entre tablas (a menudo cientos por tabla, de hecho), esquemas múltiples ... se entiende la idea.Cómo generar un diagrama de un esquema de base de datos muy grande (SQL Server)

He intentado utilizar la base de datos característica Diagramas de SQL Server Management Studio, pero se estrelló con un Win32Exception: "No hay suficiente almacenamiento está disponible para procesar este comando ..."

He intentado utilizar la ingeniería inversa de Visio función en una máquina diferente para conectarse y diagramarla, pero eso ha estado funcionando durante algunas horas sin ningún signo de finalización.

Los scripts para construir este esquema gigante están siendo creados por una herramienta que creamos para el trabajo. Si bien la herramienta está haciendo bien su trabajo, es complicado visualizar su resultado.

Estoy buscando una herramienta para iniciar un diagrama de esta base de datos para que podamos hacer esto. ¿Alguna sugerencia?

EDITAR: Solo para enfatizar, no se supone que el diagrama se use para una referencia útil real. Es un dispositivo de administración de relaciones con el cliente para demostrar la complejidad/escala del sistema.

+0

Algunas sugerencias aquí http://stackoverflow.com/questions/1307944/sql-data-modelling-mapping-software-for-200-tables~~V~~3rd –

Respuesta

9

Generar una imagen de cualquier tipo para una base de datos de ese tamaño simplemente se convierte en un caramelo que está pegado en una pared que jadea, y honestamente no sirve para nada, excepto miradas ocasionales. ¿Por qué no utilizar una herramienta como Red Gate's Documentation tool que servirá para un propósito real? Por favor, comprenda que no estoy diciendo esto de una manera burlona, ​​pero he seguido por este camino antes de tratar de diagramar una enorme base de datos, y lo logré hasta cierto punto, pero nunca encontré un buen punto de venta donde fuera de alguna utilidad.

+1

Una vez intenté un diagrama de 800 mesas. Tenía 60 páginas de ancho. Y 30 de altura o más. No es una pared en una oficina: la pared lateral de un edificio de oficinas. El póster obviamente no tiene lo que realmente quiere aquí. – TomTom

+1

@TomTom: Tal vez vayan a usar un proyector para mostrarlo en el lateral del edificio por la noche. La base de datos equivalente a una película de autocinema. – FrustratedWithFormsDesigner

+2

¡Mientras haya palomitas de maíz, estoy allí! – RedFilter

0

Evitaría hacer todo en un solo diagrama. Como mencionó, las herramientas fallan y probablemente no sea posible comprender fácilmente un diagrama con cientos de tablas con potencialmente miles de registros por tabla. ¿Se pueden generar diagramas de áreas lógicas más pequeñas con cierta superposición a otras áreas lógicas ?

Alternativamente, podría intentar usar algo como graphviz para analizar las sentencias DDL y luego generar un gráfico. Probablemente se mantendrá por un tiempo, pero recuerdo haber visto en una universidad diagramas del tamaño de un póster con letra pequeña, que probablemente eran de la misma complejidad que los suyos. ¡Buena suerte!

+0

Sí, cuando hemos hecho grandes bases de datos antes, dividirlas en áreas lógicas ha funcionado fuera bastante bien Si no puede dividir algo tan grande en áreas lógicas poco compactas, probablemente tenga más problemas que sus diagramas. La herramienta de ingeniería inversa de Visio es realmente bastante buena, pero podría fallar en algo tan grande. Como alternativa, [Erwin] (http://erwin.com/) podría enfrentarlo, y hay una versión de prueba gratuita para que pueda averiguarlo con anticipación. –

2

Puesto que usted tiene varios esquemas tal vez una buena idea es generar diagramas de esquema por vez

0

Fwiw, asumiendo que desea seguir adelante con esto me he encontrado personalmente que el Visual Studio 2010 modelador de base de datos hace el mejor Diagramas que he encontrado hasta ahora: solo importe su base de datos como si fuera a usarla para Linq2SQL

+0

No realmente, no para el db que el usuario ha publicado. Eso terminará con un diagrama donde cada tabla es un PUNTO;) – TomTom

+0

He dejado esto generando un diagrama de la noche a la mañana. Todavía está yendo. Actualizará la pregunta y marcará esto como la respuesta si funciona :-) – tomfanning

+0

Sin dados. Visual Studio no respondió por completo cuando esto finalmente terminó. – tomfanning

11

Trabajé en un lugar que tenía cientos de tablas (cerca de 1k) y nadie sabía realmente lo que estaba pasando en el sistema, la empresa crecía y contrataba mucho. A un tipo se le asignó la tarea de hacer un diagrama, y ​​él auto-mágicamente creó un gigantesco póster de azulejos que contenía todas las mesas con líneas que conectaban varias mesas (yendo por todas partes). No estoy seguro de lo que usó, fueron Unix y Oracle hace años (mucho antes de Linux y de código abierto). No había una rima o razón real para el diseño de las tablas en su diagrama. Él había creado con éxito un diagrama de cada mesa. El "póster" se colocó en una pared en un área común, y obtuvo algunas miradas, pero nadie lo usó realmente, era inutilizable, demasiado desordenado, demasiado desorganizado.Como resultado, utilicé MS-Word para crear un diagrama de página único que contenía las 20 tablas principales (pasó por algunas iteraciones cuando "descubrí" nuevas tablas principales) con líneas para cada clave externa y cada tabla se ubicó de manera lógica. . Mostré el nombre de la columna, el tipo de datos, la nulabilidad, PK y todos los FK. Puse mi diagrama en mi pared junto a mi monitor. Finalmente, todos querían una copia de mi diagrama, incluida la persona que hizo el "póster". Cuando dejé ese trabajo todavía estaban dando mi diagrama a los nuevos empleados.

Te recomiendo que trabajes como un explorador, encuentres las tablas de claves y las asocies sobre la marcha, haciendo tantos diagramas específicos como sea necesario a medida que descubres el sistema. Tratar de hacer un "póster" gigantesco automáticamente no funcionará muy bien.

+0

+1 porque haces que una tarea ardua suene divertida! – RedFilter

+0

+1 - MUCHO más sensato. Hay un límite en los elementos que aún se puede manejar en un diagrama. – TomTom

+1

@TomTom, sí, 'haciendo tantos diagramas específicos como sea necesario'. ¿Quién tiene un mapa de calles del mundo entero? generalmente tiene mapas detallados para cada área importante, cuando maneja en una ciudad, no hay necesidad de detalles sobre otra ciudad. –

2

Utilice graphviz. Use algunas declaraciones SQL para generar el digram, luego ejecútelo a través de dot.exe para generar un PDF o PNG.

Lo he usado para generar digramas de datos dentro de las tablas de SQL Server. No hay razón por la que también puedas usarlo para las tablas.

http://www.graphviz.org/

También son Java, Silverlight, AJAX y utilidades para navegar adicional gráficos grandes, como PDF es sólo para una página.

0

schemaspy proporciona una interfaz práctica para generar diagramas interactivos que abarcan varios esquemas usando graphviz como un back-end. Sin embargo, nunca lo he probado en nada de este tamaño.

0

IntelliJ (específicamente IDEA como acabo de intentar con esto, pero creo que sus otros IDEs ofrecen esta característica https://www.jetbrains.com/) tiene un recurso de base de datos integrado, desde aquí puede conectarse a su base de datos y analizar tablas individuales, combinaciones específicas o tablas o todas sus tablas resaltando las tablas deseadas, 'clic derecho' y seleccionando la opción 'diagrama'. Puede guardar para referencia futura y también imprimir. Acabo de probar esto en una gran base de datos de más de 500 tablas y se procesó en segundos, el diagrama vectorial sirve como una forma alternativa de digerir las estructuras de la base de datos visualmente y las relaciones y restricciones entre ciertas tablas pero no recomendadas para la impresión.

enter image description here

Cuestiones relacionadas