# 数据库和数据仓库

> 连接数据库或数据仓库，用日常语言提问。Dvina 只读取数据，每次查询都会在运行前经过检查。

连接你的数据库或数据仓库，像向同事提问一样提出问题。Dvina 会找到合适的表、编写查询，并向你展示答案。

## Dvina 能做什么

- **用日常语言回答问题。** 你可以问“上个季度哪些地区流失了回头客？”，Dvina 会找到相关表、编写查询并展示答案，通常会附上图表，并在图表下方显示数据表。
- **梳理表之间的关系。** Dvina 会了解你的表之间如何关联，无需你指定联接。
- **按你喜欢的方式展示。** 你可以更改答案的展示方式：**表格**、**折线图**、**面积图**、**柱状图**、**条形图**、**饼图**、**环形图**、**雷达图**或**极区图**。
- **保存答案。** 将任意答案保存为洞察，随时再次打开。

你可以连接 20 种数据库和数据仓库，包括 PostgreSQL、MySQL、SQL Server、Snowflake、BigQuery、Redshift 和 Databricks。

要在消息中使用数据库，请在消息输入框中输入 <kbd>/</kbd>，然后选择该数据库。

## 权限

你连接的数据库和数据仓库在设计上均为只读。

- **仅限单次读取：** 每次查询运行前，都会检查它是否仅包含一次读取操作。你的数据会保持原样。
- **不修改数据：** 如果你要求 Dvina 修改或删除数据，它会告诉你它只能读取数据，也可以改为列出你所询问的数据。
- **使用你的账号权限：** Dvina 可以看到你用于连接的数据库账号有权读取的表。如果没有显示任何表，请联系数据库管理员，检查该账号的读取权限。
- **按人控制行和列：** 共享表时，访问规则可以让每个人只能看到部分行，并隐藏某些列。请参阅[控制每个人可以看到哪些行和列](/docs/connectors/row-and-column-access)。

> [!TIP]
> 请使用只能读取数据的数据库账号进行连接。Dvina 从不写入数据，而只读账号也能从数据库端确保这一点。

## 如何连接

1. 在你的资料库中打开**数据库**，然后选择**连接数据库**。你也可以在资料库中选择**添加上下文**，然后选择**数据库**。
2. 找到你的数据库或数据仓库。你可以按名称搜索。
3. 选择**连接**。
4. 输入**数据源名称**和连接详情，例如**主机**、**端口**、**数据库**、**用户名**和**密码**。某些数据仓库需要填写其他信息，例如账号、项目或服务账号文件。
5. 在**加密 (SSL)** 下，选择**验证**、**必需**或**关闭**。
6. 要让 Dvina 查找表之间的关联，请开启**查找表之间的关系**。对于大型数据库，这可能需要一些时间。
7. 选择**连接**。

Dvina 会检查连接并查找你的表。每张表都会显示何时**可以提问**，你可以在数据库页面上查看进度。

### 如果连接失败

Dvina 会说明出了什么问题。以下是最常见的解决方法：

- **数据库拒绝了凭据：** 检查用户名、密码和身份验证方式。
- **地址指向专用网络或内部网络：** 使用数据库的公共主机名或 IP 地址。
- **无法建立加密连接：** 如果数据库使用自签名证书，请选择**必需**，而不是**验证**。如果数据库不支持 SSL，请选择**关闭**。
- **无法访问数据库：** 检查数据库是否可用，以及网络访问、主机和端口设置。

要在之后更改这些详情，请打开数据库，选择**编辑连接**，然后选择**再次检查**。

## 查看表之间的关联

在你的资料库中打开**数据库**，打开所需的数据库，然后选择页面上的第一张卡片，即数据库卡片。**数据库架构**面板让你一目了然地了解数据库：

- **连接：**显示数据库的详细信息，例如**主机**、**端口**和**用户**，以及**状态**：**已连接**或**无法连接**，并显示上次检查的时间。选择**重新检查**可立即检查。
- **关系：**显示 Dvina 是否已搜索表之间的关联方式。选择**查找关系**或**重新搜索**可开始搜索。
- **关系图：**每张表显示为一张卡片，其中列出表的列，键位于顶部，表之间的每个关系都用一条连线表示。将指针悬停在连线上，可高亮显示它连接的两列。选择一张表即可打开它。

要查找表或列，请使用**查找表或列**。要全屏查看关系图，请选择**展开**。

在关系图中，**PK** 表示主键，**FK** 表示外键。实线表示数据库中声明的关系，或已确认并用于查询的关系。虚线表示**建议的关系**：这是 Dvina 在你的数据中发现、但尚未使用的关系。

### 检查 Dvina 找到的关系

1. 在关系图中，选择一条虚线。
2. 检查它连接的两列。
3. 选择**确认**，以便在查询中使用该关系；如果关系不正确，则选择**忽略**。被你忽略的关系不会再次被建议。

### 大型数据库

- 搜索关系时会统计各张表的行数，因此可能需要一些时间。对于超过 100 张表的数据库，即使你开启了**查找表之间的关系**，Dvina 也不会自动搜索。准备好后，选择**查找关系**。
- 当数据库超过 40 张表时，关系图会显示一张表及其相邻的表。通过搜索可切换到另一张表。

## 保存和刷新洞察

洞察会保存问题的答案，让你可以再次打开它，并使用最新数据查看结果。

1. 在答案卡片中，选择你想要的展示方式，例如**表格**或**条形图**。
2. 选择**保存**。Dvina 会显示**已保存为洞察**。在手机上，先选择**展开**，再在侧边面板中选择**保存**。
3. 要打开它，请选择**已保存**。你也可以在动态中找到它。

洞察会在侧边面板中打开。你可以在这里：

- **重命名：**点击顶部的名称，然后输入新名称。
- **更改视图：**选择其他展示方式或数据透视视图。新视图会随洞察一起保存。
- **刷新：**打开面板菜单，选择**刷新**，以最新数据重新运行。
- **下载：**打开面板菜单，选择**下载**。
- **删除：**打开面板菜单，选择**删除**。洞察会移到废纸篓，你可以在那里恢复它。

### 共享的洞察

共享洞察时，为每个人选择**可编辑**或**可查看**。

- **拥有编辑权限的人**也可以刷新洞察。
- **拥有查看权限的人**只能查看。他们可以在自己的屏幕上更改视图，但更改不会保存，并且会看到**仅编辑者可刷新**和**仅编辑者可重命名**。

如果某张表的访问规则限制了某个人能查看的内容，此人会从洞察中获得符合其权限的结果，并看到**受限视图**标记。请参阅[控制用户可查看的行和列](/docs/connectors/row-and-column-access)。

## 隐私

- 你连接的内容绝不会用于训练 AI 模型。
- 仅读取你的请求所需的内容。
- 卡号、电话号码等个人信息会在 AI 读取前被遮蔽。
- 你的数据在传输过程中会被加密。

## 断开连接

1. 在资料库中打开**数据库**，然后选择所需的数据库。
2. 打开该数据库的菜单，选择**断开连接**，然后再次选择**断开连接**以确认。

数据库及其表和基于这些表创建的洞察会移至废纸篓，你可以从那里恢复它们。数据库本身不会发生任何变化。

## 相关内容

- [连接器概览](/docs/connectors/overview)
- [行和列访问权限](/docs/connectors/row-and-column-access)
- [实时答案](/docs/use-dvina/features/live-answers)
- [首次聊天](/docs/use-dvina/get-started/first-chat)
