现在我正在规划数据库产品的结构。存在存储选项/商品参数的问题。 例如,如果它是商品的大小 - 就足以在宽度/高度/深度上创建三个字段,但是如果有几十个参数呢? 假设参数列表可以更改,我看到这个结构: 1 - 宽度 2 - 身高 ... 11 - 颜色
但我不能像商品一样把它绑起来 - 可以用json类型
创建字段{1:" 20",2" 30",...,11:" white"} 然后在商品样品处理,但我不知道如何过滤参数
谁可以在正确的道路上提出建议?
答案 0 :(得分:1)
基本上有两种方法 - 你可以创建一系列" udf"您的表中的(用户定义的字段)列,如udf1,udf2等 - 然后在您的应用中的其他位置,您说" udf1 == color,udf2 == weight"。
另一种方法是创建一个productmeta表,其结构如下:
id BIGINT AUTO_INCREMENT PRIMARY KEY
product_id INT
property VARCHAR(16)
propvalue VARCHAR(64)
那么对于产品ID 137,您可能有几条记录:
|------------------------------------------|
| ID | product_id | property | propvalue |
|------------------------------------------|
| 3137 | 137 | size | large |
| 3138 | 137 | color | green |
| 3139 | 137 | height | 11.3 |
|------------------------------------------|
缺点是这些表格可以变得非常大,非常快。
答案 1 :(得分:1)
这件事可以用三种方法实现
separate columns
。products table
extras
末尾添加带有longtext类型的products table
列,以通过 json-encoding 或序列化 最后一个是使用一个单独的元表来存储该表中的key,value对以及product_id。
CREATE TABLE product_meta()
id BIGINT AUTO_INCREMENT PRIMARY KEY, // Primary key of this table
product_id INT, // For joining purpose and reference
meta_key VARCHAR(16),
meta_value VARCHAR(64)
);
那么对于产品ID 137,您可能有几条记录:
|------------------------------------------|
| id | product_id | meta_key | meta_value|
|------------------------------------------|
| 3137 | 137 | size | large |
| 3138 | 137 | color | green |
| 3139 | 137 | height | 11.3 |
|------------------------------------------|