23

我在 MySQL 中有一个由某人创建的数据库。我没有任何关于数据库的文档。

我怎么知道表之间的关系?

是否有任何查询或程序来生成报告以便于查找关系?

我可以查看 Schema 信息并手动找出它,但是如果我可以生成关系报告那就太好了。

4

8 回答 8

20

您可以通过执行以下步骤在 MySql Workbench 中获得概述:

  1. 转到“数据库”菜单选项。
  2. 选择“逆向工程”选项。
  3. 将打开一个向导并生成一个 EER 图
于 2016-02-15T12:11:48.953 回答
16

从编程上讲,更好的方法是从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;
于 2016-02-15T12:12:00.437 回答
12

试试 SchemaSpy ( http://schemaspy.sourceforge.net/ ):

SchemaSpy 是一个基于 Java 的工具(需要 Java 5 或更高版本),它分析数据库中模式的元数据并以浏览器可显示的格式生成它的可视化表示。

这是来自http://schemaspy.sourceforge.net/sample/的示例输出的 HTML 页面的屏幕截图:

来自 http://schemaspy.sourceforge.net/sample/ 的示例输出的 HTML 页面的屏幕截图

如果您不想使用命令行,还有一个不错的 GUI:http: //schemaspygui.sourceforge.net/

这两种工具都是开源的,在我看来非常轻量级且易于使用。当我遇到您描述的情况时,我多次使用它们:获取架构的概述,甚至一些细节以深入了解。(看看“异常”报告。)


更新

请务必在http://schemaspy.org查看即将发布的 SchemaSpy 版本

于 2016-03-11T20:39:57.893 回答
5

一个更有价值的选择可能是如果您只安装 mysql workbench。(参考)并尝试“从数据库创建 EER 模型”。您肯定能够看到表之间的关系。

于 2016-03-11T12:06:50.977 回答
5

你有SELECTs使用数据库的吗? 可能是关系的最佳来源。

于 2016-03-06T22:11:56.730 回答
4

你可以看看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;
于 2016-02-15T12:09:58.847 回答
3

如果您使用的是 phpmyadmin,那么:

  1. 转到数据库。
  2. 选择表并转到其结构。
  3. 您会在表格结构的底部找到关系视图。
于 2016-03-11T07:13:58.473 回答
0

最好使用 Mysql 工作台。有一个用于生成 ER 图的选项。如果您使用的是 phpmyadmin,请选择任何表。有一个结构选项卡,您可以从中查看表结构。希望这会有所帮助。

于 2016-03-12T06:16:13.387 回答