マスタデータ設計 / Master Data Design Patterns
製造業の基幹システムに必要なマスタデータの構造・関係・設計パターン。
→ DDD 対応:
ddd/01-ubiquitous-language.md§3 (マスタデータ),ddd/05-business-rules.md
1. マスタデータの全体像
2. 各マスタの設計
2.1 品番マスタ (Product Master / M_HINBAN)
製造業の最重要マスタ。「何を作るか/買うか」を定義する。
| フィールド | 英語 | 説明 | 設計ポイント |
|---|---|---|---|
| 品番 | Product Number | 製品/部品の一意識別子 | 体系を持たせる (例: A-xxxx=製品, B-xxxx=部品) |
| 品名 | Product Name | 名称 | 検索用にカナも保持 |
| 型式 | Model Number | 型番・規格 | 顧客図番との対応が必要 |
| 材質 | Material | 素材 | 原価計算に影響 |
| 寸法 | Dimensions | サイズ | テキスト (自由記述) |
| 重量 | Weight | 重量 | 運送費計算に使用 |
| 調達区分 | Procurement Type | 内製 / 外注 / 購入 | MRP 展開時の手配先判断 |
| 単位 | Unit of Measure | 個, kg, m, 式 | 発注・在庫管理の基本単位 |
| リードタイム | Lead Time | 調達/製造にかかる日数 | MRP のリードタイム・オフセットに使用 |
設計原則:
- 品番は 変更不可 (一度採番したら欠番にしても再利用しない)
- 品番体系は短くシンプルに (長い品番は入力ミスの温床)
- 調達区分は品番レベルで持つ (同じ部品でも内製/外注を切り替える場合はあるが、デフォルトを設定)
2.2 部品表 (BOM / M_PARTS)
「親品目を作るのに何がいくつ必要か」を定義する。MRP の核心データ。
構造
BOM Header (M_PARTS_HED)
├── 親品番
├── 版数 (設変管理)
└── BOM Lines[] (M_PARTS_BDY)
├── 子品番
├── 員数 (使用量)
├── 単位
└── 工程番号
| フィールド | 説明 | 設計ポイント |
|---|---|---|
| 親品番 | 組立品の品番 | BOM Header のキー |
| 子品番 | 構成部品の品番 | 品番マスタに存在必須 |
| 員数 | 親 1 個に対する子の使用量 | 小数可 (0.5m 等) |
| 版数 | 設計変更の版管理 | 有効期間で切り替え |
| スクラップ率 | 歩留まり (不良率) | MRP で余分に手配する分 |
BOM の種類:
| 種類 | 英語 | 用途 |
|---|---|---|
| 設計 BOM | Engineering BOM (E-BOM) | 設計部門が定義。図面ベース |
| 製造 BOM | Manufacturing BOM (M-BOM) | 製造部門が使用。工程順序を含む |
| 原価 BOM | Costing BOM | 原価積算用。単価情報を付加 |
中小製造業では E-BOM と M-BOM を 兼用 することが多い。
2.3 得意先マスタ (Customer Master / M_TOKUISAKI)
| フィールド | 説明 | 設計ポイント |
|---|---|---|
| 得意先コード | 一意識別子 | 営業 CRM の customer_code と同期 |
| 得意先名 | 正式社名 | |
| 略称 | 帳票・画面用の短縮名 | |
| 締日 | 請求締め日 (月末/15日/20日) | 売掛計算のタイミングを決定 |
| 請求残高 | 未回収の請求額 | 与信管理に使用 |
| 納入先 | 物理的な納品先住所 | 本社と工場が異なる場合 |
| 支払条件 | 翌月末/翌々月末/手形 | 入金予測に使用 |
与信管理: 請求残高 > 与信限度額 の場合、受注時に警告を表示。
2.4 仕入先マスタ (Supplier Master / M_SIIRESAKI)
| フィールド | 説明 | 設計ポイント |
|---|---|---|
| 仕入先コード | 一意識別子 | |
| 社内外区分 | 社内協力/外部仕入先 | グループ内取引の区別 |
| 購入先対象 | 材料購入の対象か | |
| 外注先対象 | 加工外注の対象か | |
| 支払日 | 月次支払日 | 買掛締めのタイミング |
| 支払条件 | 翌月末/翌々月末 | |
| リードタイム | 標準納入日数 | MRP で使用 |
2.5 社員マスタ (Employee Master / M_SHAIN)
| フィールド | 説明 | 設計ポイント |
|---|---|---|
| 社員コード | 一意識別子 | ログイン ID としても使用 |
| 権限コード | アクセス権限レベル | 画面・操作の制御 |
| チャージレート | 時間あたり単価 (円/h) | 労務費計算: 作業時間 × CHARGE |
| 所属部署 | 部署コード | 製作指示の割当先 |
チャージレート: 社員の給与を直接使わず、部署/職級ごとの標準レートを設定するのが一般的。
2.6 区分マスタ (Classification / M_KUBUN)
ユニバーサル列挙テーブル。システム全体のコード値を一元管理。
| 区分 | 用途例 |
|---|---|
| 手配区分 | 外注/購入 |
| 指示区分 | 製作/修理/試作 |
| 支払区分 | 振込/手形/相殺 |
| 費目区分 | 材料費/外注費/経費 |
| 単位区分 | 個/kg/m/式 |
| 作業区分 | 旋盤/溶接/組立/... |
設計: (KUBUN, CODE) の複合キーで管理。NAME が表示名。
3. マスタデータ間の関係
得意先 ──→ 受注 ──→ 手配 ──→ 仕入先
↓
品番 ──→ BOM ──→ 品番 (子部品)
↓
単価
↓
区分 (手配区分, 費目, 単位...)
リレーションシップのルール:
- マスタ → トランザクション: 参照 (変更してもトランザクションは影響なし)
- トランザクション作成時にマスタの値をコピー (非正規化) するか、常に JOIN するか → 中小は非正規化が現実的 (マスタ変更の遡及を避ける)
4. マスタ管理のベストプラクティス
採番ルール
| マスタ | 採番方式 | 例 |
|---|---|---|
| 品番 | 体系あり (意味のあるコード) | A-0001 (製品), B-0001 (部品) |
| 得意先コード | 連番 | 1001, 1002, ... |
| 仕入先コード | 連番 | 2001, 2002, ... |
| 社員コード | 連番 or 入社年+連番 | 2024001 |
| 区分コード | 意味のあるコード | 01=外注, 02=購入 |
データ品質ルール
- 削除禁止: マスタは論理削除 (
DEL_FLG) のみ。物理削除はしない - 変更履歴: 単価など金額に関わるフィールドは変更履歴を保持
- 重複防止: 得意先名のカナ検索で類似チェック
- 定期棚卸: 年 1 回、使われていないマスタの棚卸