zoukankan      html  css  js  c++  java
  • 转: 利用SQL SERVER2005的XML字段类型实现类似"商品扩展属性"

    今天自己翻了两页自己的BLOG,发现真是越来越懒了,已经好长时间没有写技术相关的日志了,记得刚开始写BLOG的时候还经常写写自己的技术积累的,现在除了发布ZJ-BLOG的程序更新信息外,好像全成了自己生活锁事的流水帐了,真是惭愧呀。。。
            去年刚换的这家公司是一家做网上商城的公司,商城功能目前还比较简单,在我进去接到第一个任务是要加入商城中商品的扩展属性功能,扩展属性功能其实就是这个意思,例如手机和笔记本电脑两种商品,我们可以定义手机类商品有“是否智能机”、“手机制式”、“外观”等几个特有属性,而笔记本电脑类商品有“尺寸”、“CUP类别”、“是否独立显卡”等几个特有属性,网站的用户可以利用这些扩展属性对同一类别下的商品进行方便的筛选查询,此功能相信大家在上一些网站时都已经用过了,比如“中关村在线”的商品详细查询功能。在设计此功能时,我第一次在实践中使用的SQL SERVER2005中新的字段类型:XML。功能上线已经有一个月了,目前来说,效果应该还算理想的(没有经过海量数据测试)。
            先说说表的设计:

    属性定义表(表名:expand)
    字段名字段说明类型
    fid 唯一标识 int(自增)
    fclassId 商品类别ID int
    fexpandName 扩展属性名称 varchar(30)
    forder 排序值 int
    属性选择值定义表(表名:expandItem)
    字段名字段说明类型
    fid 唯一标识 int(自增)
    fexpandId 扩展属性ID int
    fname 选择项名称 varchar(30)
    forder 排序值 int
    商品扩展属性表(表名:productExpand)
    字段名字段说明类型
    fid 唯一标识 int(自增)
    fproductId 商品ID int
    fexpand 商品扩展属性 xml

            头两个表:属性定义表(表名:expand) 和 属性选择值定义表(表名:expandItem) 是各自的商品类别所具有的扩展属性的定义,第一个表:属性定义表(表名:expand),定义了每一种商品类别下的多个扩展属性的名称,是一对多的关系,而由于全部的扩展属性都要控制着从多个选项中选择,所以需要表2:属性选择值定义表(表名:expandItem),来定义每一个扩展属性下的选择项,同样的,也是一种一对多的关系,这两个表相信大家很容易理解的,在此就不废话了。
            本文的重点在于第三个表,就是记录每一个商品的所具备的扩展属性信息的表:商品扩展属性表(表名:productExpand),最后一个字段使用了一个XML字段类型,用它来记录每一个商品的所有的扩展属性信息,比如我们对手机这个类别(假如手机类别ID为1234)以下定义:

    属性定义表(表名:expand)
    唯一标识(fid)商品类别ID(fclassId)扩展属性名称(fexpandName)排序值(forder)
    1 1234 是否智能机 1
    2 1234 手机制式 2
    属性选择值定义表(表名:expandItem)
    唯一标识(fid)扩展属性ID(fexpandId)选择项名称(fname)排序值(forder)
    1 1 1
    2 1 2
    3 2 GSM 1
    4 2 CDMA 2

            数据表示手机类别定义了两个扩展属性:是否智能机(选项:是|否);手机制式(GSM|CDMA)。
            如果我们要将以下数据(N73的扩展属性)存入数据库中:

    商品名称商品ID是否智能机手机制式
    Nokia N73 4321 GSM

            我们需要装扩展属性的信息组合成以下XML格式字符串:

    程序代码:
    <exp>
    <item name="1" value="1" />
    <item name="2" value="3" />
    </exp>
     

            而用SQL:insert into productExpand(fproductId,fexpand) values(4321,'<exp><item name="1" value="1" /><item name="2" value="3" /></exp>')添加到商品扩展属性表(productExpand)中。此时商品扩展属性表(productExpand)的数据如下:

    商品扩展属性表(表名:productExpand)
    唯一标识(fid)商品ID(fproductId)商品扩展属性(fexpand)
    1 4321 <exp>
    <item name="1" value="1" />
    <item name="2" value="3" />
    </exp>

            以上就完成了对于商品扩展属性信息添加,下篇文章将介绍如何通过SQL SERVER2005的函数实现网站用户通过扩展属性来方便的查询商品。

  • 相关阅读:
    医学影像
    阿里云九卿 大数据产业化
    陈海青 阿里
    店铺高频问题主动生成知识点机器 大脑+人脑 知识库
    数据总线和流计算在城市大脑中的应用
    无推荐不APP
    ww
    业务架构
    jd算法大赛 一个user_id只需映射到一个sku_id, 但是一个sku_id能否映射到多个user_id
    短URL DH 密钥交换算法
  • 原文地址:https://www.cnblogs.com/feihusurfer/p/1360483.html
Copyright © 2011-2022 走看看