第 3 正規形

エンティティーは、非主キー属性のそれぞれで、他の非キー属性とは独立し、キーにのみ依存するファクトを指定する場合は、第 3 正規形です。

第 3 正規形の違反は、非主キー属性が別の非キー属性に関するファクトである場合に発生します。

例: 下図の最初のエンティティーには、EMPLOYEE_NUMBER 属性と DEPARTMENT_NUMBER 属性が含まれています。プログラムまたはユーザーが DEPARTMENT_NAME 属性をエンティティーに追加すると想定します。新規属性は DEPARTMENT_NUMBER に依存し、一方主キーは EMPLOYEE_NUMBER 属性に依存します。このためエンティティーは第 3 正規形に違反します。

1 人の従業員 David Brown の更新に基づいて DEPARTMENT_NAME を変更しても、その部門の他の従業員の DEPARTMENT_NAME 値は変更されません。下図に示したエンティティーの更新バージョンは、不整合な結果を示しています。さらに、この表の DEPARTMENT_ NAME を更新しても、DEPARTMENT_NAME 列を含んでいる場合がある他の表は更新しません。

図 1. 非正規化エンティティーの更新
. このエンティティー内の情報は不整合になりました。
図の説明の始め。この図は非正規化エンティティーを示しています。図の説明の終わり。

エンティティーを正規化するには、EMPLOYEE_DEPARTMENT エンティティーを変更して、EMPLOYEE と DEPARTMENT の、2 つのエンティティーを新規に作成します。次の図に、新規エンティティーを示します。DEPARTMENT エンティティーには、DEPARTMENT_NUMBER および DEPARTMENT_NAME の属性が含まれています。これで、部門名の変更などの更新がさらに容易になります。更新を行う必要があるのは、DEPARTMENT エンティティーに対してのみです。

図 2. 正規化エンティティー: EMPLOYEE、DEPARTMENT、および EMPLOYEE_DEPARTMENT
図の説明の始め。この図は正規化エンティティーを示しています。図の説明の終わり。