[电子商务网站设计] 之 分类目录

分类目录作为电子商务网站的重要入口之一,设计好坏直接关系到网站的性能。

网上大多数相关的例子都采用树(森林)状结构。
Id: 分类编号,自增整数。
Name: 分类名称
ParentId: 父分类编号

这种经典结构却并不适合电子商务网站使用,我们分析一下分类目录的使用场景。

1. 分类导航。
2. 分类搜索。
3. 分类统计。

问题就出在分类搜索和分类统计上,这两个需求都需要检索分类及其所有层次的子分类,采用树(森林)状结构时不可避免需要进行递归操作,那么对于操作性能自然有所影响,且分类搜索的使用量非常巨大,因此也会拖累整个网站的性能。

那么合理的分类目录应该采取什么样的结构呢?看一个例子。
A01 电视
  A01B01 普通电视
  A01B02 液晶电视
  A01B03 平板电视
A02 电脑
  A02B01 台式机
  A02B02 笔记本
    A02B02C01 IBM
    A02B02C02 Lenovo
    A02B02C03 AUSU
A03 家电
...

这样的结构除了可以清晰地表达分类目录之间的父子关系,最重要的是可以避免递归操作,我们使用 "like 'A01*'" 即可完成"电视"及其所有子类的搜索和统计。当然这种分类结构不能做到树(森林)状结构的无限层次,但大多数网站也不可能有那么多的分类内容,每级 99 个分类容量足以满足要求。

另外此种编码方式对于日常维护也有好处,我们不需要记住一堆不相干的数字,也避免了数据迁移时自增编号变化带来的麻烦。
posted @ 2008-09-30 09:03  wenanry  阅读(552)  评论(0编辑  收藏  举报