# 商品表结构说明 ## 表名规范 所有表名使用 `mt_` 前缀,如: - `mt_product` - 商品表 - `mt_product_sku` - 商品SKU表 ## 表结构 ### 1. mt_product(商品表) **字段说明:** | 字段名 | 类型 | 说明 | 备注 | |--------|------|------|------| | id | BIGINT | 商品ID | 主键,自增 | | name | VARCHAR(255) | 商品名称 | 必填 | | price | DECIMAL(12,2) | 商品价格 | 基础价格,默认0.00 | | main_image | VARCHAR(4000) | 主图URL | 可选 | | status | VARCHAR(20) | 商品状态 | ACTIVE-上架,INACTIVE-下架,DELETED-已删除 | | shop_id | BIGINT | 店铺ID | 必填,关联店铺 | | create_time | DATETIME | 创建时间 | 自动填充 | | update_time | DATETIME | 更新时间 | 自动更新 | **索引:** - 主键:`id` - 普通索引:`shop_id`、`status`、`create_time` **排序规则:** - 使用 `utf8mb4_general_ci` 排序规则 ### 2. mt_product_sku(商品SKU表) **字段说明:** | 字段名 | 类型 | 说明 | 备注 | |--------|------|------|------| | id | BIGINT | SKU ID | 主键,自增 | | product_id | BIGINT | 商品ID | 外键,关联mt_product | | sku | VARCHAR(2000) | SKU编码 | 必填 | | price | DECIMAL(12,2) | 价格 | 必填 | | currency | VARCHAR(3) | 货币 | ISO 4217代码,默认USD | | stock | INT | 库存数量 | 默认0 | | sales_attrs | LONGTEXT | 销售属性 | JSON格式,如:[{"name":"颜色","value":"红色"}] | | sku_image | VARCHAR(4000) | SKU图片URL | 可选 | | weight | DECIMAL(10,2) | 重量 | 单位:克 | | size | VARCHAR(200) | 大小/尺寸 | JSON格式,如:{"length":10,"width":5,"height":3} | | specification | VARCHAR(2000) | 规格 | 文本描述 | | status | VARCHAR(20) | SKU状态 | ACTIVE-启用,INACTIVE-禁用 | | create_time | DATETIME | 创建时间 | 自动填充 | | update_time | DATETIME | 更新时间 | 自动更新 | **索引:** - 主键:`id` - 普通索引:`product_id`、`status` - 外键:`product_id` → `mt_product.id`(级联删除) ## 数据示例 ### 商品示例 ```sql INSERT INTO `mt_product` (`name`, `price`, `main_image`, `status`, `shop_id`) VALUES ('Macaron 马卡龙礼盒装', 20.00, 'https://example.com/image.jpg', 'ACTIVE', 1); ``` ### SKU示例 ```sql -- SKU 1:粉色6枚装 INSERT INTO `mt_product_sku` ( `product_id`, `sku`, `price`, `currency`, `stock`, `sales_attrs`, `sku_image`, `weight`, `size`, `specification`, `status` ) VALUES ( 1, 'SKU001', 18.00, 'USD', 50, '[{"name":"颜色","value":"粉色"},{"name":"规格","value":"6枚装"}]', 'https://example.com/pink-6pcs.jpg', 500.00, '{"length":20,"width":15,"height":5}', '6枚装马卡龙礼盒', 'ACTIVE' ); -- SKU 2:蓝色12枚装 INSERT INTO `mt_product_sku` ( `product_id`, `sku`, `price`, `currency`, `stock`, `sales_attrs`, `sku_image`, `weight`, `size`, `specification`, `status` ) VALUES ( 1, 'SKU002', 20.00, 'USD', 100, '[{"name":"颜色","value":"蓝色"},{"name":"规格","value":"12枚装"}]', 'https://example.com/blue-12pcs.jpg', 800.00, '{"length":25,"width":20,"height":8}', '12枚装马卡龙礼盒', 'ACTIVE' ); ``` ## JSON字段格式说明 ### sales_attrs(销售属性) ```json [ {"name": "颜色", "value": "粉色"}, {"name": "规格", "value": "6枚装"} ] ``` ### size(尺寸) ```json { "length": 20, "width": 15, "height": 5, "unit": "cm" } ``` ## 执行SQL ```bash # 在MySQL中执行 mysql -u用户名 -p密码 数据库名 < mt_product_schema.sql ``` 或在MySQL客户端中: ```sql SOURCE /path/to/mt_product_schema.sql; ``` ## 注意事项 1. **字符集**:使用 `utf8mb4` 字符集,支持emoji和特殊字符 2. **排序规则**:使用 `utf8mb4_unicode_ci` 3. **存储引擎**:使用 `InnoDB`,支持事务和外键 4. **外键约束**:删除商品时会级联删除所有SKU 5. **SKU字段**:`sku` 字段最大2000字符,不再设置唯一索引(可根据业务需求决定是否唯一) 6. **JSON字段**:`sales_attrs` 和 `size` 字段存储JSON格式数据,需要应用层进行解析