# データベースとデータウェアハウス

> データベースやデータウェアハウスを接続して、普段の言葉で質問できます。Dvinaは読み取りのみを行い、すべてのクエリを実行前にチェックします。

データベースやデータウェアハウスを接続し、同僚に尋ねるように質問してください。Dvinaが適切なテーブルを見つけ、クエリを作成して回答を表示します。

## Dvinaでできること

- **普段の言葉で質問する。** 「前四半期にリピート顧客が減った地域は？」と質問すると、Dvinaがテーブルを見つけ、クエリを作成して回答を表示します。多くの場合、グラフとその下にテーブルが表示されます。
- **テーブルの関係を把握する。** Dvinaがテーブル同士のつながりを把握するので、結合を指定する必要はありません。
- **見やすい形式で表示する。** 回答の表示形式を変更できます：**テーブル**、**折れ線グラフ**、**面グラフ**、**棒グラフ**、**横棒グラフ**、**円グラフ**、**ドーナツグラフ**、**レーダーチャート**、**鶏頭図**。
- **回答を保存する。** どの回答もインサイトとして保存し、必要なときにいつでも開けます。

PostgreSQL、MySQL、SQL Server、Snowflake、BigQuery、Redshift、Databricksなど、20種類のデータベースとデータウェアハウスを接続できます。

メッセージでデータベースを使うには、メッセージ欄に<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がテーブル間のつながりを検索したかどうかが表示されます。検索を開始するには、**リレーションシップを検索**または**再検索**を選択します。
- **ダイアグラム：** 各テーブルがカードとして表示され、列と、上部にキーが示されます。テーブル間のリレーションシップは線で表示されます。線にポインタを合わせると、その線が結ぶ2つの列が強調表示されます。テーブルを開くには、そのテーブルを選択します。

テーブルや列を探すには、**テーブルまたは列を検索**を使います。ダイアグラムを全画面で表示するには、**拡大**を選択します。

ダイアグラムでは、**PK**は主キー、**FK**は外部キーを示します。実線は、データベースで定義されているリレーションシップ、または確認済みでクエリに使用されるリレーションシップです。破線は**候補**を示します。これは、Dvinaがデータ内で見つけた、まだ使用されていないリレーションシップです。

### Dvinaが見つけたリレーションシップを確認する

1. ダイアグラムで破線を選択します。
2. その線が結ぶ2つの列を確認します。
3. クエリで使用するには**確認**を、誤っている場合は**却下**を選択します。却下したリレーションシップは、再び候補として表示されません。

### 大規模なデータベース

- リレーションシップの検索では、各テーブルの行数を数えるため、時間がかかる場合があります。テーブルが100個を超えるデータベースでは、**テーブル間のリレーションシップを検索**をオンにしていても、Dvinaは自動で検索しません。準備ができたら、**リレーションシップを検索**を選択します。
- テーブルが40個を超えるデータベースでは、ダイアグラムに1つのテーブルと、それに隣接するテーブルが表示されます。別のテーブルを中心に表示するには、検索を使います。

## インサイトを保存・更新する

インサイトには質問への回答が保存されるので、最新のデータで再び開くことができます。

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)
