Software gratuito para aplicar ingeniería inversa a diagramas de bases de datos complejos existentes en SQL Server 2008+

Hasta hace unos años, usaba Microsoft Visio para realizar ingeniería inversa de una base de datos existente en un diagrama. Esta característica ha quedado obsoleta desde hace un tiempo, y estoy bastante atascado en encontrar una alternativa.

Requisitos

Las preguntas frecuentes de este nuevo sitio de SE me indican que sea preciso en los requisitos, así que daré lo mejor de mí. La mayoría de estos requisitos estaban en Visio, aunque no todos. Supongo que encontrar una pieza de software que los tenga a todos no es factible, pero me gustaría acercarme.

Importante:

  • bases de datos de SQL Server 2012 ;

  • Tablas de ingeniería inversa con todas las columnas e indicaciones de clave principal/foránea;

  • Claves foráneas de ingeniería inversa como conectores entre tablas;

  • Diseño manual de cajas y conectores (quiero agrupar cosas visualmente);

  • Tematización básica : elija colores de fondo para las tablas;

  • Capaz de manejar modelos complejos, por ejemplo, más de 100 tablas ;

  • Capaz de elegir qué elementos mostrar o no (por ejemplo, omitir ciertas tablas, etc.);

  • Al menos una prueba gratuita disponible;

  • Exportar a varios formatos para fines de distribución e impresión, el más preferido es PDF, supongo que también sería PNG;

  • WYSIWYG ;

Principales puntos de bonificación:

  • Se ejecuta en Windows 8 (aunque instalaría una máquina virtual Linux para que el software cumpla con todos los requisitos importantes)

  • Diseño automático y enrutamiento de conectores para minimizar la superposición;

  • Capaz de hacer SQL Server 2008 y 2008R2 ;

  • Capaz de aplicar ingeniería inversa a las vistas ;

  • Gratis (o una versión gratuita );

  • Actualización incremental , por ejemplo, aplicar ingeniería inversa nuevamente y agregar/eliminar tablas, etc., manteniendo el tema, el diseño existente, etc.

  • Bonitos diagramas (aspecto moderno, suavizado, elección de fuentes, colores, degradados, sombras paralelas, temas, etc.);

  • Curva de aprendizaje amigable (puedo manejar muchas funciones complejas siempre que sea fácil hacer lo básico rápidamente);

DEBE TENER:

  • ¡ El instalador no instala en secreto barras de herramientas en mi navegador ni cambia mi página de inicio! ;-)

Mi investigación

Por supuesto, esta pregunta se ha hecho antes, incluso en sitios hermanos (con cierto éxito, aunque están fuera de tema allí). Aquí hay algunos:

Y ligeramente similar, de DBA.SE:

Además, Wikipedia tiene una tabla que compara varios paquetes de software para la función de "ingeniería inversa":

Intentó

Estas son las cosas que he probado de pasada:

  • Visio 2003 (esto es lo que solía usar). No es gratis, está desactualizado, pero por lo demás cumple con los requisitos para la mayoría de los puntos. Aunque ya no es una opción.

  • Visio 2010 y 2013 (esto es lo que tengo actualmente). Ya no se admite la ingeniería inversa. Sin embargo, he considerado escribir un complemento o usar VBA para piratear cosas. No estoy seguro de lo difícil que sería. No es gratis (excepto que supongo que personalmente ya lo tengo), pero cumple con los requisitos en muchos otros puntos.

  • Graphviz . Intenté esto hace bastante tiempo, por lo que recuerdo, tenía una curva de aprendizaje un poco pronunciada y no pude determinar manualmente el diseño final.

  • diagramas SSMS . Esto funciona para casos pequeños, pero puede ser engorroso para casos más grandes.

  • Modelo de datos de entidad de Visual Studio 2012 ADO.NET. El diseño manual de los conectores es limitado, la tematización no existe en absoluto, realmente tiene un objetivo que no es la documentación y se muestra (por ejemplo, de forma predeterminada obtiene "Propiedades de navegación", etc.), y no funciona bien para 100+ mesas. Esto puede ser útil para escenarios más pequeños, pero no se ajusta a mí.

Y creo que pude haber probado algunas sugerencias de los subprocesos de SO, aunque realmente no puedo recordar los detalles.

Entonces: ¿qué recomendarías?

Respuestas (8)

Aquí hay una recomendación que terminé usando (después de mucha más investigación y probando muchas opciones diferentes):

Use Visio simple para esto.

Este es el por qué.

Explicación de este enfoque:

No existe una herramienta que satisfaga convenientemente todos los requisitos mencionados, ni siquiera una que cumpla únicamente con los requisitos principales. Visual Studio 2012 se acerca, pero carece de compatibilidad con temas y no funcionó muy bien para una gran cantidad de tablas.

El siguiente proceso funcionó para mí:

  1. Cree una plantilla de Visio Flowchart 1 en blanco . Elige un diseño que te guste. Establezca los tamaños de página e impresión que desee (elegí el formato A3 horizontal y el tema "Lineal").

  2. Abra una consulta 2 en SSMS al costado para obtener los detalles que necesitará más adelante: tablas, nombres de columnas e IS NULLinformación.

  3. Comience a agregar las tablas una por una. Elija manualmente qué tablas y columnas desea incluir.

Este es un ejemplo de cómo se ve el resultado final:

ejemplo ampliado

O una captura de pantalla alejada de todo el modelo (debido a que era trabajo manual, elegí incluir una cantidad significativamente menor que las más de 100 tablas):

ejemplo de alejamiento

El procedimiento que usé para hacer que las "tablas" se vean como lo hacen:

  • Los encabezados están en negrita y con un tamaño de fuente más grande.
  • Los separadores no son líneas sino una serie de guiones en negrita uno tras otro.
  • Cuatro "secciones": TableName, Primary Key, Foreign Keys, columnas simples.
  • Negrita para NOT NULLcolumnas.
  • Blanco para TableName y separadores, negro para nombres de columnas.

Además, elegí claves foráneas para:

  • Nunca permita que se crucen los conectores y, en su lugar, cree pequeños bloques de "referencia" que se refieran a una tabla que está en algún lugar del otro lado del modelo.
  • No incluir todas las tablas (es decir, hay más claves foráneas que conectores).

Esperemos que lo anterior sea de utilidad para otros también.

Requisitos de la pregunta:

Como conclusión, recomiendo este enfoque, principalmente porque terminas con un modelo visualmente atractivo y un alto grado de control. Sin embargo, este enfoque no se ajusta a todos los requisitos. Así es como cumple con los requisitos:

Conectividad de datos:

  • Bases de datos de SQL Server 2012
  • Tablas de ingeniería inversa con todas las columnas e indicaciones de clave principal/foránea
  • Claves foráneas de ingeniería inversa como conectores entre tablas

± Todo esto es posible pero no automatizado. Así que "más o menos".

Control y visuales:

  • Diseño manual, tematización básica, capaz de elegir qué elementos mostrar
  • Capaz de manejar modelos complejos, por ejemplo, más de 100 tablas

Sí, todo esto funciona muy bien con Visio simple.

Dineros:

  • Al menos una prueba gratuita disponible

AFAIK hay una versión de prueba gratuita de Office disponible. Sin embargo, no he investigado esto porque tengo Visio.

Otro:

  • Exportación a varios formatos
  • WYSIWYG;

Sí, está disponible en Visio.

Puntos extra:

Tiene aproximadamente la mitad de los puntos de bonificación:

  • se ejecuta en Windows 8
  • SQL 2008 también es compatible
  • bonita
  • curva de aprendizaje amigable

1. También probé la plantilla y las formas UML, pero esto tiene un comportamiento exasperante para el enrutamiento del conector . ¡No recomendado!

2. Esta fue mi consulta:

  SELECT  t.name TableName,
          c.name ColumnName,
          CASE WHEN c.is_nullable = 1 THEN '' ELSE 'BOLD' END AS IsNotNullable
  FROM    sys.tables AS t
          JOIN sys.columns AS c ON t.object_id = c.object_id
  WHERE   c.name NOT IN ('Excluded1', 'Excluded2')
  ORDER BY t.name,
          CASE WHEN c.name = t.name + 'Id' THEN 0
               WHEN c.name LIKE '%Id' THEN 1
               ELSE 2
          END,
          c.column_id
¿Cómo hizo para "agregar" las tablas de las consultas en SSMS? ¿Visio tiene una forma de aceptar una consulta? ¿Estás diciendo que acabas de crear el diagrama manualmente?
@webworm Sí, mi deseo de tener mucho control y un resultado visualmente atractivo me llevó a recurrir al trabajo manual, debo admitirlo (un poco vergonzosamente). La versión completa (de la imagen en miniatura) me llevó unas 3 horas de trabajo, en total. Mantenerlo actualizado es de aproximadamente 10 minutos por sprint de 4 semanas. El mayor inconveniente no es la mano de obra, sino la posibilidad de un error humano (léase: errores de copiar/pegar). Hasta que a alguien se le ocurra una buena alternativa (¡muy bienvenida!), probablemente me quede con esta "solución".
No cumple Reverse engineer tablesrequisito. Si uno está listo para invertir manualmente, entonces PowerPoint funciona igual de bien.
@sixtytrees Por eso le di un ±resumen en mi resumen: "más o menos posible, aunque no automatizado". Además, creo que " Powerpoint funciona igual de bien " no se deriva trivialmente de la premisa...
PD. Sin embargo, tenga la seguridad de que no estaba contento de que Visio sea la opción menos mala.
De hecho, su sugerencia es una de las mejores. Sorprendentemente, no existe ninguna herramienta que pueda realizar ingeniería inversa de enlaces de forma fiable.

Logotipo de SQL Power Architect

Consulte SQL Power Architect . Puede conectarse prácticamente a una base de datos para la que puede configurar un conector JDBC, y puede realizar toda la ingeniería inversa que está buscando. Sin embargo, solo manejo tipos de datos básicos, por lo que debe convertir cosas como DATETIME a DATE cuando las importa.

Puede cambiar el "Color de la tabla", pero, en realidad, eso es realmente cambiar el color del nombre/encabezado de la tabla en lugar de cambiar el color de fondo de toda la tabla.

Captura de pantalla de SQL Power Architect: pantalla de apertura

Captura de pantalla de SQL Power Architect: diagrama entidad-relación

SchemaCrawler es una herramienta gratuita de descubrimiento de bases de datos de código abierto que puede aplicar ingeniería inversa a su base de datos existente.

Importante:

  • Bases de datos de SQL Server 2012: SchemaCrawler funciona con bases de datos de SQL Server 2012
  • Tablas de ingeniería inversa con todas las columnas e indicaciones de clave principal/foránea: SchemaCrawler creará diagramas con todas las columnas y claves externas
  • Claves foráneas de ingeniería inversa como conectores entre tablas SchemaCrawler creará diagramas con todas las columnas y claves foráneas
  • Diseño manual de cajas y conectores (quiero agrupar cosas visualmente): SchemaCrawler también puede generar salida GraphViz DOT, y puede usar otra herramienta para ajustar el diseño
  • Temas básicos: elija los colores de fondo para las tablas: SchemaCrawler también puede generar la salida GraphViz DOT, y puede usar otra herramienta para ajustar el diseño
  • Capaz de manejar modelos complejos, por ejemplo, más de 100 tablas: SchemaCrawler puede manejar una gran cantidad de tablas; incluso mejor, puede proporcionar criterios de búsqueda de expresiones regulares para crear múltiples diagramas, de subconjuntos de su esquema
  • Capaz de elegir qué elementos mostrar o no (por ejemplo, omitir ciertas tablas, etc.): SchemaCrawler le permite proporcionar criterios de búsqueda de expresiones regulares para crear múltiples diagramas, de subconjuntos de su esquema
  • Al menos una versión de prueba gratuita disponible - SchemaCrawler es de código abierto y gratuito
  • Exportar a varios formatos para fines de distribución e impresión, el más preferido es PDF, supongo que también sería PNG: SchemaCrawler es de código abierto y gratuito
  • WYSIWYG - SchemaCrawler es una línea de comandos

Principales puntos de bonificación:

  • Se ejecuta en Windows 8 (aunque instalaría una máquina virtual Linux para que el software cumpla con todos los requisitos importantes): SchemaCrawler es multiplataforma
  • Diseño automático y enrutamiento de conectores para minimizar la superposición: SchemaCrawler realiza diseños automáticos usando GraphViz detrás de escena
  • Capaz de usar SQL Server 2008 y 2008R2 - SchemaCrawler es compatible con todas las versiones de SQL Server
  • Capaz de aplicar ingeniería inversa a las vistas: SQL Server puede aplicar ingeniería inversa a las vistas
  • Gratis (o una versión gratuita): SchemaCrawler es de código abierto y gratuito
  • Actualización incremental, por ejemplo, ingeniería inversa nuevamente y agregar/eliminar tablas, etc., manteniendo el tema, el diseño existente, etc. - Guarde el comando de línea de comandos de SchemaCrawler y vuelva a ejecutar
  • Bonitos diagramas (aspecto moderno, suavizado, elección de fuentes, colores, degradados, sombras paralelas, temas, etc.): algunos ejemplos del sitio web de SchemaCrawler
  • Curva de aprendizaje amigable (puedo manejar muchas funciones complejas siempre que sea fácil hacer lo básico rápidamente) _ Depende de usted :-)

DEBE TENER:

  • ¡El instalador no instala en secreto barras de herramientas en mi navegador ni cambia mi página de inicio! ;-) - SchemaCrawler no tiene instalador - descomprimir y ejecutar

Sualeh Fatehi, rastreador de esquemas

Gracias por su respuesta, y es genial saber que ha abierto su solución. Desafortunadamente, ya no estoy en posición de juzgar si esta respuesta hubiera funcionado en ese entonces. - PD. Sería fácil cambiar su firma (que generalmente no se necesita en Stack Exchange como la parte inferior derecha de su nombre) en una divulgación explícita .
¿Lo recomendarías? ¿Cómo se compara con los requisitos de mi pregunta?
No conseguí que se instalara correctamente. Pero lo probé en el trabajo: las cosas siempre son diferentes en el trabajo. Lo actualizaré después de tomarme el tiempo para trabajar con los administradores del sistema. Si el OP estaba contento con Visio 2010, debería estar contento con esto. Parece que es lo mismo.
Soy el OP :-) . Visio 2010 estaba bien para su época, aunque más de 7 años después esperaría algo mejor. La razón por la que publiqué el comentario anterior es porque una respuesta vale mucho más para mí y para otros si reduce los requisitos y explica cómo se compara con ellos.

Solo tenía los mismos requisitos que la pregunta original, pero Visio ya tenía una ventaja para nuestra elección, ya que los diagramas ERD se generaron una vez mediante ingeniería inversa en 2007.

Dado que ya tenemos la suscripción a Office 365, se le agregó Visio Pro, lo que me dio Visio 16 (lanzado a fines de 2015). Luego, instalamos el complemento Modelado de base de datos para Visio para aplicar ingeniería inversa a nuestra base de datos.

Usé el complemento para conectarme a una base de datos de SQL Server (2019) usando el controlador ODBC (pero tiene más opciones para seleccionar el controlador y el servidor como Oracle o SQL Server Native, etc.),

  • Importó el esquema,
  • Bases de datos de SQL Server 2012: (probado con SQL Server 2019)
  • Tablas de ingeniería inversa con todas las columnas e indicaciones de clave principal/foránea -
  • Claves foráneas de ingeniería inversa como conectores entre tablas - , incluidas fuertes y débiles
  • Diseño manual de cajas y conectores (quiero agrupar cosas visualmente) -
  • Tematización básica: elija colores de fondo para las tablas -
  • Capaz de manejar modelos complejos, por ejemplo, más de 100 tablas: , da una advertencia, pero aún así las importa y las presenta correctamente.
  • Capaz de elegir qué elementos mostrar o no (por ejemplo, omitir ciertas tablas, etc.) -
  • Al menos una prueba gratuita disponible - No
  • Exportar a varios formatos para fines de distribución e impresión, el más preferido es PDF, supongo que también sería PNG -
  • WYSIWYG -

PD : si tuviera que empezar, sin ninguna ventaja/preferencia por Visio como se mencionó anteriormente, probablemente elegiría dbdiagram.io

Tu lista de requisitos está completamente cubierta por Lucidchart . Bueno, no es gratis, pero tiene una prueba gratuita.

Con Lucidchart, ejecuta una consulta que ellos especifican y luego importa los resultados de la consulta. Esto crea una colección de tablas que puede colocar en un diagrama como formas de plantilla. Lucidchart dibuja las conexiones entre las claves de las tablas que ha elegido. Puede reorganizar las tablas y conexiones, eliminar campos, cambiar colores y fuentes, etc. Por lo que puedo decir, ahorraría el 90 % del tiempo requerido para dibujar a mano en las versiones más nuevas de Visio, y obtendrá la mayor parte del flexibilidad en el formato. Y no te preocupes por los errores tipográficos. La desventaja es que esta no es una conexión en vivo a su base de datos, por lo que para actualizar necesitará hacer un trabajo manual.

Puede exportar a varios formatos gráficos (PNG, PDF, JPG) y a Visio (VDX).

Considere SQL Server Management Studio (SSMS).

Vaya a Base de datos -> Diagramas de base de datos -> Haga clic con el botón derecho -> Agregar nuevo diagrama -> Agregue las tablas deseadas para su ERD.

Pros:
Viene con SSMS, puede extraer y mostrar bien los nombres de las columnas.
Contras:
Pierde las teclas vinculadas.

Tenga en cuenta que ninguna de las herramientas gratuitas o probadas enumeradas anteriormente recogió claves vinculadas para mi base de datos.

Try 
Apex SQL Model
Free: 
https://www.apexsql.com/sql-tools-model.aspx

with: 

Forward and reverse engineer
Customize the appearance of models
Create new or modify existing object groups
Navigate through model history
Export database models as images
Customize print output