第3正規形の解説(応用情報技術者シラバス用語)

目次

第3正規形とは

第3正規形とは、リレーショナルデータベース(RDB)の設計において、データの重複や不整合を防ぐために、テーブル(表)を分割して整理するステップ(正規化)の一つです。

データベース設計では、ある値が決まると他の値が自動的に決まる「関数従属」という関係を整理します。第3正規形では、「主キー(その行を一意に特定するID)」以外の項目同士に依存関係(推移的関数従属)がある場合、それらを別のテーブルとして切り離します。例えば、「社員ID」が決まると「所属部署ID」が決まり、「所属部署ID」が決まると「部署名」が決まるという関係のとき、「部署名」を社員テーブルに直接書くのをやめ、部署専用のテーブルに切り分ける状態を指します。これにより、部署名が変更になった際も、1箇所を書き換えるだけで済むようになります。

具体例

「注文テーブル」に「注文ID(主キー)」「顧客ID」「顧客名」「顧客住所」が並んでいるとします。顧客が引越しをして住所が変わった場合、その顧客の過去のすべての注文履歴の住所を書き換える必要があり、修正漏れが起きやすくなります。これを「注文テーブル(注文ID、顧客ID)」と「顧客テーブル(顧客ID、顧客名、顧客住所)」に分割して整理する状態が第3正規形です。

もう少し詳しく

第3正規化を行う前提として、データベースは既に「第1正規形」および「第2正規形」を満たしている必要があります。第1正規形は、テーブルの各セルに重複する値(繰り返しグループ)がなく、単一の値(原子値)が入っている状態です。第2正規形は、主キーが複数の項目で構成されている場合(複合主キー)、主キーの一部にだけ依存する項目(部分関数従属)を別テーブルに分離した状態です。そして第3正規形は、主キーに直接ではなく、他の項目を介して間接的に決定される関係(推移的関数従属)を排除した状態です。第3正規化を行うことで、データの挿入、更新、削除時に発生する不整合(アノマリー)を防ぐことができますが、テーブルが細分化されるため、データを取得する際に結合(JOIN)の処理負荷が高まるという特徴もあります。

試験でのポイント

試験では、与えられた非正規化されたテーブルやデータのリストから、段階的に「第1正規化」「第2正規化」「第3正規化」を行う手順が問われます。特に複合キーがある場合の「部分関数従属の排除(第2正規化)」と、非キー属性間の「推移的関数従属の排除(第3正規化)」の違いを見分ける問題が頻出します。問題文で「関数従属:(A, B) -> C, A -> D」のように示された場合、A -> Dは部分関数従属なので第2正規化で排除します。一方、「A -> B, B -> C」のような関係は推移的関数従属なので第3正規化で排除します。この判定規則を確実に理解しておきましょう。

関連する用語

第3正規形に関連する用語としては、非キー属性間の依存関係である「推移的関数従属」や、複合主キーの一部への依存を示す「部分関数従属」があります。また、値の重複を排除する最初のステップである「第1正規形」、部分関数従属を排除した「第2正規形」、さらに厳しい整合性チェックを行う「ボイスコッド正規形(BCNF)」、および複数のテーブルを繋ぎ合わせる「結合(JOIN)」も重要な関連ワードです。

読んだ内容を10問練習と実技で確認

記事で理解した用語を、StudyQuestの演習とクラウド実技ラボで定着させます。

10問練習 実技ラボ