MySQL ソリューション。
Entity Key Value
An item size 23"
An item Resolution 1920*1080
An item Panel IPS
SELECT * FROM table where Entity = 'An item'; //Selecting info on an item
SELECT * FROM table where Entity IN //Selecting info on items with size = '22"'
(SELECT Entity WHERE Key = 'size' AND Value = '22"');
コメント:
- すべてのデータは文字列として保存され、DB の型チェックが失われ、非効率的です
- 多くのアプリケーション ロジックとサブクエリ。
- エンティティを ID にして、エンティティ名と必要なフィールド用に別のテーブルを作成できます。
- マルチフィールド キー テーブル (エンティティ、キー) です。
これが最善のアプローチである理由:
- 単一のフィールド内のカンマ区切りの値は、データベースの要点全体を壊します。
このプロパティは第 1 正規形です。フィールドに複数の値を入力すると、SQL を使用してフィールドを並べ替えることができなくなります (少なくとも、かなり高速な方法ではできません)。
また、競合する解析などの問題もあります-エスケープする必要がある文字が増えます。
- 実行時にテーブル スキーマを変更し、新しいフィールドを追加することも、パフォーマンスに悪影響を及ぼします。
非常にまばらなテーブルになり、多くの NULL エントリが作成されます。