導出属性とは?どうしゅつぞくせい
導出属性とは、他の属性や他の行の値から計算で求められる属性。UMLのクラス図では属性名の前に「/」を付けて示す。モデル上は冗長なので概念モデルでは求め方だけを持ち、実際に列として格納するかどうかは、参照と更新のどちらが多いかを見て物理設計で判断する。
最終更新:2026-10-06
この語が出る過去問を解く →背景
集計値を参照のたびに計算すれば常に正しいが遅く、列として持てば速いが元データの更新に合わせて直し続けなければ嘘になる。この二択はモデリングの段階では決められず、参照と更新のどちらが多いかという実行時の性質で決まる。導出属性という印を付けておくことで、判断を物理設計まで持ち越しつつ、後から見て「これは計算で出る値だ」と分かるようにしている。
具体例
会員の年齢は生年月日と基準日から求まる導出属性で、列に持てば毎日ずれていく。受注の合計金額は明細の金額合計から求まり、PostgreSQLの生成列(GENERATED ALWAYS AS)のようにDBMS側で計算を保証させる手もある。
試験での引っ掛け
導出属性は格納してはいけない、というルールではない。非正規化として意図的に持つ判断はあり得るが、そのとき整合を保つ責務がトリガや生成列、あるいはアプリケーションに移る点まで含めて設計する必要がある。
関連用語
出た過去問
出典:平成29年度 春期 データベーススペシャリスト試験 午前Ⅱ 問2(IPA)解説で登場
図のデータモデルは会計取引の仕訳を表現している。“移動”がリンクする“勘定”の残高を増やす場合は金額の符号を正に、減らす場合は負にすることで、貸借平均の原理を表…
正解:SELECT 期首残高 + SUM(金額) AS 残高 FROM 勘定, 移動, 会計取引 WHERE 勘定.勘定科目 = 移動.勘定科目 AND 会計取引.取引番号 = 移動.取引番号 AND 勘定.勘定科目 = '現金' AND 取引日 <= '2017-04-30' GROUP BY 勘定.勘定科目, 期首残高
要点:導出される残高は期首残高+期間内の移動金額合計で求める
このモデルでは残高は導出属性であり、期首残高に当期の移動金額の合計を足して求める。したがって勘定・移動・会計取引を結合し、勘定科目と取引日で絞り込んだ上で金額を合計し、期首残高に加算する必要がある。集計と非集計の列を併記するため、勘定科目と期首残高でのGROUP BYも欠かせない。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。