| データの正規化…データの重複をなくし、理解しやすく、更新や削除を容易に行えるデータ構造にすること。 |
非正規化の表
| 生徒コード | 生徒名 | 担任コード | 担任名 | 部活名 |
| 000003 | 高島忠夫 | 710101 | 小林稔侍 | 相撲、柔道、空手 |
| 000009 | 鈴木その子 | 881101 | 北村総一郎 | 柔道 |
| 000012 | 江口洋介 | 910401 | 橋爪功 | |
| 000022 | 石田純一 | 950401 | 竜雷太 | 相撲 |
| 部活名でデータが複合している。関係データベースではこのようなデータの複合は許されない。 |
第1正規化
| 生徒コード | 生徒名 | 担任コード | 担任名 | 部活名 |
| 000003 | 高島忠夫 | 710101 | 小林稔侍 | 相撲 |
| 000003 | 高島忠夫 | 710101 | 小林稔侍 | 柔道 |
| 000003 | 高島忠夫 | 710101 | 小林稔侍 | 空手 |
| 000009 | 鈴木その子 | 881101 | 北村総一郎 | 柔道 |
| 000012 | 江口洋介 | 910401 | 橋爪功 | |
| 000022 | 石田純一 | 950401 | 竜雷太 | 相撲 |
|
データの複合は解消された。しかし、このままでは『高島忠夫』を含む行を削除した場合、担任データ(小林稔侍)まで失われてしまう。 生徒コードは生徒名と部活名に、担任コードは担任名にそれぞれ従属しているので、これらを分離する。 |
第2正規化
| 担任コード | 担任名 |
| 710101 | 小林稔侍 |
| 881101 | 北村総一郎 |
| 910401 | 橋爪功 |
| 950401 | 竜雷太 |
| 生徒コード | 生徒名 | 担任コード | 部活名 |
| 000003 | 高島忠夫 | 710101 | 相撲 |
| 000003 | 高島忠夫 | 710101 | 柔道 |
| 000003 | 高島忠夫 | 710101 | 空手 |
| 000009 | 鈴木その子 | 881101 | 柔道 |
| 000012 | 江口洋介 | 910401 | |
| 000022 | 石田純一 | 950401 | 相撲 |
|
生徒データと担任データが独立された。しかし、このままでは『高島忠夫』を含む行を削除した場合、部活名(空手)まで失われてしまう。 生徒名と部活名は従属関係にあるので、分離する。 |
第3正規化
| 担任コード | 担任名 |
| 710101 | 小林稔侍 |
| 881101 | 北村総一郎 |
| 910401 | 橋爪功 |
| 950401 | 竜雷太 |
| 生徒コード | 生徒名 | 担任コード |
| 000003 | 高島忠夫 | 710101 |
| 000009 | 鈴木その子 | 881101 |
| 000012 | 江口洋介 | 910401 |
| 000022 | 石田純一 | 950401 |
| 生徒コード | 部活コード |
| 000003 | sumo01 |
| 000003 | judo01 |
| 000003 | kara01 |
| 000009 | judo01 |
| 000022 | sumo01 |
| 部活コード | 部活名 |
| sumo01 | 相撲 |
| judo01 | 柔道 |
| kara01 | 空手 |
| 従属関係が完全に解消された。『高島忠夫』のデータを削除しても、『担任名』や『部活名』は削除されず、データの整合性が保てる。 |