2

ユーザーがテーブル フィールドを作成、変更、削除できるようにする必要があるプロジェクトで、アンチパターンを回避しようとしています。だから私はJSONデータをテーブルに保存することを探しています。たとえば、私はテーブル製品を持っています:

Products
----------------
id,
user_id,
created,
modified,
price,
_custom <-- there will be stored additional columns for each product needs
        {"adjustment":0.13, "weight":14.60, "have_some_individual_label":"value"}

_columnしかし、クエリにパラメーターを含める方法がわかりません。たとえば、user_id = 1ANDであるすべての製品をクエリする方法は次のとおりhave_some_individual_label = valueです。2 番目のパラメーターは 1 つ以上にすることができます (フィルターと分析に使用されます)。これが悪いアプローチである場合、より良いアプローチは何でしょうか? ありがとう!

4

2 に答える 2

1

これが悪いアプローチである場合、より良いアプローチは何でしょうか?

エンティティー属性値モデルモデル:

CREATE TABLE `ProductInfo` (
  `ProductID` BIGINT UNSIGNED NOT NULL,
  `AttributeKey` VARCHAR(20) NOT NULL,
  `AttributeVal` VARCHAR(20),
  PRIMARY KEY (`ProductID`, `AttributeKey`),
  FOREIGN KEY (`ProductID`) REFERENCES `Products` (`id`)
);

INSERT INTO ProductInfo
  (`ProductID`, `AttributeKey`              , `AttributeVal`)
VALUES
  (         1 , 'adjustment'                ,         '0.13'),
  (         1 , 'weight'                    ,        '14.60'),
  (         1 , 'have_some_individual_label',        'value')
;
于 2012-11-18T13:30:41.860 に答える
0

提案する JSON アプローチは、同等性のみを比較したい場合に使用できる可能性があります。余分な個々の属性を別のテーブルに保存し、それを ID で Products テーブルにリンクすることを提案したいと思います。

CREATE TABLE custom_attrs(prodID int, customAttr varchar(32),
       customValue varchar(32));

これは、テーブルに多少の複雑さをもたらしますが、より良いアプローチかもしれません.

于 2012-11-18T13:33:53.617 に答える