tablas relaciones relacionar relacion muchos modelo hacer generar entidad ejemplo diagrama crear como codigo cardinalidad mysql database-design wamp entity-relationship entity-relationship-model

mysql - relaciones - generar diagrama entidad relacion phpmyadmin



Cómo saber las relaciones entre tablas. (8)

¿Tienes los SELECTs que usan la base de datos? Esa puede ser la mejor fuente de las relaciones.

Tengo una base de datos en MySQL creada por alguien. No tengo ninguna documentación de la base de datos.

¿Cómo puedo saber la relación entre las tablas?

¿Hay alguna consulta o un procedimiento para generar un informe para que sea fácil encontrar las relaciones?

Puedo ver la información del esquema y resolverla manualmente, pero sería genial si pudiera generar un informe de relación.


Mejor utiliza el banco de trabajo Mysql. Hay una opción para generar diagrama ER. Si está utilizando phpmyadmin, seleccione cualquier tabla. Hay una pestaña de estructura desde donde se puede ver la estructura de la tabla. Con suerte, esto ayudará.


Pruebe SchemaSpy ( http://schemaspy.sourceforge.net/ ):

SchemaSpy es una herramienta basada en Java (requiere Java 5 o superior) que analiza los metadatos de un esquema en una base de datos y genera una representación visual de la misma en un formato visible para el navegador.

Aquí hay una captura de pantalla de la página HTML de la salida de muestra de http://schemaspy.sourceforge.net/sample/ :

También hay una interfaz gráfica de usuario agradable si no desea usar la línea de comandos: http://schemaspygui.sourceforge.net/

Ambas herramientas son de código abierto y, en mi opinión, muy ligeras y fáciles de usar. Los usé varias veces cuando estaba en las situaciones que describiste: Para obtener una descripción general del esquema e incluso algunos detalles para profundizar más. (Eche un vistazo al informe "Anomalías".)

Actualizar

Asegúrese de revisar la próxima versión de SchemaSpy en http://schemaspy.org


Puede echar un vistazo a information_scheme.KEY_COLUMN_USAGE tabla information_scheme.KEY_COLUMN_USAGE

Como se sugiere, hay una forma rápida de enumerar sus FK (referencias de clave externa) utilizando la vista KEY_COLUMN_USAGE:

SELECT CONCAT( table_name, ''.'', column_name, '' -> '', referenced_table_name, ''.'', referenced_column_name ) AS list_of_fks FROM information_schema.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_SCHEMA = (your schema name here) AND REFERENCED_TABLE_NAME is not null ORDER BY TABLE_NAME, COLUMN_NAME;


Puede obtener una visión general en MySql Workbench siguiendo estos pasos:

  1. Ir a la opción de menú "Base de datos".
  2. Seleccione la opción "Ingeniero inverso".
  3. Se abrirá un asistente y generará un diagrama EER que se muestra

Si está utilizando phpmyadmin entonces:

  1. Ir a la base de datos.
  2. Selecciona la tabla y ve a su estructura.
  3. Encontrará la vista de relación en la parte inferior de la estructura de su tabla.

Una opción más valiosa puede ser si solo instala el banco de trabajo mysql. ( Consulte ) e intente "Crear modelos EER a partir de la base de datos". Seguramente podrá ver las relaciones entre las tablas.


La mejor manera de hablar programáticamente es recopilar datos de la tabla INFORMATION_SCHEMA.KEY_COLUMN_USAGE siguiente manera:

SELECT `TABLE_SCHEMA`, -- Foreign key schema `TABLE_NAME`, -- Foreign key table `COLUMN_NAME`, -- Foreign key column `REFERENCED_TABLE_SCHEMA`, -- Origin key schema `REFERENCED_TABLE_NAME`, -- Origin key table `REFERENCED_COLUMN_NAME` -- Origin key column FROM `INFORMATION_SCHEMA`.`KEY_COLUMN_USAGE` -- Will fail if user don''t have privilege WHERE `TABLE_SCHEMA` = SCHEMA() -- Detect current schema in USE AND `REFERENCED_TABLE_NAME` IS NOT NULL; -- Only tables with foreign keys

y otro es

select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS;