基本情報技術者 2018年 秋期 午前(科目A) 問27
問題文
データ項目の命名規約を設ける場合、次の命名規約だけでは回避できない事象はどれか。
〔命名規約〕
(1) データ項目名の末尾には必ず“名”、“コード”、“数”、“金額”、“年月日”などこの区分語を付与し、区分語ごとに定めたデータ型にする。
(2)データ項目名と意味を登録した辞書を作成し、異音同義語や同音異義語が発生しないようにする。
選択肢
ア:データ項目“受信年月日”のデータ型として、日付型と文字列型が混在する。
イ:データ項目“受注金額”の取り得る値の範囲がテーブルによって異なる。(正解)
ウ:データ項目“賞与金額”と同じ意味で“ボーナス金額”というデータ項目がある。
エ:データ項目“取引先”が、“取引先コード”か“取引先名”か、判別できない。
データ項目の命名規約を設ける場合、次の命名規約だけでは回避できない事象はどれか。【午前2 解説】
要点まとめ
- 結論:命名規約と辞書はデータ型や語彙の重複を防げるが、テーブルごとの値の許容範囲(ドメイン)の不整合は防げません。
- 根拠:提示規約は末尾の区分語で型を固定し、語彙の統一を図るが、各テーブルの数値範囲や上限下限は規定していないためです。
- 差がつくポイント:差を付けるには命名規約に加え、ドメイン定義・チェック制約・共通辞書で値の範囲や単位を明確に運用する必要があります。
正解の理由
正解は イ です。
理由は、(1) と (2) の規約は「データ項目名の末尾で型を指定する」ことと「名称の同一性・同義語の排除」を目的としています。これにより文字列/日付/数値といった型混在や同義語の存在、名称の曖昧さは抑制できます。しかし「取り得る値の範囲(例:最小値・最大値や桁数、通貨単位など)」がテーブルごとに異なることは、命名や語彙統一だけでは制御できないため、イが回避できない事象になります。
理由は、(1) と (2) の規約は「データ項目名の末尾で型を指定する」ことと「名称の同一性・同義語の排除」を目的としています。これにより文字列/日付/数値といった型混在や同義語の存在、名称の曖昧さは抑制できます。しかし「取り得る値の範囲(例:最小値・最大値や桁数、通貨単位など)」がテーブルごとに異なることは、命名や語彙統一だけでは制御できないため、イが回避できない事象になります。
よくある誤解
- 命名規約があればデータ品質は完全に担保される:命名は重要だが、値の範囲や単位・整合性は別途ドメイン定義や制約が必要。
- データ辞書があれば物理レベルの型や制約の違いも自動解消される:辞書は仕様の参照先にすぎず、実装(DB定義)との整合は別途運用で担保する必要があります。
- 「年月日」等の区分語で型を固定すればすべての混在問題は解決する:型統一は有効だが、例えば文字列で格納されるケースや外部システムとの受渡しで型変換が起きる可能性は残ります。
解法ステップ
- 問題文の規約(1)(2)が「何を防げるか」を短く整理する(型固定と語彙統一)。
- 各選択肢が「型」「語彙」「範囲」「曖昧さ」のどれに該当するかを判別する。
- 規約で直接カバーできない領域(ここでは値の範囲)を探し、該当する選択肢を選ぶ。
- 正解を選んだら、なぜ他が防げるかを一文ずつ確認する。
選択肢別の誤答解説
- ア: データ項目“受信年月日”のデータ型として、日付型と文字列型が混在する。
→ 誤り。規約(1)の「末尾に‘年月日’を付与し、区分語ごとに定めたデータ型にする」により、少なくとも命名規約上は日付型に統一されるため、この規約だけで混在は低減される。物理実装の不備は別だが設問の意味では防げる。 - イ: データ項目“受注金額”の取り得る値の範囲がテーブルによって異なる。
→ 正解。命名規約は型や語彙の命名統一を行うが、各テーブルのドメイン(許容値範囲)を統一する旨は規約に含まれておらず、回避できない。 - ウ: データ項目“賞与金額”と同じ意味で“ボーナス金額”というデータ項目がある。
→ 誤り。規約(2)で「データ項目名と意味を登録した辞書を作成し、異音同義語や同音異義語が発生しないようにする」と明記されているため、同義語の混在は防げる。 - エ: データ項目“取引先”が、“取引先コード”か“取引先名”か、判別できない。
→ 誤り。規約(1)で末尾に区分語(“コード”や“名”)を付与するよう定めているため、命名規約に従えば判別可能となる。
補足コラム
命名規約は重要ですが、実務で「イ」のようなドメイン不整合を防ぐには次の追加対策が必要です。
- データ辞書に「ドメイン定義(最小値・最大値・単位・桁数・小数桁)」を含める。
- RDBでは CHECK 制約やカラムの型・桁数を厳格に定義する。
- 共通ライブラリやAPIでバリデーションを統一する(入力前に排除)。
- データガバナンス体制を整え、変更時にドメイン変更の承認を必須化する。
SQLでのチェック制約例:
ALTER TABLE order_amounts ADD CONSTRAINT chk_order_amount_range CHECK (order_amount >= 0 AND order_amount <= 100000000);
JSON Schemaでの簡易ドメイン定義例:
{
"properties": {
"orderAmount": {
"type": "number",
"minimum": 0,
"maximum": 100000000
}
}
}
FAQ
Q1: 命名規約だけでどこまでカバーできますか?
A1: 型の明示や同義語の排除など語彙面はカバーできますが、値の範囲や単位、相互依存性までは保証できません。
A1: 型の明示や同義語の排除など語彙面はカバーできますが、値の範囲や単位、相互依存性までは保証できません。
Q2: 値の範囲はどのレイヤで定義すべきですか?
A2: 仕様レイヤ(データ辞書)で定義し、実装レイヤ(DBのCHECK制約やアプリ側バリデーション)で強制するのが望ましいです。
A2: 仕様レイヤ(データ辞書)で定義し、実装レイヤ(DBのCHECK制約やアプリ側バリデーション)で強制するのが望ましいです。
Q3: 辞書を作ったが守られない場合は?
A3: 運用ルール(承認フロー、変更管理)と技術的強制(CIでの検証、マイグレーションチェック)を組み合わせて遵守率を高めます。
A3: 運用ルール(承認フロー、変更管理)と技術的強制(CIでの検証、マイグレーションチェック)を組み合わせて遵守率を高めます。
関連キーワード: データ命名規約、データ辞書、データ型、ドメイン制約、チェック制約、データガバナンス、データ品質、命名規則、スキーマ設計

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

