データベースを使って、運用中に動的に属性を拡張できるような仕組みを作りたい場合の設計メモです。 拡張属性に対応する「キー」と「値」のテーブルを追加で用意して、 拡張元のテーブルと関連づける 感じで実現します。 テーブル設計 kittenテーブルの属性を拡張できるようにしたいとして、テーブルは次のような感じになります。 名前 説明 kitten 拡張元のテーブル。あらかじめ決まっている属性をカラムとして持つ。 ex_key 拡張属性のキーを格納するテーブル。 ex_value 拡張属性の値を格納するテーブル。外部参照キーとして、拡張属性IDとkittenのIDを持ち、「kitten+拡張属性+値」を関連づける。 MySQLで作る場合のSQL文は以下の通りです。 create table kitten ( id BIGINT NOT NULL AUTO_INCREMENT, name VARC
![動的に属性を拡張できるテーブルの設計メモ - うなの日記](https://cdn-ak-scissors.b.st-hatena.com/image/square/7eeed5041e90ef353974f24f334f2cfe2e25fcb4/height=288;version=1;width=512/http%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fu%2Funageanu%2F20081024%2F20081024175838.gif)