首页 新闻 会员 周边 捐助

求高人教哥好的购物网设计,特别是商品分类上

-1
悬赏园豆:100 [已解决问题] 解决于 2011-11-24 01:01

觉得现在知道的不是很满意,求大侠给教个,

   比如商品分类表的父子关系,

      我现在用的 100000000,100001000 , 100001001 

   因为是分的三级,所以以3位为一级,根据父类查询子类时用like ‘100%’ ,like '100001%'

             但这样级数就太死了,本来想过用一种树形结构,叫什么忘了,请理解,但维护性太难,而且不会操作,操作一个所有的都得动,要是一个出问题,整个分类就完了,所以不敢用

    求大侠们救救虾米我把,>_<

问题补充: 不好意思,打错别字了,不会操作 ---》不好操作,
走路没声的主页 走路没声 | 初学一级 | 园豆:87
提问于:2011-06-18 16:15
< >
分享
最佳答案
1

老兄,ID,Name, ParentID,Level,三个字段就可以描述树形结构了。其他业务信息可以额外添加。这四个是主要的。我看你的问题是想快速查询而已。

如果用Oracle,可以参考以下示例:

TB_ORGAN表定义:
ORG_ID       (节点ID)
ORG_NAME     (节点名称)
ORG_PARENTID (父节点ID)
ORG_LEVEL    (节点级别)

1.根据子类查其父类:

根据某个子节点的ID,选择其某个级别(例如Lev001)的父节点的SQL脚本:

SELECT ORG_NAME from TB_ORGAN WHERE ORG_LEVEL = 'Lev001' CONNECT BY ORG_ID = PRIOR ORG_PARENTID START WITH ORG_ID = '某个子节点的ID' AND ROWNUM = 1

2.根据父类查其子类:

SELECT ORG_ID, ORG_NAME, ORG_PARENTID from TB_ORGAN CONNECT BY ORG_PARENTID = PRIOR ORG_ID START WITH ORG_ID = '某个父节点ID'

上边这条语句,你也可以增加where条件,增加子节点级别,这样可以只查询某个级别的子节点。

好了,兄弟,这样的设计可以彻底解决树形结构的查询问题了吧。至于你想把Level如何定义,看你自己需求了,可以定义一些特征,这样加快查询速度。呵呵

收获园豆:100
InFuture | 菜鸟二级 |园豆:325 | 2011-06-20 10:44
谢谢,说实话oracle没太看明白...,
确实是为了实现快速查询,不过兄弟你这个还是不太符合我的需要
就像我问题中提到的用 100 000 000 的形式可以实现快速,查询, 并且,能在商品表根据父节点直接查询所属的的子类的商品,不需先查询它的节点,最大的问题是节点级数无法动态改变,所以想找一种好的解决办法
走路没声 | 园豆:87 (初学一级) | 2011-06-20 10:56
你的想法我明白,关键是如果你要把某些父节点和某些子节点建立特定的关系,这样肯定可以。如果要泛化,则必须用上边我说的这种标准模式。你可以加多一些辅助字段,例如备注。比如父节点的备注为A,子节点的备注为A,则我要查这个父节点的所有子节点,就不用遍历了,直接找关键字A即可。不就是这个意思吗。哈哈
InFuture | 园豆:325 (菜鸟二级) | 2011-06-20 12:46
所以,如果你想要特定的一些父节点和子节点建立关系,则可以考虑增加辅助字段方式。也就是增加更多关联信息,这样就可以在通用查询之外建立一些特定查询。而备注可以自己定义规则,你说的100000000,100001000 , 100001001这种还是太原始。要是我,干脆用中文描述。比如父节点备注:美女,子节点是美女的在备注里边标注:美女。则查询就变成了Select * from treeData where note like '%美女%'
InFuture | 园豆:325 (菜鸟二级) | 2011-06-20 12:50
开发系统,最重要的还是搞清楚最终需求,最终用户想要的效果。具体实现的方式五花八门,没有必要拘泥于定式。而且,除了考虑功能以外还要考虑效率。这个效率除了程序执行效率以外,还有开发效率。不要浪费太多时间在纠结上。
InFuture | 园豆:325 (菜鸟二级) | 2011-06-20 12:52
问题是子节点不只一级
走路没声 | 园豆:87 (初学一级) | 2011-06-29 10:08
其他回答(4)
0

id,parentid,name

Virus-BeautyCode | 园豆:1619 (小虾三级) | 2011-06-20 09:07
我是想问id ,parentid 用什么形式去关联,谢谢
支持(0) 反对(0) 走路没声 | 园豆:87 (初学一级) | 2011-06-20 09:22
看我下边的回答吧,具体关联形式可以定义在Level字段里边。你爱怎么用都可以。没有Level的话,查父级不方便。当然,有的人喜欢用NodeType,也是一个意思。
支持(0) 反对(0) InFuture | 园豆:325 (菜鸟二级) | 2011-06-20 10:53
0

百度一下广度查询

graymaster | 园豆:7 (初学一级) | 2011-06-20 11:56
0

哥……

迷途小码童 | 园豆:159 (初学一级) | 2011-06-26 16:26
1

哥 你很牛撒 

JCdon | 园豆:2 (初学一级) | 2011-06-29 12:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册