設計情報

投稿者:SPIRERS ナレッジ向上チーム 2022年5月27日 (金)

会員サイト アプリ(DB)設計・構築

Web申請アプリキャンペーン応募アプリでは、さまざまな用途のフォーム作成ができることを紹介してきましたが、
実はSPIRAL ver.2はフォームだけではなく、CMS(コンテンツ マネジメント システム)のように会員サイトの作成も可能です。
※ CMS(コンテンツ マネジメント システム)とはWeb制作に必要な専門的な知識がなくても、
  Webサイトやコンテンツを構築・管理・更新できるシステムのことです。


今回は「会員サイトアプリ」を通して、ローコードでのWebサイト作成をご紹介いたします。
この記事は アプリ(DB)設計・構築 のフェーズとなります。
関連記事はこちら
SPIRAL ver.2はプログラミング経験がなくても、オリジナルの業務アプリの制作・カスタマイズができるローコード開発プラットフォームです。
詳しくは SPIRAL ver.2 とはをご覧ください。

アプリ機能

SPIRAL ver.2はアプリを定義した後にDBやページ、フォームを設定することができます。
DB設定はアプリ機能にて行います。 詳しくは アプリ機能 をご覧ください。
今回はアプリ機能を使って「会員DB」「ドキュメントDB」「ナレッジDB」「お知らせDB」「企業DB」を作成します。

登場人物と業務フローの整理

サイト上で会員がどのようなことができるのか、サイト運営側がどのような業務を行うのかをまとめます。
サイトを使用する「会員」とサイト全体を管理する「サイト管理者」、それぞれが関連するドキュメントを投稿する「営業担当者」「SE担当者」「サポート担当者」を登場人物とした会員サイトアプリを想定しました。
登場人物(会員サイトアプリを使う人)
以下の業務を想定します。
業務フロー図

アプリ(DB)設計・構築

整理した登場人物と業務フローを元に、アプリを作成していきます。
アプリ全体像
※ サイト運営側操作画面(赤枠部分)については ユーザ・アプリロール・グループ設定記事をご覧ください。
DBについて
今回は以下5つのDBを作成します。詳しい作成手順は DB機能 をご覧ください。

▼会員DBフィールド一覧
会員情報を格納するDBです。
項目名 フィールドタイプ DB上で必須な属性
会員ID テキスト 入力制約:あり
ユニーク制約:あり
※ログインIDとなるので必ず設定します
パスワード パスワード 入力制限
 最小文字数:6
 最大文字数:32
 文字種:数字,英小文字,英大文字,記号
 文字種数制限:4種
メールアドレス メールアドレス なし
名前 テキスト
種別 セレクト
企業ID 参照フィールド 参照先DB:企業DB
参照レコード数:1レコード
ラベルフィールド:企業ID
▼ドキュメントDBフィールド一覧
ドキュメントファイルを格納するDBです。
項目名 フィールドタイプ DB上で必須な属性
ドキュメント名 テキスト インデックス:あり
※一覧の検索項目となるので必ず設定します
ドキュメント ファイル なし
説明 テキストエリア
種別 セレクト インデックス:あり
※一覧の検索項目となるので必ず設定します

セレクト項目
 1:営業関連
 2:SE関連
 3:サポート関連
【営業担当者】種別 セレクト セレクト項目
 1:営業関連
※種別フィールドへ連携するため、ラベルIDは" 1 "で設定します
【SE担当者】種別 セレクト セレクト項目
 2:SE関連
※種別フィールドへ連携するため、ラベルIDは" 2 "で設定します
【サポート担当者】種別 セレクト セレクト項目
 3:サポート関連
※種別フィールドへ連携するため、ラベルIDは" 3 "で設定します
▼ナレッジDBフィールド一覧
ナレッジ情報を格納するDBです。
項目名 フィールドタイプ DB上で必須な属性
サービス種別 セレクト なし
記事カテゴリ セレクト
記事タイトル テキスト
記事URL テキストエリア 入力制限
 正規表現: https?://[\w!\?/\+\-_~=;\.,\*&@#\$%\(\)'\[\]]+
※URL形式( https から始まる半角英数記号の文字列のみ)に制限します
▼お知らせDBフィールド一覧
お知らせ情報を格納するDBです。
項目名 フィールドタイプ DB上で必須な属性
タイトル テキスト なし
本文 テキストエリア
公開フラグ セレクト デフォルト値:非公開
※一覧への即時反映回避ために必ず設定します
公開日時 日付 インデックス:あり
※一覧表示でソートを行う場合は必ず設定します
会員限定フラグ セレクト なし
▼企業DBフィールド一覧
企業情報を格納するDBです。
項目名 フィールドタイプ DB上で必須な属性
企業ID テキスト 入力制約:あり
ユニーク制約:あり
※会員DBの参照フィールドのラベルとなるので必ず設定します
企業名 テキスト なし
郵便番号 テキスト
都道府県 テキスト
住所 テキスト
電話番号 電話番号
アカウント管理者名 テキスト
契約サービス セレクト
契約種別 セレクト
ポイント①
SPIRAL ver.2ではデータメンテナンスのための項目がDB作成時に自動で付加されます。
▼自動追加メンテナンス項目
項目名    
作成日 データが登録された日時(例:20XX/XX/XX 12:00:00)
作成経路 データの登録元(例:Form ※会員登録フォームからの登録の場合)
作成者 データを登録した人物名
(例:会員登録フォーム ※登録者が会員登録フォームから登録した場合はフォーム名)
(例:パイプ太郎 ※会員サイトアプリ操作画面からの場合はサイト運営担当者名)
最終更新日時 データが更新された日時(例:20XX/XX/XX 15:00:00)
最終更新経路 データの更新元(例:UI ※会員サイトアプリ操作画面からの更新の場合)
最終更新者 データを更新した人物名
(例:パイプ太郎 ※会員サイトアプリ操作画面からの場合はサイト運営担当者名)
ポイント②
SPIRAL ver.2ではフィールドごとに様々な属性の設定が可能です。
各フィールドで設定可能な属性は フィールドタイプリファレンス をご覧ください。

例えばパスワードフィールドは各企業のセキュリティポリシーに対応できるよう、細かな入力制限を設定することが可能です。
フォーム上で入力制限をかけることはよくありますが、SPIRAL ver.2ではDB上で設定できるのでフォームからの登録はもちろんのとこ、運営側の操作画面(アプリロール)からの登録も制限されます。
いかなる時でもセキュリティを担保します。

入力制限「正規表現」を設定すると正規表現の条件にマッチするデータのみDBに登録でき、マッチしないデータを登録するとエラーとなります。
ナレッジDBの記事URL項目には " https から始まる半角英数記号の文字列のみ " という条件を設定していますので、操作画面からURLのみ登録できるよう制御しています。
詳しくは 正規表現によるレコード入力制限 をご覧ください。

また「デフォルト値」を設定しておくと、該当フィールドに対する入力値がない場合に設定した値が自動的にDBへ格納されます。
お知らせDBの公開フラグ項目のように、この設定をしておけば誤って公開中の一覧表への即時反映してしまった!というケースを防ぐことができます。
ポイント③
参照フィールドを使用すると、簡単に別のDBのレコードとデータ連携が可能です。
参照フィールドとは、同一アプリ内にある別のDBのレコードをマスタとして参照して、レコード同士をデータ連携させることができるフィールドタイプです。
詳しくは 参照フィールド(データ連携) をご覧ください。

例えば、会員データを企業情報と紐づけたい場合は操作画面から企業DB内の企業IDをプルダウンから選択するだけです。住所の変更 / 修正などがあった際に会員DB側を編集せずに管理することができます。

また本アプリでは「営業担当者」「SE担当者」「サポート担当者」がそれぞれに関連するドキュメントを投稿するフローを想定していますので、 「営業担当者が使用する種別項目」「SE担当者が使用する種別項目」「サポート担当者が使用する種別項目」の3つの項目を使用するよう設計しました。
1つの種別項目で管理をすると営業担当者が誤って「種別:SE関連」としてドキュメントを投稿してしまったなど不都合が発生するので、それぞれ関連する種別のみしか選べないよう項目を分けました。

DBトリガのレコードアクションを使用して、3項目の値を種別項目に連携されるよう設定します。
ポイント④
DBトリガのレコードアクション を使用すれば、簡単に自DB内の別項目に指定した項目の値を格納することができます。もちろん他DBへも可能です。
詳しくは DBトリガのレコードアクション をご覧ください。
具体的なレコードアクショントリガの処理発動条件をご案内します。

種別フィールドに連携 トリガ ※登録トリガで設定します
 このトリガでは以下3つの処理を設定しますが、いずれかの処理が成功すると以降の処理は発動しません。
【営業担当者】種別を連携 処理
この処理は営業担当者が操作画面より営業関連ドキュメントを登録した際、 【営業担当者】種別 の値を 種別 に格納させたいので発動条件を下記に設定します。
発動条件 指定する
経路条件:一部の経路(操作画面)
簡易条件:指定する
└【営業担当者】種別|等しい|営業関連
処理タイプ 更新
処理マッピング アクション先DBフィールド:種別 = 格納値:【営業担当者】種別
エラー処理 全てエラー終了

【SE担当者】種別を連携 処理
この処理はSE担当者が操作画面よりSE関連ドキュメントを登録した際、 【SE担当者】種別 の値を 種別 に格納させたいので発動条件を下記に設定します。
発動条件 指定する
経路条件:一部の経路(操作画面)
簡易条件:指定する
└【SE担当者】種別|等しい|SE関連
処理タイプ 更新
処理マッピング アクション先DBフィールド:種別 = 格納値:【SE担当者】種別
エラー処理 全てエラー終了

【サポート担当者】種別を連携 処理
この処理はサポート担当者が操作画面よりサポート関連ドキュメントを登録した際、 【サポート担当者】種別 の値を 種別 に格納させたいので発動条件を下記に設定します。
発動条件 指定する
経路条件:一部の経路(操作画面)
簡易条件:指定する
└【サポート担当者】種別|等しい|営業関連
処理タイプ 更新
処理マッピング アクション先DBフィールド:種別 = 格納値:【サポート担当者】種別
エラー処理 全てエラー終了

以上でDB関連の設定は完了です。

最後に

設定後は動作確認を必ず行い、動作に問題がないか確認をしてください。
また、不具合やほかのやり方が知りたい等あれば、下記の「コンテンツに関しての要望はこちら」からご連絡ください。
アプリ(DB)設計・構築が完了したので次はサイト設計・構築に進みます。

関連記事はこちら
コンテンツに関しての
要望はこちら