動的スキーマ管理
企業ごとに異なるマスターデータ項目を、テーブル構造の変更なしに自由に定義・カスタマイズできます。
📋 概要
動的スキーマ管理機能により、マスターデータの構造を柔軟に設計できます。従来のシステムでは項目追加にシステム改修が必要でしたが、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 | 他マスターへの参照 | 所属部署、担当者、商品カテゴリ |
| url | URL | Webサイト、API endpoint、ドキュメント |
| file | ファイル | 画像、PDF、契約書 |
| files | 複数ファイル | 製品画像、添付資料 |
🚀 マスター定義の作成方法
ステップ1: マスター定義作成画面を開く
- ダッシュボードから「マスター定義」をクリック
- 「新しい定義を作成」ボタンをクリック
- マスタータイプ(例:
product,employee)を入力
ステップ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 |
🛠️ フィールドの編集と削除
フィールドの編集
- マスター定義の編集画面を開く
- 編集したいフィールドの「編集」ボタンをクリック
- 内容を変更して「保存」
注意: フィールド名の変更は推奨されません。既存データとの整合性が失われる可能性があります。
フィールドの削除
- マスター定義の編集画面を開く
- 削除したいフィールドの「削除」ボタンをクリック
- 確認ダイアログで「削除」
注意: フィールドを削除しても、既存データの該当フィールドは残ります。再度同じ名前のフィールドを追加すれば、データが復元されます。
🔍 よくある質問
Q1. スキーマを変更すると既存データはどうなりますか?
A: 既存データは影響を受けません。
- フィールド追加: 既存データの新しいフィールドは空(null)として扱われます
- フィールド削除: データは削除されませんが、表示されなくなります
- バリデーション変更: 新しいバリデーションは新規データのみに適用されます
既存データを一括で更新したい場合は、CSVエクスポート → 編集 → インポートの流れで対応できます。
Q2. フィールド名を変更したい場合はどうすればいいですか?
A: フィールド名の変更は推奨されません。
推奨される方法:
- 新しいフィールドを追加
- CSVエクスポートで既存データを取得
- 新しいフィールドにデータをコピー
- CSVインポートで一括更新
- 古いフィールドを削除(または非表示化)
Q3. フィールドの表示順序を変更できますか?
A: はい、ドラッグ&ドロップで並び替えできます。
マスター定義の編集画面で、フィールドをドラッグして順序を変更してください。データ入力フォームやCSVエクスポートの列順に反映されます。
Q4. 参照フィールドで循環参照は可能ですか?
A: 技術的には可能ですが、推奨されません。
例えば、従業員マスターが部署マスターを参照し、部署マスターが従業員マスター(部署長)を参照する場合、データ入力の順序に注意が必要です。
推奨される設計:
- 参照関係は一方向にする
- 循環が必要な場合は、片方を任意項目にする
Q5. バリデーションエラーが発生して保存できません
A: スキーマ定義のバリデーションルールを確認してください。
確認項目:
- 正規表現パターンが正しいか(エスケープが必要な文字に注意)
- 最小値・最大値が妥当か
- 必須フィールドが正しく設定されているか
- 参照先のマスターが存在するか
Q6. 他のテナントのマスター定義をコピーできますか?
A: 現在、テナント間でのマスター定義のコピー機能はありません。
テナントごとに個別に定義する必要があります。将来のアップデートで「テンプレート機能」を提供予定です。
Q7. マスター定義の変更履歴は残りますか?
A: はい、バージョン管理機能で変更履歴が記録されます。
マスター定義を更新するたびに、バージョン番号が自動的にインクリメントされ、変更日時と変更者が記録されます。
💡 活用のヒント
ヒント1: まずはシンプルに始める
最初から全ての項目を定義しようとせず、最低限必要なフィールドから始めましょう。後から簡単に追加できます。
最低限のフィールド例(商品マスター):
- 商品コード(ユニーク)
- 商品名(必須)
- 価格(必須)
運用しながら必要に応じてフィールドを追加していくのがベストプラクティスです。
ヒント2: バリデーションは厳しすぎないように
バリデーションが厳しすぎると、柔軟なデータ入力ができなくなります。
推奨:
- 必須フィールドは最小限に
- パターン制限は本当に必要な場合のみ
- エラーメッセージはわかりやすく
ヒント3: 説明欄を活用する
フィールドの説明欄に、入力例や注意事項を記載しておくと、データ入力者が迷いません。
例:
フィールド名: employeeId
表示ラベル: 社員番号
説明: E0001〜E9999の形式で入力してください。既存社員と重複しないように注意。
ヒント4: 参照フィールドで階層構造を表現
参照フィールドを活用すると、マスターデータ間の関連を表現できます。
例: 商品マスター → カテゴリマスター → 大カテゴリマスター
これにより、階層的なデータ構造を実現できます。
🔗 関連機能
- CSVインポート・エクスポート - スキーマに基づくCSV操作
- AI入力支援 - スキーマ定義を理解したAI入力支援
- 変更履歴 - スキーマ変更の履歴管理
- クイックスタート - マスター定義の作成手順
📞 サポート
動的スキーマ管理に関する質問は、よくある質問をご覧いただくか、システム管理者にお問い合わせください。