我在MySQL中创建了一个由某人创建的数据库。我没有任何数据库文档。
我怎么知道表之间的关系?
是否有任何查询或程序来生成报告,以便轻松找到关系?
我可以查看架构信息并手动弄清楚,但如果我能够生成关系报告,那就太棒了。
答案 0 :(得分:17)
您可以通过以下步骤在MySql Workbench中获得概述:
答案 1 :(得分:11)
试用SchemaSpy(http://schemaspy.sourceforge.net/):
SchemaSpy是一个基于Java的工具(需要Java 5或更高版本),它分析数据库中模式的元数据,并以浏览器可显示的格式生成它的可视化表示。
以下是http://schemaspy.sourceforge.net/sample/的示例输出的HTML页面的屏幕截图:
如果您不想使用命令行,还有一个很好的GUI: http://schemaspygui.sourceforge.net/
这两个工具都是开源的,在我看来非常轻巧,易于使用。当我遇到你所描述的情况时,我曾多次使用它们:要概述模式,甚至是深入了解一些细节。 (看看“异常”报告。)
答案 2 :(得分:10)
从编程方面讲,更好的方法是从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;
答案 3 :(得分:5)
您是否拥有使用数据库的SELECTs
? 那可能是关系的最佳来源。
答案 4 :(得分:5)
如果你只是安装mysql workbench,可能还有一个更有价值的选择。(refers to) 并尝试“从数据库创建EER模型”。您肯定能够看到表之间的关系。
答案 5 :(得分:4)
您可以查看information_scheme.KEY_COLUMN_USAGE
table
建议使用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;
答案 6 :(得分:3)
如果您使用的是phpmyadmin:
答案 7 :(得分:0)
最好使用Mysql工作台。有一个生成ER图的选项。如果您使用phpmyadmin选择任何表。有结构选项卡,您可以从中看到表结构。希望这会有所帮助。