Nar*_*iya 20 mysql database-design entity-relationship wamp entity-relationship-model
我在MySQL中创建了一个由某人创建的数据库.我没有任何数据库文档.
我怎么知道表之间的关系?
是否有任何查询或程序来生成报告,以便很容易找到关系?
我可以查看Schema信息并手动找出它,但如果我能生成一个关系报告会很好.
小智 12
从编程方面讲,更好的方法是从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
Run Code Online (Sandbox Code Playgroud)
另一个是
select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS;
Run Code Online (Sandbox Code Playgroud)
Rig*_*ggs 12
试用SchemaSpy(http://schemaspy.sourceforge.net/):
SchemaSpy是一个基于Java的工具(需要Java 5或更高版本),它分析数据库中模式的元数据,并以浏览器可显示的格式生成它的可视化表示.
以下是来自http://schemaspy.sourceforge.net/sample/的示例输出的HTML页面的屏幕截图:
如果您不想使用命令行,还有一个很好的GUI:http: //schemaspygui.sourceforge.net/
这两个工具都是开源的,在我看来非常轻巧,易于使用.当我遇到你所描述的情况时,我曾多次使用它们:要概述模式,甚至是深入了解一些细节.(看看"异常"报告.)
请务必在http://schemaspy.org上查看即将推出的SchemaSpy版本