車に関するウェブサイトを構築しているとしましょう。車のエンティティには、列挙型のような属性がたくさんあります。
- トランスミッション(手動/自動)
- 燃料(ガソリン/ディーゼル/バイオエタノール/電気)
- ボディスタイル(クーペ/セダン/コンバーチブル/ ...)
- エアコン(なし/シンプル/デュアルゾーン)
- 外装色(黒/白/グレー/青/緑/ ...)
- インテリアカラー(ブラック/ホワイト/グレー/ブルー/グリーン/ ...)
- 等
これらの属性のリストは、将来変更される可能性があります。データベースでそれらをモデル化するための最適な方法は何ですか?私は次のオプションを考えることができますが、実際には決定できません:
car
列挙値を持つテーブル のフィールドを使用する- 後で列を追加するのは難しい、おそらく最速
car
ルックアップテーブルを参照する外部キーであるテーブル 内のフィールドを使用する- 後で列を追加するのは難しく、やや遅くなります
- 可能な値を格納する属性ごとに個別のテーブルを作成し、車と属性値の間の接続を格納する別のテーブルを作成します
- 後で可能な値を追加するのは簡単ですが、さらに遅くなりますが、複雑すぎるようです