锁定老帖子 主题:复杂商品分类的表如何建立?
精华帖 (0) :: 良好帖 (2) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-10-10
1.每类商品有无限级分类 2.每个商品可能会有交叉分类 3.每类商品的扩展属性不一样 比如: 夹克的扩展属性为 款式: 拉链夹克 风格: 休闲 品牌: other/其它 适合季节: 春秋 尺码: M L 颜色: 其它颜色 质地: 纯棉 主板的扩展属性为 品牌: 微星/MSI 类型: Socket478 芯片组: Intel 845 平台类型: Intel平台 宝贝成色: 8成新 这些扩展属性都会动态的变化 那么问题来了: 1.全文搜索如何合理建立? 2.可能后台扩展属性表是否需要动态建立? 3.如果单件商品属于交叉分类的话,查询结果记录重复是否需要? 4.高效的无限级分类算法大家可否指点一二,这个困惑了我很久了? 不求完整解决,给个思路也成 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-10-11
基于一点:
商品表是基础表或维度表,不能允许“动态变化”。 1.每类商品有无限级分类 >>不需要一劳永逸的解决,有新分类、子类根据需要可建新表。 2.每个商品可能会有交叉分类 >>普通问题,没甚特殊。 3.每类商品的扩展属性不一样 >>扩展属性单独建子表,大不了几百个子表(实际很难有这么多子表),比硬揉在一起看着恶心好。 1.全文搜索如何合理建立? >> 也没啥特殊。 2.可能后台扩展属性表是否需要动态建立? >>不需要,最好不要。 3.如果单件商品属于交叉分类的话,查询结果记录重复是否需要? >>随你。 4.高效的无限级分类算法大家可否指点一二,这个困惑了我很久了? >>说道底困扰你的就是“无限级分类算法”,干嘛非要“算法无限级”,DBA就能保证无限级。 如果更自动化一点,这样的情况可在程序中结合一组配置文件,起到这样的作用: 定义系统中的相关表,表的DDL语句,应用初始化的时候检测表是否存在,如不存在则创建之,这样需要新表时就可以只修改配置文件。 其它搜索等需要操作表的功能,也可用配置文件如法炮制。 另外,除了表,还可用视图可以分担职责,这样减轻表设计的压力。 |
|
返回顶楼 | |
发表时间:2006-10-11
zww80216 写道 复杂商品的分类,类似淘宝的分类
1.每类商品有无限级分类 2.每个商品可能会有交叉分类 3.每类商品的扩展属性不一样 比如: 夹克的扩展属性为 款式: 拉链夹克 风格: 休闲 品牌: other/其它 适合季节: 春秋 尺码: M L 颜色: 其它颜色 质地: 纯棉 主板的扩展属性为 品牌: 微星/MSI 类型: Socket478 芯片组: Intel 845 平台类型: Intel平台 宝贝成色: 8成新 这些扩展属性都会动态的变化 那么问题来了: 1.全文搜索如何合理建立? 2.可能后台扩展属性表是否需要动态建立? 3.如果单件商品属于交叉分类的话,查询结果记录重复是否需要? 4.高效的无限级分类算法大家可否指点一二,这个困惑了我很久了? 不求完整解决,给个思路也成 每个商品都是一个xml文件 每个xml文件有一个ID 每个xml文件可以采用这样的结构 <xml> <名称/> <属性/> <属性/> ...... </xml> 当检索商品的时候 比如用Socket478芯片组检索 就检索出所有含有Socket478芯片组属性节点的xml文件. 用一个xql语句就可以搞定. 返回的结果是xml文件 可以用xsl进行处理 然后用css显示 |
|
返回顶楼 | |
发表时间:2006-10-12
这类问题(无限级别分类,可以交叉分类)很难。 正是现代 tag,分类时代的热点问题。我也考虑调查了很久。 如果解决得好,就可以被收购了。 xml 解决起来确实比 relation table 容易一些。xml全文检索也比较容易做。 我想,winterwolf会跳出来,终于等到了。:D 不过,xml也有一些限制。如果能有一种专门描述这类问题的数据结构就好了。 我想到过几种数据结构。不过都没有想透。 Multiple Key Hashmap。多维数组。等。 |
|
返回顶楼 | |
发表时间:2006-10-12
xml确实是一种解决的办法,tianxinet的子表方法有点繁琐了,扩展属性有很多表也带来了维护的困难性了。。如果像淘宝的商品分类那样的话,你的子表数量是很惊人的。。。。
继续关注中 |
|
返回顶楼 | |
发表时间:2006-10-12
buaawhl 写道 这类问题(无限级别分类,可以交叉分类)很难。 正是现代 tag,分类时代的热点问题。我也考虑调查了很久。 如果解决得好,就可以被收购了。 xml 解决起来确实比 relation table 容易一些。xml全文检索也比较容易做。 我想,winterwolf会跳出来,终于等到了。:D 不过,xml也有一些限制。如果能有一种专门描述这类问题的数据结构就好了。 我想到过几种数据结构。不过都没有想透。 Multiple Key Hashmap。多维数组。等。 xml没有什么限制 上面的方案只是为了说明问题 具体应用具体分析. |
|
返回顶楼 | |
发表时间:2006-10-12
XML是一个树形结构,不能自然地表示图。
如果一个Node属于多个分类(是属于这个分类,而不是拥有这个属性)。就不容易表达了。 这方面,内存对象数据库有一定优势。 |
|
返回顶楼 | |
发表时间:2006-10-12
zww80216 写道 xml确实是一种解决的办法,tianxinet的子表方法有点繁琐了,扩展属性有很多表也带来了维护的困难性了。。如果像淘宝的商品分类那样的话,你的子表数量是很惊人的。。。。
继续关注中 淘宝网的搜索? 那个和分类没关系吧? 好像只是对关键字段进行文字匹配 然后返回记录 |
|
返回顶楼 | |
发表时间:2006-10-12
buaawhl 写道 XML是一个树形结构,不能自然地表示图。
如果一个Node属于多个分类(是属于这个分类,而不是拥有这个属性)。就不容易表达了。 这方面,内存对象数据库有一定优势。 噢其实也是可以的. 任何节点都可以有子节点 子节点可以记录任何信息 不限于分类和属性. |
|
返回顶楼 | |
发表时间:2006-10-12
winterwolf 写道 buaawhl 写道 XML是一个树形结构,不能自然地表示图。
如果一个Node属于多个分类(是属于这个分类,而不是拥有这个属性)。就不容易表达了。 这方面,内存对象数据库有一定优势。 噢其实也是可以的. 任何节点都可以有子节点 子节点可以记录任何信息 不限于分类和属性. 是可以记录一个ID。这个ID可以找到对应Node。 不过,这个就和 Relational Table 的做法一样了。Relational Table 也可以这么表达 tree / graph. 只是说,这种做法不是那么直观和直接。 XML 对于 Relational Table 的优势,就是可以直接嵌入复合属性数据。在表达Graph方面,这个优势就不明显了。 |
|
返回顶楼 | |