如何知道表之间的关系

时间:2016-02-15 12:00:48

标签: mysql database-design wamp entity-relationship entity-relationship-model

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

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

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

我可以查看架构信息并手动弄清楚,但如果我能够生成关系报告,那就太棒了。

8 个答案:

答案 0 :(得分:17)

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

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

答案 1 :(得分:11)

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

  

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

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

Screenshot of the HTML page of the sample output from http://schemaspy.sourceforge.net/sample/

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

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

更新

请务必在http://schemaspy.org

查看即将推出的SchemaSpy版本

答案 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:

  1. 转到数据库。
  2. 选择表并转到其结构。
  3. 您将在表格结构的底部找到关系视图。

答案 7 :(得分:0)

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