LoginSignup
5
2

More than 3 years have passed since last update.

【データベース】正規化について知る

Last updated at Posted at 2020-06-08
1 / 11

はじめに

この記事では
リレーショナルデータベース(以下、DB)技術のあんなことや
こんなことについてまとめた記事です。

ベストプラクティスや間違いがあれば
書き直していく予定です。

今回は「正規化」についてまとめてみました。


キッカケ

かれこれ3年近くお客様のDBを触っていますが
扱っているDBについて

どのような考えで設計されているのか
たまに疑問に思うことがあるので

DBのあるべき姿について学びたいと思うようになりました。


正規化って何ぞや

要するに
・あるべき姿を追い求めること
・扱う上で効率良いデータに仕立て上げること(異状な形ではないこと)

※「異常」ではなく「異状」であることに注目
データを更新する際に発生する異常を「更新異状」という


正規化の基本

英語でカッコよく言うと
「1 fact 1 place」

1か所1事実
データを正常に扱う上では正規化は欠かせないが
正規化というのはテーブルの分解を行うということ

分解するということは
参照するときには結合しなければならない為
処理が遅くなる可能性もある。

そういったことも踏まえて
あえて正規化を行わないこともある。


正規化が必要ないモノ(データの更新を行わないモノ)

アクセスログといったデータを追記するだけのモノ
データウェアハウス
蓄積させていくものに関しては更新を行わない為
正規化は必要ありません。


正規化が必要ないモノ(データの履歴を残すモノ)

社員の異動履歴や変更履歴など
履歴として残すモノは更新する必要がない為
正規化は必要ありません。


正規化が必要ないモノ(高速化が必要なモノ)

更新異状は2の次で
スピードが優先される場合は
更新スピードに影響が出るため
正規化の必要はありません。
※ スピード優先でもデータに整合性を取りたい場合は
別の方法で正規化を検討する必要があります。


正規形の種類 (全6種類)

非正規形
第1正規形
第2正規形
第3正規形
第4正規形
第5正規形

第4正規形や第5正規形は「ボイスコット正規形」というそうです。
※復習で初めて知りました。

基本的には第3正規形までできれば
かなりきれいなDBになると思う。
(第3までしか正規化したことないのでそう思うだけ)


まとめ

更新異状を起こさない為には正規化が大事であり
正規化というのは必ずしも必要なモノではない。

更新時異状が起こりやすいと考えられるテーブルに関しては
正規化を検討すべきである。

正規化は全部で6種類存在するが
基本的に第3正規形までを扱えれば良い。

正規化が必要ないデータもあることに注意すること


おわり

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2