在做软件是,碰上这个问题,要把一个商店的分类用树形来表示。
商品分类应该是无限子类划分的,怎样设计好一些。用数据库还是用XML。
由于以前搞设计,编程方面较生了,.NET也则开始学,觉得还是用数据库比较熟悉些。由于以前没这方面经验,所以对数据库设计感到比较辣手。
想了很多,比如链表,用一个Parent(父关系)、Child(子链接),后来舍弃了Child,就用Parent,只认父亲,于是设计数据库格式如下:
表名:Sort
字段:SortID(主键,自增长)、ParentID(父类ID号)、SortName(名称)、IsEnd(是否为最终类,因设计时考虑最终类下不能再分,最终类下只能具体商品。相反不是最终类下,只能再设类别,而不能下设具体商品)
数据库建好了,这是最简结构。现在说明一下库的使用方法。
Sort表最重要的字段就是ParentID,用于链接分类的关系。比如家族,你只要认准你父亲,而不必认爷爷,爷爷是父亲认的,即你-->父亲-->爷爷。只经认准各自的父亲(parent),这条链就链在一起了。再进一步,爷爷可以有兄弟,但这不是你考虑的,只要认得祖宗,而不必顾及傍支(即爷爷兄弟下的后代),傍支是别人考虑的事。
再说到数据库了,最顶级的类,ParentID = 0,说明没有父类;
如果一个类,它的父类是2号,则ParentID = 2;
以下是数据库的一张截图,可以看一下表的结构
图片如下: