我有一个由某人创建的 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;
尝试 SchemaSpy (http://schemaspy.sourceforge.net/):
SchemaSpy 是一个基于 Java 的工具(需要 Java 5 或更高版本),它分析数据库中模式的元数据并以浏览器可显示的格式生成其可视化表示。
这是来自 http://schemaspy.sourceforge.net/sample/ 的示例输出的 HTML 页面的屏幕截图:
如果您不想使用命令行,还有一个不错的 GUI: http://schemaspygui.sourceforge.net/
这两个工具都是开源的,在我看来非常轻量且易于使用。当我遇到您所描述的情况时,我多次使用它们:为了获得架构的概述,甚至一些细节以进行更深入的研究。 (查看“异常”报告。)
请务必在 http://schemaspy.org
查看即将推出的 SchemaSpy 版本你有使用数据库的
SELECTs
吗? 那可能是关系的最佳来源。
一个更有价值的选择可能是如果你只安装 mysql workbench。(指) 并尝试“从数据库创建 EER 模型”。您一定能够看到表之间的关系。
information_scheme.KEY_COLUMN_USAGE
表
正如建议的那样,有一种使用 KEY_COLUMN_USAGE 视图快速列出 FK(外键引用)的方法:
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 那么:
最好使用Mysql工作台。有一个生成 ER 图的选项。如果您使用 phpmyadmin,请选择任意表。有结构选项卡,您可以在其中查看表结构。希望这会有所帮助。
在 phpMyAdmin (5.1.1) 中,必须选择“表格”,然后搜索“设计器”,您可以在其中看到数据库图。将架构导出为 PDF(在左侧的小图标中搜索)。 PDF 应该有一个关于所有表格及其关系的良好报告。