首页 新闻 会员 周边

商品多级分类,数据库设计

0
悬赏园豆:10 [已解决问题] 解决于 2009-05-27 15:55

如题,在商城系统开发时遇到商品的多级分类,为增强扩展性,子类可以任意添加,不知此类问题数据库如何设计更为科学,请高手指点!

梦寻千里的主页 梦寻千里 | 菜鸟二级 | 园豆:250
提问于:2009-05-23 17:21
< >
分享
最佳答案
0

试试我的答案,如果哪里不好,请指出来,我也是初学者。

我的办法很简单,就是再类别表加一个父类型编号,也就是所有的自连接,以商品类型为例,数据表如下:
Create Table ProductType
(
  ID int identity(1,1) primary key,
  Name varchar(10) not null unique,
  --引用自身表的ID作为外键
  fatherTypeID int null foreign key references ProductType(ID)
)

这样,当你添加某个商品类型时,如果是最高级别的类型,则将fatherTypeID置空,如果存在父类型,则引用父类的ID,如食品理论上应该是父类,酒类应该是食品的一个子类,而红酒类又是酒类的一个子类。假设食品类的ID是1,酒类的ID是2,红酒类的ID是3,那么数据库中的记录应该为
ID  Name  fatherTypeID
1    食品    NULL
2    酒类    1
3    红酒    2

不知道这样说楼主能不能看得懂?另外,查询时候需要用自身连接。

欧阳小风 | 菜鸟二级 |园豆:235 | 2009-05-23 18:52
自连接怎么插入第一条数据呢?
wwwhuang | 园豆:200 (初学一级) | 2011-04-06 21:15

你这个第一条数据

1  食品  NULL    

是怎么插入的????

难道你还有一条记录是这样的

NULL   未知  NULL

int 类型还可以是NULL????

小草1434 | 园豆:200 (初学一级) | 2015-05-15 10:57
其他回答(3)
1

表结构为:  id(编号)   name(分类名)  parentID(父类编号) 简单举例如下:

id    name      parentID

1     饮料            0(为0表示第一大类)

2     水果            0

3      百事可乐     1

4      雪碧           1

5      苹果     2

6      香蕉           2

这样设计的好处是:可以无限极分类。。。。便于维护和统一管理。

以上仅供参考。。如有疑问请联系我。。

Jaryleely | 园豆:367 (菜鸟二级) | 2009-05-23 19:20
0

和 ASP.NET 的 TreeView 控件的生成一样的原理。

WizardWu | 园豆:1402 (小虾三级) | 2009-05-24 08:37
0

我赞成jaryleely 的做法 我就是这么解决的

┅☆伈隨風飛 | 园豆:190 (初学一级) | 2009-05-24 18:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册