产品表设计:
A类产品有:a
B类产品有:a,b
C类产品有:a,b,c
D类产品有:a,b,c,d
我早前也做这种功能,可能和你不尽相同,但是我是仿照淘宝做的:
三个表:
产品分类 ProductDir
产品表 ProductList: productId 、productName 、 productDirId
产品属性表 ProductProperty:
productId 、 PropertyType(属性类型:材质、适应对象等) 、PropertyValue 、PropertyName
还有一些特殊产品的属性,比如鞋子的颜色、尺码、库存、价格,要一一对应起来,我又建了一个表:
ProductShoeColorSize:
ProductId 、ColorValue(颜色)、SizeValue(尺码)、PriceValue(价格)、StockQuantity(库存)
保存这种产品属性的时候,是批量保存的,比如一个鞋子有3种颜色、每种颜色有3个尺码,这里的属性保存个数就是 3 X 3 = 9。
问题:
不同产品的属性不一样,特别是网站展示产品,需要从多个角度,多个分类来查询产品信息,类似目前大多数购物网站查询商品,有商品主分类为主线条,每一个主分类进去都会有一些相关分类及属性可供进一步的筛选
方案:
现设计几个表:产品表、产品分类表、属性组表、属性基础表、品类与属性组表
【产品表】:存放产品档案,字段有产品ID、产品名称、产品描述等
【产品分类表】:存放产品的所有分类,字段有分类ID、分类名称、上级分类、是否主分类
【属性组表】:需与属性基础表联合起来看,用来给属性基础表中的字段赋予不同的意义,字段有属性组ID、属性组名称、属性ID、属性名称
【属性基础表】:存放每个产品的所有属性值,该表中的同一字段针对不同产品不同属性组具有不同的意义,具体意义通过属性组表来定义,字段有产品ID、属性组ID、字符1~N、数字1~N、日期1~N……
【品类与属性组表】:该表定义主品类与属性组的关系,即前台展示时可根据该表的数据显示每个品类相关的属性及其内容,下级品类可继承其上级的所有属性组,字段有品类ID、属性组ID
1、 物理结构
2、 【属性基础表】与【属性组表】
【属性基础表】主要由各种数据类型的扩展字段组成,存放属性值用
【属性组表】的作用是将【属性基础表】中的字段分组并赋予意义
【属性组表】示例数据如下:
属性组ID |
属性组名称 |
属性ID |
属性NAME |
G01 |
主体 |
字符1 |
品牌 |
G01 |
主体 |
字符2 |
型号 |
G01 |
主体 |
字符3 |
颜色 |
G01 |
主体 |
字符4 |
平台 |
G02 |
处理器 |
字符1 |
CPU类型 |
G02 |
处理器 |
字符2 |
CPU型号 |
G02 |
处理器 |
字符3 |
CPU速度 |
G02 |
处理器 |
字符4 |
系统总线 |
G02 |
处理器 |
字符5 |
三级缓存 |
G03 |
内存 |
字符1 |
内存容量 |
G03 |
内存 |
字符2 |
内存类型 |
G03 |
内存 |
字符3 |
插槽数量 |
G03 |
内存 |
字符4 |
最大支持容量 |
G04 |
音频参数 |
字符1 |
音频系统 |
G04 |
音频参数 |
字符2 |
音频模式 |
G04 |
音频参数 |
字符3 |
输出功率 |
G04 |
音频参数 |
字符4 |
扬声器数量 |
G05 |
原理参数 |
字符1 |
背光灯类型 |
G05 |
原理参数 |
字符2 |
LED背光源分类 |
【属性基础表】示例数据如下:
说明:通过【属性组表】将【属性基础表】中每个字段赋予不同的意义,通过【品类与属性组】关系表确定每个产品应该具有哪些属性,属性值保存到【属性基础表】中
3、 前台展示举例
见识尚拙劣,望大虾们指导