我有一个MySQL数据库是别人创建的,但我没有任何关于这个数据库的文档。
我该怎么知道表之间的关系呢?
是否有查询或者过程可以生成报告,以便更容易地找到这些关系呢?
我可以查看模式信息并手动解决它,但如果能生成一个关系报告就太好了。
我有一个MySQL数据库是别人创建的,但我没有任何关于这个数据库的文档。
我该怎么知道表之间的关系呢?
是否有查询或者过程可以生成报告,以便更容易地找到这些关系呢?
我可以查看模式信息并手动解决它,但如果能生成一个关系报告就太好了。
您可以通过以下步骤在MySQL Workbench中获得概览:
从编程的角度来看,更好的方法是按照以下方式从 INFORMATION_SCHEMA.KEY_COLUMN_USAGE
表中收集数据:
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
另外一个是
select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS;
你是否拥有使用数据库的SELECTs
?这可能是关系的最佳来源。这些查询语句
information_scheme.KEY_COLUMN_USAGE
表,如建议所述,使用KEY_COLUMN_USAGE视图可以快速列出外键引用(FKs)。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;
如果您正在使用phpmyadmin: