# 数据库设计参考 本文档为后端开发提供数据表结构建议,基于前端 Mock 数据(`src/data/mock.ts`)中的 22 条示例数据推导。 --- ## 1. 产品表 `products` | 字段 | 类型 | 说明 | 示例 | |------|------|------|------| | id | VARCHAR(32) PK | 产品唯一 ID | `"1"` | | name_cn | VARCHAR(200) | 中文名称 | `"秋季南瓜收获插枝装饰"` | | name_en | VARCHAR(200) | 英文名称 | `"Fall Harvest Pumpkin Stake Decor"` | | sku | VARCHAR(50) UNIQUE | SKU 编号 | `"HL-FD-20241101"` | | price | DECIMAL(10,2) | 价格(美元) | `8.99` | | source | ENUM | 数据来源 | `"Hobby Lobby"` / `"West Elm"` / `"Crate & Barrel"` | | description | TEXT | 产品描述 | `"精美的秋季南瓜插枝装饰..."` | | dimensions | VARCHAR(100) | 尺寸 | `"H: 18\" W: 6\""` | | category | VARCHAR(200) | 分类路径(`>` 分隔) | `"Fall > Outdoor Decor > Stake"` | | created_at | DATETIME | 创建时间 | | | updated_at | DATETIME | 更新时间 | | ### source 枚举值 ``` "Hobby Lobby" "West Elm" "Crate & Barrel" ``` --- ## 2. 产品图片表 `product_images` | 字段 | 类型 | 说明 | 示例 | |------|------|------|------| | id | INT PK AUTO | 自增 ID | `1` | | product_id | VARCHAR(32) FK | 关联产品 ID | `"1"` | | url | VARCHAR(500) | 图片 URL | `"https://images.unsplash.com/..."` | | sort_order | INT | 排序序号 | `0` | --- ## 3. 产品标签表 `product_tags` | 字段 | 类型 | 说明 | 示例 | |------|------|------|------| | id | INT PK AUTO | 自增 ID | `1` | | product_id | VARCHAR(32) FK | 关联产品 ID | `"1"` | | series | VARCHAR(50) | 系列 | `"Fall"` | | season | VARCHAR(20) | 季节 | `"秋季"` | | function | VARCHAR(20) | 功能 | `"插枝"` | | material | VARCHAR(20) | 材质 | `"Wood"` | ### 枚举值参考 | 维度 | 可选值 | |------|--------| | series | `Americana`, `Christmas`, `Everyday`, `Fall` | | season | `春季`, `夏季`, `秋季`, `冬季`, `万圣节`, `圣诞节` | | function | `插枝`, `串绳`, `墙挂`, `桌上摆件` | | material | `Wood`, `Metal`, `Ceramic`, `Fabric`, `Glass` | --- ## 4. 视觉元素表 `product_visual_tags` | 字段 | 类型 | 说明 | 示例 | |------|------|------|------| | id | INT PK AUTO | 自增 ID | `1` | | product_id | VARCHAR(32) FK | 关联产品 ID | `"1"` | | visual_tag | VARCHAR(50) | 视觉元素 | `"南瓜"` | ### 已知视觉元素 ``` 南瓜, 向日葵, 枫叶, 松鼠, 卡车, 松球, 木纹, 麋鹿, 雪花, 花卉, 蜡烛, 稻草人, 雪景, 玉米 ``` --- ## 5. 导出记录表 `export_records` | 字段 | 类型 | 说明 | 示例 | |------|------|------|------| | id | VARCHAR(32) PK | 记录 ID | `"e1"` | | user_id | VARCHAR(32) FK | 操作用户 ID | `"u1"` | | product_count | INT | 产品数量 | `24` | | size_mb | INT | 文件大小(MB) | `156` | | status | ENUM | 状态 | `"completed"` / `"processing"` / `"failed"` | | img_format | VARCHAR(20) | 图片格式 | `"original"` / `"compressed"` | | meta_format | VARCHAR(10) | 元数据格式 | `"json"` / `"txt"` | | filename_pattern | VARCHAR(100) | 命名规则 | `"{SKU}_{序号}"` | | download_url | VARCHAR(500) | 下载链接 | `"https://..."` | | created_at | DATETIME | 创建时间 | `"2026-06-15 14:30"` | | updated_at | DATETIME | 更新时间 | | --- ## 6. 导出任务-产品关联表 `export_record_products` | 字段 | 类型 | 说明 | |------|------|------| | export_record_id | VARCHAR(32) FK | 导出记录 ID | | product_id | VARCHAR(32) FK | 产品 ID | 联合主键:`(export_record_id, product_id)` --- ## 7. 用户表 `users` | 字段 | 类型 | 说明 | 示例 | |------|------|------|------| | id | VARCHAR(32) PK | 用户 ID | `"u1"` | | name | VARCHAR(100) | 用户名 | `"设计师小王"` | | role | VARCHAR(50) | 角色 | `"designer"` | | password_hash | VARCHAR(255) | 密码哈希 | | | created_at | DATETIME | 创建时间 | | --- ## 8. 用户收藏表 `user_favorites`(可选) | 字段 | 类型 | 说明 | |------|------|------| | user_id | VARCHAR(32) FK | 用户 ID | | product_id | VARCHAR(32) FK | 产品 ID | | created_at | DATETIME | 收藏时间 | 联合主键:`(user_id, product_id)` > 注:当前前端已用 localStorage 实现收藏,此表仅在需要跨设备同步时才开发。 --- ## 9. 搜索历史表 `search_histories`(可选) | 字段 | 类型 | 说明 | |------|------|------| | id | INT PK AUTO | 自增 ID | | user_id | VARCHAR(32) FK | 用户 ID | | query | VARCHAR(200) | 搜索关键词 | | created_at | DATETIME | 搜索时间 | > 注:当前前端已用 localStorage 实现搜索历史,此表仅在需要跨设备同步时才开发。 --- ## 索引建议 ```sql -- 产品搜索 CREATE INDEX idx_products_name_cn ON products(name_cn); CREATE INDEX idx_products_name_en ON products(name_en); CREATE INDEX idx_products_sku ON products(sku); CREATE INDEX idx_products_source ON products(source); CREATE INDEX idx_products_price ON products(price); -- 标签筛选 CREATE INDEX idx_product_tags_series ON product_tags(series); CREATE INDEX idx_product_tags_season ON product_tags(season); CREATE INDEX idx_product_tags_function ON product_tags(function); CREATE INDEX idx_product_tags_material ON product_tags(material); CREATE INDEX idx_product_visual_tags ON product_visual_tags(visual_tag); -- 导出记录 CREATE INDEX idx_export_records_user ON export_records(user_id); CREATE INDEX idx_export_records_status ON export_records(status); -- 收藏 CREATE INDEX idx_user_favorites_user ON user_favorites(user_id); ``` --- ## 初始数据 前端 `src/data/mock.ts` 包含 22 条产品示例数据,可作为数据库初始化种子数据导入。