SPIRALver.1　DB攻略　その3(仮想DB・フィルタ型)

https://www.pi-pe.co.jp/regist/is?SMPFORM=man-lanerf-2473a633d82734eb22aa64cad426ae23&utm_source=pup-qiita&utm_medium=contentlink&utm_campaign=/SPIRAL_internship/items/6a04b2932135c7925bb7&utm_content=link-top&f000099824=https://qiita.com/SPIRAL_internship/items/6a04b2932135c7925bb7

---

## はじめに
前回予告した通り、今回からは仮想DBを使った実装を行っていきたいと思います。今回は仮想DBのフィルタ型です。例によって、以下参考にしたサポートサイトの記事です。

https://support.smp.ne.jp/manuals/view/

## シーン想定
これはサポートサイトの例がわかりやすいです。全国支社の社員のリストデータを持つマスタDBを基本として、支店ごと、例えば東京支店のみの社員のリストデータが欲しい場合にマスタDBから条件で抽出して東京支店用の仮想DBとすることができます。
マスタDBを抽出したものとして仮想DBを作ることで、データの一元化ができ管理しやすくなります。（マスタDBの東京支店のデータを変えれば東京支店用DBのデータも同じように変わり、東京支店用DBのデータを変えればマスタDBの東京支店のデータも同じように変わる→データをDBごとに変更しなくて良い）

---

▼実際に使うシステムはここから体験できます！

https://www.pi-pe.co.jp/regist/is?SMPFORM=man-lanerf-2473a633d82734eb22aa64cad426ae23&utm_source=pup-qiita&utm_medium=contentlink&utm_campaign=/SPIRAL_internship/items/6a04b2932135c7925bb7&utm_content=link-middle&f000099824=https://qiita.com/SPIRAL_internship/items/6a04b2932135c7925bb7

---

## 実装
### 全国支店の社員名簿DB(マスタDB)の作成
まずは、マスタDBとなる全国支店の社員名簿のDBを作成します。DB構成はテキストフィールドの社員名、マルチセレクトの支店名の二つのフィールドを持つものとします。

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4041448/642129fb-4326-4838-bda4-97833bde2d68.png)

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4041448/b2140409-5ad8-41a9-a1b7-a838e68f2b35.png)

### マルチセレクトタイプのフィールドの設定
先ほど使用したマルチセレクトタイプのフィールド「支店名」で東京支店、大阪支店、福岡支店をから選ぶことができるよう設定します。
DBのメニュー→フィールドを選択し、支店名を選択して支店名の詳細設定のページが開きます。ラベル設定で＋ボタンを押して東京支店、大阪支店、福岡支店を入力・追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4041448/616320bb-6347-4fe5-811a-5161b8896ccf.png)

### 東京支店の社員名簿DB(仮想DB)の作成
次に、東京支店の社員名簿のDBを作成します。DBの新規作成から仮想DB(フィルタ型)を選んで、フィルタ元DB、名前、タイトルを入力して新規作成します。
フィルタ元DBは先ほどマスタDBとして作成した全国支店の社員名簿のDBを選びます。また、この段階で抽出ルールを設定することもできますが、新規作成した後でもこの部分はいじれるので一旦設定せずに新規作成します。

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4041448/14bfb2f9-ddce-483d-a844-871edd89b0b7.png)

フィルタ元のフィールドのどれを使うかが選べますが、今回は全て使う設定で大丈夫です。左側のフィールドの>ボタンを押して右側に追加します。 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4041448/e3664003-80c8-4c57-b486-616047bfcc78.png)

### 抽出ルールの設定
一旦仮想DBが新規作成できたので、先ほど設定を行わなかった抽出ルールの設定を行います。仮想DBの基本設定画面を開き、フィルタ抽出ルールの変更ボタン→編集をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4041448/675d23f8-d332-4660-82ff-a21f5ed9e085.png)
 
抽出ルールの名前を入力し、どう抽出を行うかを設定します。今回はマルチセレクトタイプの「支店名」のフィールドが東京支店であるものを抽出したいので、画面下段にある「フィールド毎の抽出ルール設定」での設定を行います。条件設定方法は「通常（ANDのみ）」、フィールドは支店名を選び追加ボタンを押します。下側に支店名が追加されるので編集ボタンを押します。
 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4041448/10850380-aebd-40ed-9c48-984dc5f309ce.png)

名前、抽出条件、抽出方法、抽出条件を以下のように設定して新規作成ボタンを押します。

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4041448/5f36b0b4-1274-46fc-bc88-2d5a707fc724.png)

最後に、仮想DBの基本設定画面で、「フィルタ用抽出ルール」にこれまで設定してきた「東京支店＿抽出」を選んで保存します。

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4041448/1967bd6c-c71d-4fbb-9221-501571b8176c.png)

これでマスタDBの仮想DBの設定が一通り完了しました。

## 動作確認
全国支店の社員名簿のDBと東京支店の社員名簿のDBでデータの登録を行い、データが連動しているか、東京支店の社員名簿のDBで東京支店のみが抽出されているかを確認します。
全国支店のDBのメニュー→データ操作から、以下のようにデータの登録を行います。 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4041448/6b030200-dcf9-4c20-9000-7c559ba9f0c2.png)

次に、仮想DBの登録データを確認してみます。ちゃんと東京支店の人のデータのみが抽出されて登録されています。 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4041448/1aa0a104-050e-4561-aa72-6fd037641269.png)

一応仮想DBからのデータ操作がマスタDBに反映されるかもみてみます。
仮想DBのタナカのレコードを削除しました。 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4041448/fe0023d7-64ce-4404-b8f4-1bbd02a2bfd8.png)

マスタDBでもタナカ（東京支店）のレコードが削除されています。 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4041448/b3a5c591-d8ef-432b-a2ca-f0e586020b27.png)

## まとめ
今回は仮想DB（フィルタ型）の実装を行ってみました。なんといってもデータが一元管理できることが大きなメリットだと思います。今回は支店で抽出を行いましたが、設定次第でより複雑な抽出もできそうです。
次回はDB攻略その４として仮想DB(連携型)を取り扱ってみたいと思います。フィルタ型とはどんな違いがあるのか気になるところです。では次回もよろしくお願いします！

---
 
 
私がインターンしているスパイラル株式会社は、ローコードプラットフォーム、SPIRAL ver.1の**トライアルアカウント**を**無償提供**しています。このアカウントの記事でも紹介するように、たくさんの機能ございます。
 
▶︎ フォーム

▶︎ 認証エリア

▶︎ ログイン

▶︎ メール送信

▶︎ カスタムプログラム
 
などの作成できますので、ぜひ試してみてください!!
 
https://www.pi-pe.co.jp/regist/is?SMPFORM=man-lanerf-2473a633d82734eb22aa64cad426ae23&utm_source=pup-qiita&utm_medium=contentlink&utm_campaign=/SPIRAL_internship/items/6a04b2932135c7925bb7&utm_content=link-bottom&f000099824=https://qiita.com/SPIRAL_internship/items/6a04b2932135c7925bb7
 
そして、今チームでトライアル登録者向けに、オンボーディングコンテンツを作成しています。**SPIRAL ver.1**にご興味のある方、ぜひこちらもご覧ください👇
 
https://knowledge.spirers.jp/article/development/detail/11665