做一个类似国美(http://www.gome.com.cn)的项目
问题:产品分类无限级,不同类产品的参数有区别.数据库如何设计才合理...
现在我的做法是.
将参数(字段)跟参数的值分开两个表.
然后将
分类-->产品 建立关联1:M
分类-->参数(字段) 建立关联1:M
产品-->参数的值 建立关联1:M
参数(字段)-->参数的值 建立关联1:M
这样设计是否合理.是否有更好的方法
问题:产品分类无限级,不同类产品的参数有区别.数据库如何设计才合理...
现在我的做法是.
将参数(字段)跟参数的值分开两个表.
然后将
分类-->产品 建立关联1:M
分类-->参数(字段) 建立关联1:M
产品-->参数的值 建立关联1:M
参数(字段)-->参数的值 建立关联1:M
这样设计是否合理.是否有更好的方法
2.产品类别明细表:类别ID,参数名称,参数值
3.产品类别关系表:ID,父类别ID,子类别ID
CID PCID ClassName
编号(pk) 上级编号 分类名称
2.产品类别明细表:类别ID,参数名称,参数值
3.产品类别关系表:ID,父类别ID,子类别ID
表二不是很容易解决参数不同的问题吗?
例如:类别ID,参数名称,参数值
洗衣机 容量 4升
电视机 尺寸 14寸
洗衣机 容量 int 4 升
电视机 尺寸 int 14 寸
电视机 预选台数 int 14 个
电视机 传输方式 char xxxxx null
如果考虑实现的方便 可以把参数类型 编号
电视机 传输方式 char xxxxx null 同一个字段有两种类型,另外这种方法会造成大量数据冗余我的想法是
参数(字段)表
类型ID 参数名称 参数(字段)ID(自动增量) 单位
电视机类型ID 尺寸 1 寸
电视机类型ID 屏幕类型 2 -
洗衣机类型ID 容量 3 升
洗衣机类型ID 洗衣方式 4 -参数表:
产品ID 参数(字段)ID 参数值(描述) 参数值(数字)
电视机ID 1 - 17
电视机ID 2 液晶 -
---------------------------------
1 A 0
2 B 2
3 C 2
4 D 3
5 E 3
6 F 1
7 G 2
8 H 3
9 I 1
10 J 4
11 K 4
12 L 2
你认为可不可以是无限级?
1 电视机,洗衣机,自然是使用ID的
2 电视机 预选台数 int 14 个
电视机 传输方式 char xxxxx null 同一个字段有两种类型,
你看错了,列[参数类型]的数据类型是char, 【同一个字段有两种类型】,下边都是数据 (int,char)都是数据。
3 你的解决方案和我的解决方案都是两个字段,你是把不同的类型的值放在不同的列。我是把值的类型保存下来,我能够处理很多的类型。你只能处理一种类型建立一个列
还有 处理业务逻辑时 不同的类型我的处理逻辑是一致的
你的方法应该会造成大量的数据冗余..例如,有10000台电视机产品,那么参数表里面的就必须出来 N个参数*10000而且参数值(即可以为任意类型,这里应该为navchar),这样无法对某一个参数在sql查询的时候进行排序...不过.处理业务逻辑时 不同的类型我的处理逻辑是一致..应该是可取的..谢谢..明天结贴吧..
id,pid,name,other fieldstb_goods
id,class_id,name,other fieldstb_attributes
id,goods_id,name,value如:电子电器 下有 电器 下有 家电 下有 电视机 下有 长虹Axxx ,它有 重量,尺寸,价格 三个属性.
书 下有 电子书 下有 科技类 下有 电脑类 下有 编程类 下有 web开发类 下有 asp.net技术内幕,它有 页数,纸张,价格,出版社,作者 五个属性
(以上只是举例,说明级别及具体商品属性不同)则数据为:
tb_class
id pid name
1 0 电子电器
2 1 电器
3 2 家电
4 3 电视机
5 0 书
6 5 电子书
7 6 科技类
8 7 电脑类
9 8 编程类
10 9 web开发类tb_goods
id class_id name
1 4 长虹Axxx
2 10 asp.net技术内幕tb_attributes
id goods_id name value
1 1 重量 20KG
2 1 尺寸 25'
3 1 价格 980
4 2 页数 560
5 2 纸张 16开
6 2 价格 98
7 2 出版社 xx出版社
8 2 作者 不知道
这种设计是最灵活的设计.
但是任何做法都有利弊, 查询时比较麻烦,而且效率也差,特别是统计或做列表时.
如果分类表,加上路径表示法, 那么读查询会提高很多, 不过增加了磁盘开销, 还有个副作用是,如果更新比较频繁,也比较麻烦.
应该在原型的基础上,根具自己的实际情况,适当调整.
需要这个培训视频的朋友请联系 QQ 936652114