#前段
勤めている会社で新システムのテーブル構造を作る上で、どこまで正規化するか困ったので勉強してみました。
今回は、『達人に学ぶDB設計徹底指南書』(著:ミック)より学んだ内容と先輩に伺った内容を自分用にまとめました。
#正規化のメリット・デメリット
正規化することで生まれるメリット・デメリットを今一度確認
###メリット
####・データの整合性が保たれる。
…正規化を進めるとデータの冗長性が排除される。
冗長性が排除されることで、①データ登録時に懸念される不都合、②オペレーションミスによるデータ不整合の2点の減少が期待できる。
####・テーブルの意味が明確になる。
…正規化が進めば、テーブルが持つ情報は最小単位になるので。
###デメリット
####・SQLのパフォーマンスが落ちる可能性がある。
…テーブルが分割されれば、SQL発行時に結合を必要とする場面が増える。パフォーマンス悪化の原因になる。
#正規化・非正規化のトレードオフ
非正規化を選ぶ際に考慮すべき事項
前提;正規化はできるならする。(少なくとも第3正規化くらいは)
その先をどこまで正規化するかという点で以下の点が考慮されうる。
####・検索時・更新時のパフォーマンス
非正規化は検索時のパフォーマンスは向上させるが、データ更新を行う際のパフォーマンスは低下させる。
非正規化することでインデックスがより機能し検索のパフォーマンスが上がる一方で、
更新処理を行う際には、非正規化した分、負荷がかかるようになる。
####・カラム数は増える可能性はあるか?
今後カラムが増える余地がある項目の場合、非正規化するとカラムが増えるごとにALTERしないといけないなど不都合が増える
####・製造工数
正規化すれば、SQL作成時に表結合する場面は増え、求めるデータの形によってはSQLが難解になる。
これによって製造工数が非正規化した時よりも膨らむ可能性がある。