ラウンディングエラー(丸め誤差)
- やりたい事
- 小数点を用いたい
- アンチパターン
- float型やdouble型を用いる(有限精度は扱えるが無限精度は丸められるため誤差が生じる。誤差累積は和より積の時に更に大きくなる。)
- 解法
- numeric型やdecimal型を用いて、固定精度の小数点数で表す
- 参考文献
サーティワンフレーバー(31のフレーバー)
- やりたい事
- 敬称や分類など、列を特定の値に限定したい
- アンチパターン
- CHECK制約やENUMで制限する(扱う値が将来的にも不変ならよいが、将来的に変更しうる場合には破綻する)
- 解法
- 将来的に変更しうる場合は、参照テーブルを追加し、外部キー制約で限定する
- 参考文献
ファントムファイル(幻のファイル)
- やりたい事
- 画像や動画や音声など、メディアファイルを格納したい
- アンチパターン
- テーブルにはファイルパスを持ち、物理ファイルは外部に持つ(削除やロールバック、バックアップなどに弱い。整合性と保つためのDBが整合性を保てなくなってしまう。)
- 解法
- BLOB型などで持つ
- 参考文献
インデックスショットガン(闇雲インデックス)
- やりたい事
- インデックスでパフォーマンスを最適化したい
- アンチパターン
- オーバーヘッドにビビッて利用しない。無駄なインデックスを付ける。順序を無視する。サイズが大きい。など。
- 解法
- MENTOR原則に従う(Measure/Explain/Nominate/Test/Optimize/Rebuild)
- 参考文献