やる気がストロングZERO

やる気のストロングスタイル

テーブル設計:ある項目によって保存したいデータ内容が変化する場合

SQLアンチパターン:EAV(エンティティ・アトリビュート・バリュー) - やる気がストロングZERO ↑ここで書いた事と同内容。

例えばペットの種類によって保存したい内容が異なる場合

例)
犬:名前、鳴き声、リードの色、小屋の色
猫:名前、鳴き声、毛色、しっぽの形

こうしたい

ペットテーブル
・ペットID
・名前
・鳴き声
・ペットタイプ(犬 or 猫)

ペット犬テーブル
・ペットID
・リードの色
・小屋の色

ペット猫テーブル
・ペットID
・毛色
・しっぽの形

こんな感じがいいのかなと思っている。

こうしたくない

既存実装で以下のような感じのテーブルをよく見る。

ペットテーブル
・ペットID
・名前
・鳴き声
・ペットタイプ(犬 or 猫)
・リードの色
・小屋の色
・毛色
・しっぽの形

ペットタイプが「犬」の場合にも毛色とかしっぽの形にデフォルト値が入っていたりして、DBデータだけみるとよくわからない感じになっている。