要約
IDリクワイアド
目的:主キーの規約を確立する
アンチパターン:すべてのテーブルに「id」列を用いる
- 冗長なキーが作成される。テーブルの中に主キーとして扱えるカラムがあっても、idというプライマリキーを追加することは冗長である。
- キーの意味がわかりにくくなる。他のテーブルと結合する時に、エイリアスを指定しなければ区別ができなくなる。
解決策
- わかりやすい列名にする(例:「テーブル名_id」)
- 外部キー名と一緒にすることでusingを使うことができ、SQLのクエリーはシンプルになる
- 規約に縛られない
- ORMは自動で主キーを作成してくれるが、手動で命名する
- 一意であり、NULLを許容しないキー(自然キー・複合キー)があればそちらを主キーにすればよい
EAV
メタデータトリプル
ラウンディングエラー
SQLインジェクション
動的SQLを記述した時に、発生しうるセキュリティ攻撃
対策
- 入力のフィルタリング
- 動的値のパラメーター化
- パラメーター化と認識されるので、パラメーター化されたクエリの構文を改変はできない