2008-09-22 20 views
9

He heredado recientemente el trabajo de mantener una base de datos que no se diseñó muy bien y los diseñadores no están disponibles para hacer preguntas. Y tengo un par más en camino en el futuro cercano.Esquema de la base de datos de descifrado

Ha sido difícil tratar de averiguar las relaciones entre las tablas sin ningún tipo de ayuda visual o diagrama de base de datos.

Me preguntaba qué herramientas se recomiendan para esto. Sé de Visio, pero esperaba que hubiera algunas buenas aplicaciones de código abierto/freeware. No necesito cambiar la base de datos. Solo léalo y cree algún tipo de ayuda visual para ayudarme a comprender cómo se presentan las cosas y tratar de descubrir qué pensaba el diseñador sobre cómo deberían relacionarse los datos.


Datos adicionales respuesta: SchemaSpy era el tipo de cosas que estaba buscando, pero no haber hecho mucho con la línea de comandos en mucho tiempo, he optado por utilizar SchemaSpyGUI. También tuve que acostumbrarme a algunas configuraciones, ya que no trabajo mucho con Java, pero el resultado final fue lo que estaba buscando (en el reemplazo de fuente abierta para los diagramas de ER de Visio).

+0

Qué base de datos está utilizando? –

+0

Ver también http://stackoverflow.com/questions/7031203/tools-for-discovering-de-facto-foreign-keys-in-databases~~V~~singular~~3rd – reinierpost

Respuesta

15

Trate SchemaSpy. Lo ejecuté contra una base de datos bastante compleja y quedé muy satisfecho con el resultado, con consejos sobre la optimización.

+0

¿Esto realmente responde la pregunta? Esta herramienta no parece inferir claves, que creo que es parte de la pregunta. – reinierpost

+0

@reinierpost no veo "clave" en la pregunta original, así que no estoy seguro de por qué usted piensa que ... :-) (En realidad, yo ni siquiera entiendo lo que quiere decir con "inferir teclas".) De todos modos, el interés en tener varias respuestas es proponer varias herramientas, para que pueda elegir lo mejor para su uso. – PhiLho

+1

Si una base de datos no fue diseñado muy bien (y en muchos otros casos), a menudo las claves externas o incluso claves primarias no han sido declaradas explícitamente. Por lo tanto, tratar de dar sentido a la base de datos requiere tratar de descubrir cuáles son las claves externas de facto (relaciones entre tablas). Una herramienta que diagramará un esquema de base de datos no hará eso, por lo que en tales casos solo producirá un vuelco de las tablas y no mostrará ninguna relación entre ellas. – reinierpost

1

¿Qué DBMS (sistema de gestión de base de datos) está utilizando? Muchos DBMS modernos como SQL Server y Access pueden crear un diagrama de E-R para usted.

Microsoft Visio es una herramienta excelente y puede realizar ingeniería inversa de SQL desde cualquier fuente de datos.

DDT (Database Design Tool) puede realizar ingeniería inversa desde SQL sin procesar en Windows y es muy liviano (descarga gratuita muy pequeña).

MySQL Workbench es una de las herramientas de MySQL más populares y tiene una versión descargable libremente.

SQLFairy puede hacer lo mismo con MySQL en Linux.

0

Uso de pgsql/win32 Encontré que la solución más fácil era escribir un script de Perl que utilizara Graph :: Easy de CPAN. Consulte la base de datos para relaciones de claves externas, haga un gráfico dirigido con tablas como nodos y relaciones FK como enlaces. Si esta es su configuración, puedo publicar el código.

1

Hay un poco de software de código abierto, pero la herramienta de Visio Professional para esquemas de bases de datos de ingeniería inversa es bastante buena porque desvincula el proceso de ingeniería inversa y diagramación. Uso mucho esto porque suele estar disponible en la mayoría de los sitios.

Una buena característica de visio es que puede realizar ingeniería inversa y luego construir sus propios diagramas a partir del esquema de ingeniería inversa. Hacer esto es una muy buena forma de explorar el esquema y comprenderlo mientras hace este trabajo como parte de la construcción interactiva de un documento de referencia para el esquema. Utilicé esta técnica para realizar ingeniería inversa de todo, desde Activity Based Costing Systems hasta Insurance Underwriting Systems, generalmente sin mucha ayuda del proveedor. Jugar con los diagramas de Visio es bastante relajante.

Entre esto y una pequeña prueba de hipótesis sobre relaciones FK (si el FK no está presente físicamente en la tabla) puede dar sentido a esquemas bastante complejos. He descubierto que este enfoque de diagramación hace de Visio un líder de cabeza y hombros porque puede interactuar fácilmente con el modelo de ingeniería inversa de una manera bastante conveniente.Puede completar las claves externas faltantes, crear diagramas de áreas temáticas y agregar anotaciones en los diagramas. La interactividad de este proceso lo convierte en una buena herramienta de aprendizaje.

Esta es una visión un tanto subjetiva, pero la interactividad funciona muy bien como un proceso de aprendizaje para mí y es, con mucho, mi enfoque preferido. La mayoría de los sitios no le envidiarán las £ 300 o más por una licencia, si es que todavía no la tienen disponible. El único sitio donde trabajé donde tuvieron que ingresarlo fue porque tenían Visio Standard en lugar de Pro. Pregunté amablemente y el PHB lo firmó.

0

Me gusta probar y ver si las aplicaciones que usan la base de datos tienen formas de registrar el SQL que usan (o el backend DB en sí mismo, pero que tiende a ser menos tratable). Entender qué solicitudes se realizan en la base de datos lo ayuda a concentrarse en las tablas importantes.

Como con la mayoría de las cosas, la regla del 80/20 se aplica aquí: el 20% de las tablas harán el 80% de las cosas interesantes. Una vez que los ha descubierto, rara vez es necesario un diagrama.

+0

¿En serio? 20% de 40 tablas es manejable. 20% de 2000 tablas, no tanto –

+0

Sí realmente. Tengo un par de sistemas con más de 1200 tablas. En uno, solo necesitas saber cómo se interrelacionan aproximadamente 12. En el otro, aproximadamente 25. Un diagrama del esquema completo es inútil, pero un mapa de estas tablas "centrales" es suficiente para entender el sistema a un nivel razonable. – dland

+1

bien ... 20% de 1200 = 240. 25 está más cerca de un 2% por lo que está probando mi punto. –

2

Pruebe DBVis - descargue al http://www.minq.se/products/dbvis/ - hay una versión pro (no es necesaria) y una versión abierta que debería ser suficiente.

Todo lo que tiene que hacer es obtener el JDBC correcto - controlador de base de datos, la herramienta muestra tablas y referencias ortogonales, hirarchical, en un círculo ;-) etc. simplemente presionando un solo botón. ¡Disfrutar!

1

dbdesc no es gratis, pero he escuchado muy buenas cosas al respecto. Funciona con varias de las principales bases de datos que existen.

He tenido la suerte de que todavía no he tenido que descifrar los esquemas de bases de datos de otras personas. He usado un conjunto de plantillas que vienen con CodeSmith.

0

Mira las relationshsips clave externa clave principal que se han establecido como un punto de partida.

Dado que una base de datos sin diagramas existentes puede no tener relaciones establecidas formalmente, miro las estructuras y nombres de la tabla y hago mis mejores suposiciones sobre qué podría relacionarse con qué, luego exploro las estructuras para ver si hay son claves externas obvias (pero indefinidas). Miro los procesos almacenados para tener una idea de cómo se unen las tablas y qué campos se están consultando.

Mientras que las herramientas automatizadas para averiguar la base de datos pueden ser spiffy, me parece que cuando realmente me gusta en los detalles de la base de datos mí mismo, termino con una comprensión mucho mejor de lo que puedo obtener de cualquier imagen creada de forma automática.

1

En primer lugar, puedo decir que me siento su dolor!
Aquí hay un par de mis consejos:

  1. En general, una herramienta sólo será útil si los diseñadores han definido correctamente todas las claves primarias y externas, así que tenga en cuenta que una herramienta puede no recoger toda la relaciones importantes.
  2. Lo más útil es ver qué consultas están siendo realizada por el código de cliente. Esto le indicará no solo qué relaciones existen, sino qué tablas y relaciones son las más utilizadas, ahí es donde deseará concentrar su esfuerzo.
+0

algunas herramientas pueden inferir relación si los nombres son consistentes. –

+0

Gracias, @Stephanie. Eso es útil para saber ¿Puedes nombrar algunos? –

+0

PowerDesigner puede hacer eso. Es lo que uso No es barato, pero hay una versión completa de 15 días, bombardeada por el tiempo. –

0

que tienen bastante buena experiencia con Aqua Data Studio para la ingeniería inversa de un esquema de base de datos. Es muy rico en funciones y es compatible con bases de datos aún más exóticas como Informix o Sybase.

0

Esto me ayudó con la generación de los diagramas ER en MS SQL Server 2012:

MS SQL Server Management Studio> menú Archivo> "Conectar Explorador de objetos" Elija su nodo de base de datos y expandirla. bajo este nodo encontrará una sub-nodo llamado "Diagramas de base de datos" clic en el botón derecho en "Diagramas de base de datos"> "Nueva base de datos Diagrama"> Añadir tablas que desea ver sus columnas, relaciones, ...

0

Use Visio. Si utiliza Vision 2010, deberá usar el proveedor genérico OLEDB para SQL Server para asegurarse de que no haya problemas al conectarse al Visio Driver.

+0

Esto no funcionará. Visio no invoca relaciones entre tablas. – reinierpost

Cuestiones relacionadas