論理設計(正規化)
第9章 データベース
論理設計(正規化)
作成したデータモデルは正規化します。正規化とは、データの整合性を高める作業のことです。具体的には、各データを検索、挿入、削除した時に円滑にデータを操作できるようにエンティティの独立性を高めます。試験では、「正しく正規化できているのはどれか」が問われます。
正規化
正規化とは、データベース上に繰り返し現れる重複データ項目が排除された表を作るための作業のことです。なぜ正規化の作業が必要なのでしょうか。
例えば、ある学校の生徒のデータベースがあるとき、生徒は複数のクラブに所属する可能性があります。サッカーと茶道部に所属しているジョンさんは、データベース上に繰り返し表示されます(下図)。
繰り返し表示される時の問題点は、データベースを更新するときに更新漏れが発生する可能性があることです。そのため重複や矛盾が生じているテーブルやデータ項目に対して正規化をする必要があります。
このように繰り返し表示されているデータ項目を排除するためにテーブルを分割します。学生テーブル、クラブテーブル、所属テーブルの3つに分けることで、重複と矛盾を解消できます。「ジョン」の重複を解消できました。
正規化の試験問題:データベースを正規化する問題ではなく、正しく正規化できている表を選択する問題が出題されます!
この時、各テーブルに主キーを設定する必要があります。[学生]テーブルには「学籍番号」、[クラブ]テーブルには「クラブ番号」を設定しています。主キーを設定することで、データ項目を重複させることなく[所属]テーブルを作成することができます。
参照規約
[学生]、[クラブ]、[所属]の3つのテーブルでは各テーブルの関係性が明確になっています。関係する別のテーブルを参照するためのキーを外部キーといいます。[所属]テーブルの「学籍番号」と「クラブ番号」は、それぞれ[学生]テーブルと[クラブ]テーブルに紐付く外部キーとなっています。
外部キーには、テーブル間の整合性を維持するために、参照するテーブルに存在するデータしか入力できないという規則があります。この規則のことを参照規約といいます。