• 全部
  • .NET Framework
  • ASP
  • Web Services
  • .NET互联网桌面应用
  • VB
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • AppLauncher
  • 问答

网站大规模分类 比较三种分类的数据库设计?分不够再加100!

joinrry 2004-06-20 05:12:59
第一种:4个表 实现四级分类
一级表:ID1,IDName
二级表:ID2,IDname,FID(上一级id)
三级表:ID3,IDname,FID(上一级id)
四级表:ID4,IDname,FID(上一级id)

第二种:用树形结构表实现无限制级分类
表结构:id,fid(上一级id),idname

第三种:用编码的形式将fid和id的信息放在一个表里
用32(4+7+7+7+7)位整数来编码,其中,第一级分类有4位,可以表达16种分类。第二级到第五级分类分别有7位,可以表达128个子分类。
易趣好像就用的是这种方法

我现在有个网站商品种类信息非常多,而且不断变化
请问我用那种方法好一点?

第一种效率我觉得还可以 调整分类也还方便,就是级数固定,有些商品只有两级分类就不好处理了

第二种调整分类 级数变动都很方便,但听说分类达到几千之后效率就比较低了

第三种我没用过 不知道实现起来方便不?

大家帮我比较比较阿

...全文
168 点赞 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
1man 2004-07-12
一般用第二种
回复
第一种没有扩展性
第二种我最喜欢,如果在管理页面中约束好可以解决一切问题,但如果类别的其它属性过多,则另加一张表扩大充属性
第三种扩展性,容易出错,如果要做类别之间特别在大量同一记录之间的计算,有点麻烦了
回复
hikele 2004-07-12
呵呵,我前几天设计用的是第二种,第三种刚刚再这里学习ing :)

又懂了一点,高兴:)
回复
cc65yecunjian 2004-07-12
学习来的!原来以前用的第一种,现在看来不怎么样了!
回复
bccu 2004-07-12
推荐使用第三种,
回复
Alexandria 2004-07-12
第三种的写query查询也比较简单,而且效率不低
回复
CatChen 2004-07-12
一般论坛等都用第二种,但要效率真的足够高,就用第三种。
如果你对效率要求非常高,就先设置好维数和各维上限,然后用第三种做吧。因为Like和Between对于几十万上百万条的数据来说,是有效率差别的。
回复
chrch 2004-07-11
我一般用第二种,效率还不错的
回复
phlNet 2004-07-11
极力推荐第三种,本人所做的系统中大部分使用第三种,第三种的最突出优势莫过于大规模的查询、统计,取模运算相对于其它运算来说,效率极高。
回复
CatChen 2004-07-11
我最不喜欢就是第一种,因为扩展性差,用的表多。

第二种不错,无限级分类,效率也可以。
通常这种表应该多一个Path字段,例如:
ID ParentID Path
1 0 1
2 1 1.2
3 1 1.3
4 3 1.3.4
这样你在搜索某一个类别的所有子类别时可以用Like来匹配,例如你要找出ID=2的类别的子类,先获得它的Path="1.2",然后用Path Like "1.2%"的方式就可以获得它的所有子类。

至于第三种,在算法的角度来说是非常高效的,但他对类别的级数和每一级类别的类别数上限都做了定义,是不能改变的。做个类比吧,我们熟悉的IP格式是000.000.000.000,你可以直接认为是一个四级类别,每级最多有256个类别。同时000.000.000.000也可以转换为一个十位的整数来进行保存,例如你需要找10.128.*.*的所有类别,只需要把10.128.0.0和10.128.255.255转换为对应十位整数,就把10.128.*.*对应类别的范围给找出来了。
在这里,你不一定采用4-7-7-7-7的方式,而可以根据你的需要来定义,而且上限不一定是2的n次方(例如你确定了第一大类只有6类,你可以直接使用6作为上限以节省空间。如果你确实需要该算法,请发信息给我)。
回复
goody9807 2004-07-11
第二种:用树形结构表实现无限制级分类
回复
Tomgus 2004-07-11
第二种好。

第一个有点混乱,第三个扩展性不好。
回复
cnlamar 2004-07-11
如果你的分类不是很容易变动的话可以采用第二种,并加以映射,这样的效率、扩展都不错,缺点是维护性差,比如修改节点的同时,会需要更新映射,这不单麻烦,而且低效
回复
boy119 2004-07-11
我比较喜欢用第二种
回复
相关推荐
发帖
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2004-06-20 05:12
社区公告
暂无公告