如何了解表之间的关系

29 浏览
0 Comments

如何了解表之间的关系

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

我如何知道表之间的关系?

是否有任何查询或过程可以生成一份报告,以便更容易找到这些关系?

我可以查看模式信息并手动弄清楚,但如果我能够生成一份关系报告会更好。

0
0 Comments

如何知道表之间的关系

在 MySql Workbench 中,你可以通过以下步骤获得一个概览:

1. 进入 "Database" 菜单选项。

2. 选择 "Reverse Engineer" 选项。

3. 一个向导将被打开,并生成一个显示出来的 EER 图表。

这个问题的出现的原因是:在数据库中,表与表之间的关系对于数据库的设计和查询非常重要。在某些情况下,我们需要了解表之间的关系,以便更好地理解数据的结构和进行有效的查询。然而,数据库中的关系并不总是直观可见的,我们需要一种方法来快速而准确地了解表之间的关系。

解决这个问题的方法是使用 MySql Workbench 的 "Reverse Engineer" 功能。通过这个功能,我们可以从数据库中自动生成一个 EER 图表,该图表显示了表之间的关系。这样,我们就可以直观地了解表之间的关系,从而更好地进行数据库设计和查询。

下面是使用 MySql Workbench 的 "Reverse Engineer" 功能来获得表之间关系的步骤:

1. 打开 MySql Workbench 并进入 "Database" 菜单选项。

2. 在菜单中选择 "Reverse Engineer" 选项。

3. 一个向导将被打开,该向导将引导我们完成生成 EER 图表的过程。

4. 在向导中,我们需要选择要生成 EER 图表的数据库连接。选择正确的连接并继续。

5. 接下来,我们可以选择要包含在 EER 图表中的表。我们可以选择所有表或只选择特定的表。

6. 在向导的后续步骤中,我们可以进一步自定义 EER 图表的设置,例如选择要显示的列和外键等。

7. 最后,单击 "Finish" 完成向导,并生成 EER 图表。

通过以上步骤,我们就可以在 MySql Workbench 中生成一个 EER 图表,该图表显示了表之间的关系。这个图表可以帮助我们更好地理解数据库的结构,并为我们提供进行数据库设计和查询的基础。

总结起来,通过使用 MySql Workbench 的 "Reverse Engineer" 功能,我们可以快速而准确地了解表之间的关系。这个功能为我们提供了一个可视化的方式来理解数据库的结构,从而更好地进行数据库设计和查询。

0
0 Comments

如何了解表之间的关系?

有时候,在数据库中了解表与表之间的关系是非常困难的。但是,有一个工具叫做SchemaSpy,可以帮助我们解决这个问题。SchemaSpy是一个基于Java的工具,它可以分析数据库中的模式元数据,并在浏览器中生成可视化的表示形式。

要使用SchemaSpy,首先需要安装Java 5或更高版本。然后,可以从http://schemaspy.sourceforge.net/下载SchemaSpy。SchemaSpy还提供了一个演示版本,可以从http://schemaspy.sourceforge.net/sample/查看。

下面是一个来自演示版本的HTML页面的屏幕截图:

![Screenshot of the HTML page of the sample output from http://schemaspy.sourceforge.net/sample/](https://i.stack.imgur.com/Zgvxh.png)

除了命令行界面,SchemaSpy还提供了一个GUI界面,可以从http://schemaspygui.sourceforge.net/下载。

我个人认为,这两个工具都非常轻量级和易于使用。在我遇到需要了解数据库模式概况以及深入了解一些细节的情况下,我多次使用了它们。你还可以查看"Anomalies"报告,以获取更多的信息。

更新:

请注意,最新版本的SchemaSpy将于http://schemaspy.org发布。

0
0 Comments

如何知道表之间的关系

在编程方面,更好的方法是通过以下方式从INFORMATION_SCHEMA.KEY_COLUMN_USAGE表中收集数据:

SELECT 
  `TABLE_SCHEMA`,                          -- 外键模式
  `TABLE_NAME`,                            -- 外键表
  `COLUMN_NAME`,                           -- 外键列
  `REFERENCED_TABLE_SCHEMA`,               -- 原始键模式
  `REFERENCED_TABLE_NAME`,                 -- 原始键表
  `REFERENCED_COLUMN_NAME`                 -- 原始键列
FROM
  `INFORMATION_SCHEMA`.`KEY_COLUMN_USAGE`  -- 如果用户没有权限将失败
WHERE
  `TABLE_SCHEMA` = SCHEMA()                -- 检测当前使用的模式
  AND `REFERENCED_TABLE_NAME` IS NOT NULL; -- 只有具有外键的表

另一个方法是

select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS;

我正在使用的是xamp,如果我在那里编写相同的查询,它能工作吗?

Maiya,我还没有在xamp上工作过。你可以在xamp上尝试一下。谢谢。

0