---
title: "使用 DatabaseSpy 探索一个陌生的数据库"
date: "2017-07-12"
categories: 
  - "database"
  - "software"
  - "tools"
tags: 
  - "database-tool"
  - "databasespy"
description: 了解如何使用 Altova DatabaseSpy 帮助开发人员和数据专业人士，通过直观的可视化和编辑工具，轻松探索陌生的数据库。
---
Status: #blog

Tags:  #database-tool #databasespy

Categories: [database + sql](/blog/zh/category/database-sql.md) 
# 使用 DatabaseSpy 探索一个陌生的数据库

软件开发人员在开发新应用程序时，数据专业人士在各种企业中工作，甚至数据库管理员，经常会遇到不熟悉的数据库，并且需要一款[数据库工具](https://www.altova.com/zh/databasespy)，以便快速了解其中的表结构和关系。

Altova DatabaseSpy 是一款独特的、多数据库查询、设计和比较工具，它配备了图形化的数据库设计编辑器，能够帮助用户快速了解不熟悉的数据库，直观地查看表、关系，甚至可以查看数据库类型之间可能存在的独特的数据类型定义。

![](/blog/images/shutterstock_124714339.jpg)

<!--more-->

[DatabaseSpy](https://www.altova.com/zh/databasespy) 支持所有主流数据库：

- 火鸟
- IBM DB2®数据库系统
- Informix® (商标)
- Microsoft Access™ 数据库管理系统
- Microsoft® Azure SQL数据库服务
- Microsoft® SQL Server® 数据库系统
- MySQL®
- Oracle®
- PostgreSQL数据库系统
- Progress OpenEdge
- SQLite
- Sybase® (思贝)

Chinook是一个开源的示例数据库，适用于SQL Server、Oracle、MySQL、DB2、PostgreSQL、SQLite等多种数据库系统，它实现了针对数字媒体商店的数据模型。接下来，我们将使用DatabaseSpy来探索SQLite版本的Chinook数据库。

数据库侦察工具（DatabaseSpy）的连接向导可以快速连接到 SQLite 数据库，并将该数据库添加到新的 DatabaseSpy 项目中

![DatabaseSpy 的连接向导可以帮助您探索不熟悉的数据库](/blog/images/Connection-Wizard.png)

![数据库Spy 项目窗口](/blog/images/Project-Window.png)

一个 DatabaseSpy 项目可以包含对多个数据库的连接，甚至可以是不同类型的数据库。在线浏览器辅助窗口允许我们立即查看表列表并生成行数统计

![使用 DatabaseSpy 在线浏览器探索一个不熟悉的数据库](/blog/images/Online-Browser.png)

对于更复杂的数据库，在线浏览器还会显示多个数据库模式、视图、存储过程、函数等。例如，在SQL Server AdventureWorks示例数据库的视图中，您可以看到这些内容

![在线浏览器查看 AdventureWorks 数据库](/blog/images/AdventureWorks.png)

我们对数字音乐商店的数据库感兴趣，因为我们还拥有一个CSV文件，其中包含来自另一媒体文件库的元数据，我们希望将这些数据添加到数据库中。该CSV文件包含以下字段：

![包含新数据的 CSV 文件，用于添加到数据库中](/blog/images/CSV-fields.png)

我们可以在在线浏览器窗口中，点击“曲目”表格旁边的加号按钮，或者更方便的方法是，在新的设计编辑器窗口中打开该表格

![使用 DatabaseSpy 设计编辑器探索一个不熟悉的数据库](/blog/images/design-1.png)

“跟踪”表格包含一些键，这些键引用了其他表格。通过右键单击，可以调出上下文菜单，从而添加被引用的表格，并展示它们之间的关系，从而构建一个更完整的视图，类似于实体关系图。

![使用设计编辑器探索一个不熟悉的数据库](/blog/images/design-2.png)

将此图表与 CSV 文件中的新字段进行对比，发现了一个问题。我们的数据中，对于每首歌曲，分别设置了“歌曲演唱者”和“专辑演唱者”两个字段。 这样做是为了适应一些类型的专辑，例如电影原声带等，这些专辑可能以“Various Artists”（各种艺术家）等泛泛的名称归属，但我们仍然希望记录每首歌曲的正确演唱者。

当前的“曲目”表格并未为每首曲目指定音乐人，而是引用“专辑ID”，而“专辑ID”又会引用“艺术家”表格，从而确定一张专辑的艺术家信息。

### 图形化编辑数据库表

没问题！我们可以在“跟踪”表格中，点击“单位价格”列下方显示的加号图标，以向表格添加新的列。DatabaseSpy 会添加该列，并为其设置默认值：

![在DatabaseSpy中，可以使用图形界面编辑现有的数据库表](/blog/images/design-3.png)

首先，我们可以重命名新的列，并为其指定数据类型。需要注意的是，DatabaseSpy 提供了方便的下拉列表，让我们能够为这个数据库选择任何有效的数据类型。用于存储歌曲演唱者的列通常很少使用，因为它只在我们需要覆盖专辑中的“艺术家ID”时才需要。我们可以简单地将其保留为文本类型，并设置一个长度限制，就像“作曲家”列一样。

![在 DatabaseSpy 中，为新列选择数据类型](/blog/images/design-4.png)

请注意，在上面的截图中的“TrackArtist”列名旁边有一个加号。DatabaseSpy 实际上并没有直接修改数据库，而是在我们编辑图表时，它会自动在一个单独的窗口中创建一个数据库修改脚本。

![DatabaseSpy 中的数据库变更脚本](/blog/images/change-script.png)

这允许用户在设计编辑器中进行多次修改，而无需担心风险。当所有修改完成后，我们可以选择直接执行脚本、在新SQL窗口中打开脚本进行编辑、将脚本保存到文件中，或者放弃所有修改并丢弃脚本。

我们将打开脚本，并在SQL编辑器窗口中添加一个限制，用于限制文本字段的长度，使其与“Composer”列的限制保持一致

![探索一个陌生的数据库，并使用SQL编辑器进行修改](/blog/images/script-edit.png)

我们可以从编辑器窗口执行脚本，然后重新加载数据库，以便在设计编辑器中查看更新后的内容。

![探索一个不熟悉的数据库并查看更改 ](/blog/images/new-table.png)

设计编辑器只是一个便捷、直观的功能，旨在帮助用户探索不熟悉的数据库。 [下载免费试用版](https://www.altova.com/zh/databasespy/download)，亲身体验DatabaseSpy如何简化数据库查询、可视化、管理、比较以及呈现查询结果。
