はじめに
DB設計をする上で、「正規化」が大事だと思われますが、そもそも正規化って何かと思い書籍を漁るも、第一〜第三正規形まで全くわかりませんでした。
ですが、学習を進める中でシンプルに考えると正規化への理解が容易になったので、備忘録としてこの記事を残そうと思います。
下記の動画は正規化を学習する上でかなりわかりやすいのでおすすめです。
シンプルなやり方
横の繰り返しをなくす
縦の繰り返しをなくす
1:多のテーブルを必要な分用意
これらにつきます。次は順追ってやってみます。
横の繰り返しをなくす(第一正規形)
繰り返しの項目が排除されていないテーブルを用意(非正規化)して、横の繰り返しをなくします。
例えば、学生とその教科の点数を管理する場合、次のように「国語」「数学」「英語」を「教科」にまとめます。
縦の繰り返しをなくす(第二正規系)
次に縦の繰り返しをなくします。繰り返されている部分を見極めて、1対多の関係を持つ別テーブルを作成します。
今回の場合、氏名が繰り返されているので、別のテーブルを用意してまとめます。
縦の繰り返しをなくす(第三正規系)
同様に、縦の繰り返しがあれば、1対多の関係を持つ別テーブルを作成します。
まだ、教科の部分で繰り返しがあるので、新しいテーブルを作成してまとめ、外部キーで繋ぎます。
これで正規化(データの繰り返し項目、重複をなくし、整合的にデータを取り扱えるように設計されたテーブル)の完了です。
おわりに
いかがだったでしょうか。
今回の例は簡単なものでしたが、基本的な考え方は一緒だと思われます。
今でも第一〜第三正規形までの完全な理解には到底及んでおりませんが、考え方がシンプルになり、もっと理解の深まる日が来るだろうと感じています。
この記事が、正規化の基本を理解する助けになれば幸いです。
もし、この記事の内容に不備や改善点などがありましたら、ご指摘いただけると嬉しいです。
参考
この記事の参考内容
学習書籍おすすめ