0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

第3正規化_応用情報備忘録

Last updated at Posted at 2025-07-16

平成30年秋 第28問
「どの非キー属性も、主キーに推移的に関数従属しない」とは?

◇用語解説

用語 意味
主キー 表(リレーション)の各行を一意に特定するための列(または列の組)
非キー属性 主キーに含まれないその他の列
関数従属 A → B のとき、Aの値が決まればBの値が一意に決まる関係
推移的関数従属 A → B、B → C が成り立つとき、A → C も成り立つ(この間接的な依存を「推移的」と呼ぶ)
第3正規形(3NF) 非キー属性が、主キーに推移的に関数従属していない状態のこと

◇結論
第3正規形とは「非キー属性が他の非キー属性に依存していない状態」を指します。
つまり、「非キー属性は主キーに直接だけ依存していればよく、他の列を経由してはいけない」というルールです。

◇具体例で解説
ダメな構造(第2正規形までは満たしているが、第3正規形ではない)

社員ID(主キー) 部署ID 部署名
A001 D01 総務部
A002 D02 営業部
A003 D01 総務部

•社員ID → 部署ID(OK:主キー → 非キー)
•部署ID → 部署名(OK:非キー → 非キー)
•よって 社員ID → 部署名(❌推移的に従属している)

改善された構造(第3正規形)
① 社員表(主キー:社員ID)

社員ID 部署ID
A001 D01
A002 D02

② 部署表(主キー:部署ID)

部署ID 部署名
D01 総務部
D02 営業部

→ これで「部署名」は主キーに直接従属せず、別の表に分離されました。

◇あらためて言葉の意味

「どの非キー属性も、主キーに推移的に関数従属しない」
→ 非キー属性は主キーに直接依存するだけにして、他の非キー属性を経由して依存してはいけないということ。

◇なぜそうなのか(なぜダメ?またはなぜ良い?)

問題点(推移的従属がある場合) 改善点(3NFで推移的従属をなくす)
同じ情報(部署名など)が何度も繰り返される → 冗長性の増加 情報が1か所に集約されて、重複がなくなる
変更時に表の複数行を修正する必要がある → 更新ミスの原因 変更が1か所で済む → 整合性が保てる
挿入や削除で意図しないデータ欠損が発生しやすい データの挿入・削除が安全にできる

◇まとめ
•第3正規形は「非キー属性が主キーに推移的に依存していない状態」
•推移的従属があると、冗長性・不整合・データ欠損の原因になる
•正しく正規化することで、保守性・一貫性・拡張性が高くなる
•非キー属性 → 非キー属性 の関係を見つけたら、表を分割する!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?