【表设计】商品属性 问题

csdn94sb 2015-07-23 11:19:59
考虑到不同商品属性间差别比较大,不可能设计到一个商品表中
网上找了半天,找到个看似靠谱的资料--->戳这里
大概结构如下:

商品表 [Product](公共属性)
ProductID ClassID ProductName
1 2 韩版连衣裙

类目表 [class]
ClassID ClassName ParentClassID
1 数码 0
2 服装 0

属性表 [Attribute]
AttrID ClassID AttrName 字段类型 长度 输入类型
1 2 颜色 字符串 50 多选框
2 2 尺码 字符串 50 单选框
3 1 像素 字符串 200 多选框

属性值表 [AttributeValue]
AttrValID AttrID AttrValName
1 1 黄色
2 1 绿色
3 1 黑色
4 1 褐色
5 2 XL
6 2 XXL
7 3 600W
8 3 800w


动态生成 商品_属性表 Product_XXXX(XXXX为类别ID)
[Product]_1 数码表
P1_ID ProductID 像素


[Product]_2 服装表
P2_ID ProductID 颜色 尺码
1 1 黄色 XL
2 1 红色 XXL

..............

缺点就是会多生成一些表

你们这方面的表怎么设计?有没更好的办法?
...全文
121 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cherise_huang 2015-07-23
  • 打赏
  • 举报
回复
还有一个代码类型表(code_type) type_id 编号 type_name 名称 此表中type_id 与code表中type_id对应 code表可存储后缀为ID的字段,这样会大大减少冗余
Cherise_huang 2015-07-23
  • 打赏
  • 举报
回复
对于以上几张表的设计还是有很大的冗余性的,我们可以将其中几个表性质相同的放在一个代码(code)表中 此表中包含以下几个字段 code_id 编号 code 代码 name 名称 type_id 类别
csdn94sb 2015-07-23
  • 打赏
  • 举报
回复
引用 4 楼 Tiger_Zhao 的回复:
在属性表中加个列号ColNo,每个ClasID各自从1开始,表示改属性存放在商品属性表对应的Attr1、Attr2……上
属性表 
AttrID ClassID ColNo AttrName ...
1      2       1     颜色     ...
2      2       2     尺码     ...
3      1       1     像素     ...
只要一个有逐够属性列的表就可以, Attr1、Attr2……存放AttributeValue.AttrValID的值
商品属性表
ID ProductID ClassID Attr1 Attr2 Attr3 Attr4 ...
1  1         2       1    5                      -- 服装1,黄色,XL
2  1         2       2    6                      -- 服装2,绿色,XXL
3  2         1       7    NULL                   -- 数码3,600W
比如属性预留到Attr50,除了属性值最多只有50个的小缺点, 但是性能好啊,50个int只有200字节,所以一条记录也就200多字节,比你原先存字符串快多了。
你的意思是一个表 预留 属性字段,不去生成各种 “商品_属性表”? 这个可以考虑下...
Tiger_Zhao 2015-07-23
  • 打赏
  • 举报
回复
在属性表中加个列号ColNo,每个ClasID各自从1开始,表示改属性存放在商品属性表对应的Attr1、Attr2……上
属性表 
AttrID ClassID ColNo AttrName ...
1 2 1 颜色 ...
2 2 2 尺码 ...
3 1 1 像素 ...


只要一个有逐够属性列的表就可以,
Attr1、Attr2……存放AttributeValue.AttrValID的值
商品属性表
ID ProductID ClassID Attr1 Attr2 Attr3 Attr4 ...
1 1 2 1 5 -- 服装1,黄色,XL
2 1 2 2 6 -- 服装2,绿色,XXL
3 2 1 7 NULL -- 数码3,600W

比如属性预留到Attr50,除了属性值最多只有50个的小缺点,
但是性能好啊,50个int只有200字节,所以一条记录也就200多字节,比你原先存字符串快多了。
csdn94sb 2015-07-23
  • 打赏
  • 举报
回复
引用 1 楼 Cherise_huang 的回复:
对于以上几张表的设计还是有很大的冗余性的,我们可以将其中几个表性质相同的放在一个代码(code)表中 此表中包含以下几个字段 code_id 编号 code 代码 name 名称 type_id 类别
这里要考虑的是属性个数 是动态的..

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧