第三正規形
別名:第3正規形,3NF
【英】third normal form
第三正規形とは、リレーショナルデータベースのデータベース構造(リレーション)を設計する手順のうち、第一正規形、第二正規形と続いて、第三段階に行われる正規化のことである。
第二正規形を第三正規形にするには、主キーとなる項目以外の値によって、他の項目の内容が決定されないようにテーブルを分離することによって行われる。すなわち、非キーの項目で従属している項目を洗い出して別のテーブルとする。
第三正規形まで正規化すれば(必ずしもこの正規化が必要となるわけではないが)、データの更新、削除が複数のレコードに影響して煩雑になることはない。
リレーショナルデータベースの正規化には、第一正規形から第五正規形まであるが、そのうち第一正規形、第二正規形、第三正規形までがよく利用される。
第3正規形
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/12 07:30 UTC 版)
ある関係が、第2正規形で、かつ、非キー属性があるならば、それら全てが候補キーに非推移的に関数従属するとき、第3正規形 (third normal form; 3NF) であるという。 候補キーA及び非キー属性B, Cを含む関係があり、A → BかつB → Cのとき、Cは候補キーAに推移的に関数従属するという。推移的に従属する属性に従属する非キー属性も同様である。非推移的に従属するとは、関数従属するが推移的に関数従属していないことをいう。 第3正規形の目的と利点は、第2正規形とほぼ同様で、差異は、第2正規形が候補キーの一部に対する従属を問題とするのに対し、第3正規形は他の非キー属性に対する従属を問題とする、という点である。 例えば、{会員番号(候補キー), 氏名, 所属店コード, 所属店名} という属性からなる店舗の顧客会員台帳関係では(会員は常に1つの店舗にだけ所属するものとする)、会員番号 → 所属店コードであるが、所属店コード → 所属店名でもあるから、所属店名は会員番号に推移的に従属する。したがって、この関係は第3正規形でない。所属店コードが同一なのに組によって所属店名が異なるという危険が生じうる点、会員がいない店舗に対するコードと名称の対応を保存できない点など、不利な点は第2正規形と同様である。 第2正規形の関係は、常に無損失なように第3正規形に変形することができるが、その方法には妥当でないものがありうる。例えば、先程の例で挙げた関係を第3正規形に変形する方法としては、{会員番号, 氏名, 所属店コード}{所属店コード,所属店名} の2つの関係に分解する方法と、{会員番号, 氏名, 所属店コード}{会員番号, 所属店名} の2つの関係に分解する方法が考えられるが、後者の方法は妥当でない。なぜなら、この方法では、先に挙げた不利な点が解決されず、更新異常を防ぐためには、両関係のデータ間の関連が監視されなければならないからである。 このようなことが起こるのは、元の関係にあった所属店コード → 所属店名の関連を、分解後の各関係における関数従属性から導くことができない形になっているからである。一般に、関係Rをその射影である関係R1と関係R2に分解して正規化する場合、「R1とR2の上の関数従属性からRの関数従属性をすべて導くことができ、かつ、R1とR2に共通の属性が、そのいずれかにおいて候補キーを構成する」という条件を満たすように分解するのが妥当である。なお、このような条件を満たす分解を従属性保存といい、その場合のR1とR2は、両関係中のデータ間の関連を監視することなく更新できるという意味で、独立であるという。第2正規形の関係は、常に無損失かつ独立なように第3正規形に分解することができる。 妥当な第3正規形では、関数従属に関する更新異常の問題がほぼ解決されるが、複数の属性からなる候補キーがある場合にまだ例外が残る。
※この「第3正規形」の解説は、「関係の正規化」の解説の一部です。
「第3正規形」を含む「関係の正規化」の記事については、「関係の正規化」の概要を参照ください。
- 第3正規形のページへのリンク