
1 :名無しさん@涙目です。:2018/07/05(木) 18:59:35.32 ID:3OLx/sL00.net PLT(12015)
データの重複をなくし整合的にデータを取り扱えるようにデータベースを設計することを「データベースの正規化」と呼ぶ。
教科書に書いてある定番のウリ文句であり、情報系の学校では
「データベースを設計するときは正規化しよう」
「テーブルはJOINで結合して使おう」と習うことだろう。
■非正規化
その逆に1つのテーブルに重複クソ食らえで全てを詰め込む手法を「データベースの非正規化」と呼ぶ。
こちらは主に膨大な量のレコードを扱うITドカタの現場で使われる教科書クソ食らえな必殺技である。
数億レコードを突破するようなテーブルがいくつも存在する現実的な環境下ではテーブルのJOINなどしたら
システムは窒息死するため、このようなデータベースの設計となる事が多い。
ただし非正規化は諸刃の剣であるということを忘れてはならない。
途中での方針変換による採用は非常に危険である。
・正規化した状態で設計・開発する
・サービス開始直後に過負荷でシステムダウン
・非正規を試みる
・プログラム側の非正規化対応という魔改造でデスマーチに陥る
このような炎上するパターンの根底にあるのは「途中での仕様変更」であり、 見積もり段階でしっかりと
想定データ量を算出して、必要に応じて最初から非正規化前提で設計および開発しているプロジェクトは
成功することが多い。
https://monobook.org/wiki/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AE%E9%9D%9E%E6%AD%A3%E8%A6%8F%E5%8C%96