如何知道表之间的关系

Nar*_*iya 20 mysql database-design entity-relationship wamp entity-relationship-model

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

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

是否有任何查询或程序来生成报告,以便很容易找到关系?

我可以查看Schema信息并手动找出它,但如果我能生成一个关系报告会很好.

Smi*_*ave 18

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

  1. 转到"数据库"菜单选项.
  2. 选择"逆向工程"选项.
  3. 将打开一个向导,并生成一个显示的EER图表


小智 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页面的屏幕截图:

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

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

这两个工具都是开源的,在我看来非常轻巧,易于使用.当我遇到你所描述的情况时,我曾多次使用它们:要概述模式,甚至是深入了解一些细节.(看看"异常"报告.)


更新

请务必在http://schemaspy.org上查看即将推出的SchemaSpy版本


Ric*_*mes 5

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


Web*_*san 5

一个更有价值的选择可能是你只需要安装mysql workbench.(参考)并尝试"从数据库创建EER模型".你肯定能够看到表之间的关系.