Chapter 05

【アンチパターン】データベース物理設計

たなかなた
たなかなた
2022.12.08に更新

ラウンディングエラー(丸め誤差)

  • やりたい事
    • 小数点を用いたい
  • アンチパターン
    • float型やdouble型を用いる(有限精度は扱えるが無限精度は丸められるため誤差が生じる。誤差累積は和より積の時に更に大きくなる。)
  • 解法
    • numeric型やdecimal型を用いて、固定精度の小数点数で表す
  • 参考文献

サーティワンフレーバー(31のフレーバー)

  • やりたい事
    • 敬称や分類など、列を特定の値に限定したい
  • アンチパターン
    • CHECK制約やENUMで制限する(扱う値が将来的にも不変ならよいが、将来的に変更しうる場合には破綻する)
  • 解法
    • 将来的に変更しうる場合は、参照テーブルを追加し、外部キー制約で限定する
  • 参考文献

ファントムファイル(幻のファイル)

  • やりたい事
    • 画像や動画や音声など、メディアファイルを格納したい
  • アンチパターン
    • テーブルにはファイルパスを持ち、物理ファイルは外部に持つ(削除やロールバック、バックアップなどに弱い。整合性と保つためのDBが整合性を保てなくなってしまう。)
  • 解法
    • BLOB型などで持つ
  • 参考文献

インデックスショットガン(闇雲インデックス)

  • やりたい事
    • インデックスでパフォーマンスを最適化したい
  • アンチパターン
    • オーバーヘッドにビビッて利用しない。無駄なインデックスを付ける。順序を無視する。サイズが大きい。など。
  • 解法
    • MENTOR原則に従う(Measure/Explain/Nominate/Test/Optimize/Rebuild)
  • 参考文献