Database Specialist Examination study materials
Database Specialist Examination study resources

医療機器メーカーの商品マスタ統合におけるコード体系と概念モデルの判断

Database Specialist Examination · Put your knowledge to work in context.

All case studies

医療機器メーカーの商品マスタ統合におけるコード体系と概念モデルの判断

中堅の医療機器メーカーA社は、旧X社と旧Y社の基幹システムを2025年4月に統合する。商品マスタは約12,000件で、うち約1,800件は両社が同一製品を別コードで持っている。旧X社の商品コードは5桁(大分類1桁+中分類2桁+連番2桁)で、大分類は「消耗品」「機器」「試薬」の意味を持つ。旧Y社は英字3桁+数字4桁で、先頭3文字は製造工場コードである。商品名は全角と半角、カタカナと英字が混在し、「バイアル」と「VIAL」のように同一製品を指す表記が約300組ある。1つの製品に10本入・100本入の包装があり、JANコードと標準価格は包装単位で決まる。ロット番号は製造単位で管理し、同一ロットが複数の包装に分かれる。項目定義書は営業・購買・品質保証の3部門が別々に管理し、同じ「有効期限」が営業では「製造後月数」、品質保証では「最終使用日」を意味していた。データリポジトリは未整備で、重複定義の全量は把握できていない。現行は商品コードの先頭1桁を見て帳票の分類を切り替えており、業務側にコード依存の処理が残る。統合プロジェクトの期間は10か月、データ移行は3回のリハーサルを予定している。経営層は「製品を一意に識別できること」と「部門間で同じ言葉を使うこと」を最優先に求め、コードの意味は二次的としている。

1. 統合後の商品コード体系について、①意味を持つコードを採用すべきか、②旧コードとの関係をどう保持するかを、理由付きで答えよ。

Read the worked answer

結論:意味を持たない不変のサロゲートコードを採用し、分類は属性として別に持つ。

  • 現行は先頭1桁で帳票の分類を切り替えており、分類の追加・変更のたびにコード改番、関連データの更新、帳票ロジックの修正が必要になる。統合のタイミングでこの依存を切るのが最も安い。
  • 意味コードは桁あふれや分類の追加に弱く、旧X社・旧Y社のような「工場コードを含む」体系は拠点統廃合で破綻する。
  • したがって新コードは連番+チェックディジット(例:8桁)とし、大分類・カテゴリ・製造工場は属性列として保持する。帳票の分類は属性を参照するよう改修する。

旧コードの保持:

  • 「商品コードマッピング」表に(旧システム, 旧コード)→ 新コード を保持する。1つの新コードに複数の旧コードが対応し得るため、主キーは(旧システム, 旧コード)とする。
  • 名寄せの根拠(メーカー型番、包装、JANコード)を属性として残し、後から「なぜ同じ商品と判定したか」を追えるようにする。
  • 表記ゆれ(バイアル/VIAL)はコードではなく、名称の同義語辞書で吸収する。コードを分けると在庫や集計が二重になる。
  • 発番の主管部門、重複発番の防止、チェックディジットの検証ルールをリポジトリに定義する。

2. 概念データモデルにおいて「商品」と「包装単位」を分けるべきか、多重度と主キー候補を示して論じよ。ロットの位置づけにも触れること。

Read the worked answer

分けるべき。

  • 包装単位(10本入、100本入)ごとにJANコード、標準価格、発注単位が決まり、これらは商品だけからは決まらない。1表にまとめると包装の数だけ列を繰り返すことになり第1正規形に反する。
  • 多重度:商品 1 - 0..* 包装単位。包装単位は商品に存在従属し、商品が消えれば包装も消える。主キーは包装ID、または(商品ID, 包装コード)。

ロットの位置づけ:

  • ロットは製造単位であり、同一ロットが10本入と100本入の両方に詰められる。したがってロットを包装単位に従属させると同じロットが包装ごとに重複し、トレーサビリティが切れる。
  • ロットは商品に従属させ(商品 1 - 0..* ロット)、「どのロットをどの包装にいくつ詰めたか」は関連エンティティ(ロット包装実体)で持つ。
  • 回収時の照会は「ロット→包装→出荷」とたどれる必要があり、この構造がその経路を保証する。
  • 包装単位に有効期限を持たせるかは業務次第だが、ロットごとに期限が異なるなら期限はロット側の属性になる。ここを混同すると回収範囲を誤る。

3. 3部門の項目定義の重複と「有効期限」の意味の衝突を、リポジトリの整備を含めてどう解消するか。進め方を述べよ。

Read the worked answer
  1. 概念データモデルを共通語彙の基準にする。 エンティティと属性の候補を部門横断で突き合わせ、同義語(同じ意味で別名)と同音異義語(同じ名前で別の意味)を洗い出す。今回の「有効期限」は後者であり、2つの概念に分ける必要がある。
  2. 項目辞書をリポジトリに登録する。 論理名、定義、データ型、桁、NULL可否、ドメイン、導出規則、主管部門を持たせ、物理名は論理名から機械的に導出する。衝突した項目は「保証期間(製造後月数)」と「使用期限(最終使用日)」のように別概念として定義を書き分ける。
  3. ドメインを共通化する。 コード値の集合と意味をリポジトリで管理し、部門ごとに別のコード表を持たせない。
  4. スコープを絞る。 10か月で全項目は無理なので、商品、取引先、受注明細の順に統合対象を限定し、影響の大きい項目から合意する。
  5. データスチュワードを部門に置く。 変更申請と承認のワークフローを決め、現場の独自定義を止める。
  6. 移行結果をリポジトリに残す。 名寄せの対応表と判定根拠を登録し、以後の照会に使う。定着の指標は「新規項目の辞書登録率」と「重複定義数」で測る。