类似于淘宝的不同产品类别,会出现不同的属性列表,这些属性可以由自己增加维护,这样的数据库结构应该怎么设计.比如说现在有鞋子类的属性有尺码,颜色.后面需要可能会增加面料,是否休闲等属性.在不加表字段的情况下,实现这样的需求,应该怎么设计? 设计方式可能存在哪些问题,查询、删除、修改等操作和存储过程等实现有没有问题,怎么解决?

解决方案 »

  1.   

    设计一个商品的Attribute表
    create Attribute
    (
    ProductID int,
    Attribute Nvarchar(200),
    Description Nvarchar(1000)
    )用的时候把这个表和你的产品表关联一下然后用动态SQL Pivot一下就行了。
      

  2.   

    设计一个商品的Attribute表
    create Attribute
    (
    ProductID int,
    Attribute Nvarchar(200),)用的时候把这个表和你的产品表关联一下然后用动态SQL Pivot一下就行了。说的很好
      

  3.   

    设计一个商品的Attribute表
    create Attribute
    (
    ProductID int,
    Attribute Nvarchar(200),)用的时候把这个表和你的产品表关联一下然后用动态SQL Pivot一下就行了。说的很好
      

  4.   

    设计一个商品的Attribute表
    create Attribute
    (
    ProductID int,
    Attribute Nvarchar(200),)用的时候把这个表和你的产品表关联一下然后用动态SQL Pivot一下就行了。说的很好
      

  5.   

    --用存储过程,定义粗略为下:
    --1 声明两个自定义存放字段的变量 
    CREATE PROCEDURE usp_Sample
    @UDFCodes nvarchar(max) = NULL, 
    @UDFDatas nvarchar(max) = NULL...
    --2 定义一个临时表和主表进行关联
    CREATE TABLE #tbl_Sample(UDFCode nvarchar(20),UDFData nvarchar(2000))--3 遍历上述变量 网临时表里存入数据,但是主要和主要要关联上.... ... 
      

  6.   

    我认为:
    淘宝用的数据库从根本上就与我们的数据库不一样。淘宝用的是列存储优先的NoSQL数据库,这种数据库对列扩展支持的很好,可以很容易的新增列,可以同一个的数据库,但每行的列不同。
    用传统数据库去做这个设计就会很困难,传统数据库做出来的那些关联N张表的,很明显会导致数据库服务器性能大幅下降。
    如果用列存储优先的数据库,那这个设计就比较容易实现了。
      

  7.   

    create attribute
    ([product][id][int] not null,
    [attribute][nvarchar][200] not null,
    )