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.
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:
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:
¿Buena herramienta para visualizar el esquema de la base de datos? [cerrado] (MySQL, 91 votos a favor)
¿Alguien sabe de una herramienta de ingeniería inversa de esquema de base de datos gratuita y decente? [cerrado] (MySQL, 6 votos a favor)
Genere un diagrama ER mediante ingeniería inversa de una base de datos (todos los DBM, 10 votos a favor)
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":
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?
Aquí hay una recomendación que terminé usando (después de mucha más investigación y probando muchas opciones diferentes):
Este es el por qué.
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í:
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").
Abra una consulta 2 en SSMS al costado para obtener los detalles que necesitará más adelante: tablas, nombres de columnas e IS NULL
información.
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:
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):
El procedimiento que usé para hacer que las "tablas" se vean como lo hacen:
—
guiones en negrita uno tras otro.NOT NULL
columnas.Además, elegí claves foráneas para:
Esperemos que lo anterior sea de utilidad para otros también.
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:
± Todo esto es posible pero no automatizado. Así que "más o menos".
Control y visuales:
✓ Sí, todo esto funciona muy bien con Visio simple.
Dineros:
✓ AFAIK hay una versión de prueba gratuita de Office disponible. Sin embargo, no he investigado esto porque tengo Visio.
Otro:
✓ Sí, está disponible en Visio.
Puntos extra:
Tiene aproximadamente la mitad de los puntos de bonificación:
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
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.
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:
Principales puntos de bonificación:
DEBE TENER:
Sualeh Fatehi, rastreador de esquemas
Visio 2016 ahora tiene un complemento para la ingeniería inversa
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.),
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
gusano web
Jeroën
sesenta árboles
Reverse engineer tables
requisito. Si uno está listo para invertir manualmente, entonces PowerPoint funciona igual de bien.Jeroën
±
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...Jeroën
sesenta árboles