動的スキーマ管理

企業ごとに異なるマスターデータ項目を、テーブル構造の変更なしに自由に定義・カスタマイズできます。


📋 概要

動的スキーマ管理機能により、マスターデータの構造を柔軟に設計できます。従来のシステムでは項目追加にシステム改修が必要でしたが、SURP MDMでは管理画面から簡単に項目を追加・変更できます。

主な特徴

  • 開発不要: プログラミング知識がなくても項目を追加
  • 即座に反映: マイグレーション不要、設定後すぐに利用開始
  • 14種類のフィールドタイプ: 文字列、数値、日付、選択肢、参照など多彩な型に対応
  • 柔軟なバリデーション: フィールドごとに詳細なバリデーションルールを設定
  • 参照関係: 他のマスターへの参照関係を定義可能

🎯 なぜ動的スキーマが必要か

従来システムの課題

課題1: カスタマイズコストが高い

  • 企業ごとに必要な項目が異なる
  • 項目追加には開発工数が必要
  • カスタマイズごとに追加費用が発生

課題2: 拡張性が低い

  • 新しい項目を追加するたびにシステム改修
  • データベースのマイグレーションが必要
  • リリースまでに時間がかかる

課題3: 業務の変化に対応しづらい

  • 市場や法規制の変化で必要な項目が変わる
  • システム改修を待っている間、業務が止まる
  • 柔軟な対応ができない

動的スキーマの利点

利点1: ゼロコストカスタマイズ

  • 管理画面で項目を自由に追加・変更
  • プログラミング不要
  • 追加費用なし

利点2: 高い拡張性

  • データベースのマイグレーション不要
  • 既存データへの影響なし
  • 即座に項目追加可能

利点3: 業務変化への迅速な対応

  • 必要なときに必要な項目を追加
  • 業務を止めずに対応可能
  • 市場変化に柔軟に対応

🔧 対応フィールドタイプ

基本型

タイプ説明用途例
string短い文字列商品コード、氏名、部署名
text長文テキスト説明、備考、詳細情報
integer整数数量、年齢、在庫数
decimal小数価格、割引率、重量
boolean真偽値有効/無効、公開/非公開

日時型

タイプ説明フォーマット用途例
date日付YYYY-MM-DD発売日、入社日、契約日
datetime日時ISO 8601更新日時、作成日時
time時刻HH:MM:SS営業開始時間、締切時刻

選択型

タイプ説明用途例
select単一選択(ドロップダウン)ステータス、カテゴリ、区分
multiselect複数選択(ドロップダウン)タグ、属性、対応地域
radio単一選択(ラジオボタン)性別、優先度
checkbox複数選択(チェックボックス)オプション、権限

特殊型

タイプ説明用途例
reference他マスターへの参照所属部署、担当者、商品カテゴリ
urlURLWebサイト、API endpoint、ドキュメント
fileファイル画像、PDF、契約書
files複数ファイル製品画像、添付資料

🚀 マスター定義の作成方法

ステップ1: マスター定義作成画面を開く

  1. ダッシュボードから「マスター定義」をクリック
  2. 「新しい定義を作成」ボタンをクリック
  3. マスタータイプ(例: product, employee)を入力

ステップ2: フィールドを追加

  1. 「フィールドを追加」ボタンをクリック
  2. フィールド情報を入力:
    • フィールド名: 内部で使用する識別子(英数字、半角アンダースコア)
    • 表示ラベル: 画面に表示される名称(日本語OK)
    • フィールドタイプ: 14種類から選択
    • 必須: データ入力時に必須とするかどうか
    • ユニーク: 重複を許可しないかどうか
    • 説明: フィールドの用途説明(任意)

ステップ3: バリデーションルールを設定(任意)

フィールドタイプに応じて、詳細なバリデーションを設定できます。

文字列(string/text)のバリデーション

ルール説明設定例
正規表現パターン入力形式を制限^E[0-9]{4}$ (社員番号)
最小文字数最低限必要な文字数3文字以上
最大文字数入力可能な最大文字数100文字以内
カスタムエラーメッセージバリデーションエラー時の表示メッセージ「E0000の形式で入力してください」

数値(integer/decimal)のバリデーション

ルール説明設定例
最小値入力可能な最小値0以上
最大値入力可能な最大値100以下
精度(decimal)全体の桁数10桁
小数点以下桁数(decimal)小数点以下の桁数2桁

選択(select/multiselect)のバリデーション

  • 選択肢の定義: 値(value)とラベル(label)のペアを複数定義
  • 例:
    値: active, ラベル: 有効
    値: inactive, ラベル: 無効

参照(reference)のバリデーション

  • 参照先マスター: 参照する他のマスタータイプを指定
  • 例: department(部署マスター)を参照

ステップ4: プレビューで確認

フィールドを追加すると、画面右側にプレビューが表示されます。実際の入力フォームがどのように表示されるか確認できます。

ステップ5: 保存

「保存」ボタンをクリックして、マスター定義を保存します。保存後、すぐにデータ入力が可能になります。


💡 実践例

例1: 従業員マスターの定義

必要なフィールド

  • 社員番号: E0001形式、必須、重複不可
  • 氏名: 文字列、必須
  • メールアドレス: メール形式、必須、重複不可
  • 所属部署: 部署マスターへの参照、必須
  • 年齢: 18〜70の整数
  • 入社日: 日付、必須

設定内容

フィールド名表示ラベルタイプ必須ユニークバリデーション
employeeId社員番号string正規表現: ^E[0-9]{4}$
name氏名string--
emailメールアドレスstring正規表現: メール形式
department所属部署reference-参照先: department
age年齢integer--最小値: 18, 最大値: 70
joinDate入社日date--

例2: 商品マスターの定義

必要なフィールド

  • 商品コード: 文字列、必須、重複不可
  • 商品名: 文字列、必須
  • 価格: 小数(0以上、小数点以下2桁)、必須
  • カテゴリ: 選択(電化製品、衣類、食品)、必須
  • 在庫数: 整数(0以上)
  • 発売日: 日付
  • 説明: 長文テキスト

設定内容

フィールド名表示ラベルタイプ必須バリデーション
productCode商品コードstring✓ (ユニーク)-
productName商品名string-
price価格decimal最小値: 0, 精度: 10, 小数桁: 2
categoryカテゴリselect選択肢: electronics/clothing/food
stock在庫数integer-最小値: 0
releaseDate発売日date--
description説明text-最大文字数: 1000

🛠️ フィールドの編集と削除

フィールドの編集

  1. マスター定義の編集画面を開く
  2. 編集したいフィールドの「編集」ボタンをクリック
  3. 内容を変更して「保存」

注意: フィールド名の変更は推奨されません。既存データとの整合性が失われる可能性があります。

フィールドの削除

  1. マスター定義の編集画面を開く
  2. 削除したいフィールドの「削除」ボタンをクリック
  3. 確認ダイアログで「削除」

注意: フィールドを削除しても、既存データの該当フィールドは残ります。再度同じ名前のフィールドを追加すれば、データが復元されます。


🔍 よくある質問

Q1. スキーマを変更すると既存データはどうなりますか?

A: 既存データは影響を受けません。

  • フィールド追加: 既存データの新しいフィールドは空(null)として扱われます
  • フィールド削除: データは削除されませんが、表示されなくなります
  • バリデーション変更: 新しいバリデーションは新規データのみに適用されます

既存データを一括で更新したい場合は、CSVエクスポート → 編集 → インポートの流れで対応できます。


Q2. フィールド名を変更したい場合はどうすればいいですか?

A: フィールド名の変更は推奨されません。

推奨される方法:

  1. 新しいフィールドを追加
  2. CSVエクスポートで既存データを取得
  3. 新しいフィールドにデータをコピー
  4. CSVインポートで一括更新
  5. 古いフィールドを削除(または非表示化)

Q3. フィールドの表示順序を変更できますか?

A: はい、ドラッグ&ドロップで並び替えできます。

マスター定義の編集画面で、フィールドをドラッグして順序を変更してください。データ入力フォームやCSVエクスポートの列順に反映されます。


Q4. 参照フィールドで循環参照は可能ですか?

A: 技術的には可能ですが、推奨されません。

例えば、従業員マスターが部署マスターを参照し、部署マスターが従業員マスター(部署長)を参照する場合、データ入力の順序に注意が必要です。

推奨される設計:

  • 参照関係は一方向にする
  • 循環が必要な場合は、片方を任意項目にする

Q5. バリデーションエラーが発生して保存できません

A: スキーマ定義のバリデーションルールを確認してください。

確認項目:

  • 正規表現パターンが正しいか(エスケープが必要な文字に注意)
  • 最小値・最大値が妥当か
  • 必須フィールドが正しく設定されているか
  • 参照先のマスターが存在するか

Q6. 他のテナントのマスター定義をコピーできますか?

A: 現在、テナント間でのマスター定義のコピー機能はありません。

テナントごとに個別に定義する必要があります。将来のアップデートで「テンプレート機能」を提供予定です。


Q7. マスター定義の変更履歴は残りますか?

A: はい、バージョン管理機能で変更履歴が記録されます。

マスター定義を更新するたびに、バージョン番号が自動的にインクリメントされ、変更日時と変更者が記録されます。


💡 活用のヒント

ヒント1: まずはシンプルに始める

最初から全ての項目を定義しようとせず、最低限必要なフィールドから始めましょう。後から簡単に追加できます。

最低限のフィールド例(商品マスター):

  • 商品コード(ユニーク)
  • 商品名(必須)
  • 価格(必須)

運用しながら必要に応じてフィールドを追加していくのがベストプラクティスです。


ヒント2: バリデーションは厳しすぎないように

バリデーションが厳しすぎると、柔軟なデータ入力ができなくなります。

推奨:

  • 必須フィールドは最小限に
  • パターン制限は本当に必要な場合のみ
  • エラーメッセージはわかりやすく

ヒント3: 説明欄を活用する

フィールドの説明欄に、入力例や注意事項を記載しておくと、データ入力者が迷いません。

:

フィールド名: employeeId
表示ラベル: 社員番号
説明: E0001〜E9999の形式で入力してください。既存社員と重複しないように注意。

ヒント4: 参照フィールドで階層構造を表現

参照フィールドを活用すると、マスターデータ間の関連を表現できます。

: 商品マスター → カテゴリマスター → 大カテゴリマスター

これにより、階層的なデータ構造を実現できます。


🔗 関連機能


📞 サポート

動的スキーマ管理に関する質問は、よくある質問をご覧いただくか、システム管理者にお問い合わせください。