J'ai une base de données dans MySQL créée par quelqu'un. Je n'ai aucune documentation sur la base de données.
Comment puis-je connaître la relation entre les tables?
Existe-t-il une requête ou une procédure pour générer un rapport afin de trouver facilement les relations?
Je peux consulter les informations du schéma et les comprendre manuellement, mais ce serait bien si je pouvais générer un rapport de relation.
La meilleure façon, en termes de programmation, est de collecter des données à partir de INFORMATION_SCHEMA.KEY_COLUMN_USAGE
tableau comme suit:
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
et un autre est
select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS;
Vous pouvez obtenir un aperçu dans MySql Workbench en procédant comme suit:
Essayez SchemaSpy ( http://schemaspy.sourceforge.net/ ):
SchemaSpy est un outil basé sur Java (nécessite Java 5 ou supérieur) qui analyse les métadonnées d'un schéma dans une base de données et génère une représentation visuelle de celui-ci dans un format affichable par navigateur.
Voici une capture d'écran de la page HTML de l'exemple de sortie de http://schemaspy.sourceforge.net/sample/ :
Il y a aussi une belle interface graphique si vous ne souhaitez pas utiliser la ligne de commande: http://schemaspygui.sourceforge.net/
Les deux outils sont open source et à mon avis très légers et faciles à utiliser. Je les ai utilisées plusieurs fois lorsque j'étais dans des situations que vous avez décrites: Pour avoir un aperçu du schéma et même quelques détails pour approfondir. (Jetez un œil au rapport "Anomalies".)
N'oubliez pas de consulter la prochaine version de SchemaSpy à http://schemaspy.org
Une autre option peut être utile si vous installez simplement mysql workbench. ( se réfère à ) Et essayez "Créer des modèles EER à partir de la base de données". Vous pourrez sûrement voir les relations entre les tables.
Avez-vous le SELECTs
qui utilise la base de données? That peut être la meilleure source de relations.
Vous pouvez jeter un œil à information_scheme.KEY_COLUMN_USAGE
table
Comme il est suggéré, il existe un moyen rapide de répertorier vos FK (références de clé étrangère) à l'aide de la vue 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;
Si vous utilisez phpmyadmin, alors:
Mieux vaut utiliser Mysql workbench. Il existe une option pour générer un diagramme ER. Si vous utilisez phpmyadmin, sélectionnez n'importe quelle table. Il y a un onglet de structure d'où vous pouvez voir la structure du tableau. J'espère que cela vous aidera.