如何设计sql数据库,以实现商品自定义属性


我最近在开发过程中发现一个问题,有关sql数据库设计的,这个问题有点典型,可是我一直弄不明白。
这是一个关于自定义商品属性字段的问题。
我们在定义goods(商品)表的时候,我们已经定义了一些属性字段,同时,肯定有些 属性需要用户自定义,这该怎么实现呢。

以下是我自己设计的数据表


-- 商品的基本信息表
CREATE   TABLE   [ GOODS ]  (
    
[ ID ]   [ BIGINT ]   IDENTITY  ( 1 1 NOT   NULL  ,
    
[ CLASS ]   [ VARCHAR ]   NULL  ,
    
[ GOODSNAME ]   [ VARCHAR ]  ( 50 ) COLLATE CHINESE_PRC_CI_AS  NULL  ,
    
[ CONTENT ]   [ TEXT ]  COLLATE CHINESE_PRC_CI_AS  NULL  ,
    
CONSTRAINT   [ PK_GOODS ]   PRIMARY   KEY    CLUSTERED  
    (
        
[ ID ]
    )  
ON   [ PRIMARY ]  
ON   [ PRIMARY ]  TEXTIMAGE_ON  [ PRIMARY ]
GO

-- 商品扩展属性
CREATE   TABLE   [ GOODSEXTPROPERTY ]  (
    
[ ID ]   [ BIGINT ]   IDENTITY  ( 1 1 NOT   NULL  ,
    
[ CLASS ]   [ VARCHAR ]   NULL  , -- 此CLASS同[GOODS]表CLASS一致,表示同一分类,每一分类下的扩展属性可能会不同
     [ TYPE ]   [ VARCHAR ]  ( 50 ) COLLATE CHINESE_PRC_CI_AS  NULL  ,
    
[ TEXT ]   [ VARCHAR ]  ( 50 ) COLLATE CHINESE_PRC_CI_AS  NULL  ,
    
[ REMARK ]   [ VARCHAR ]  ( 500 ) COLLATE CHINESE_PRC_CI_AS  NULL  ,
    
CONSTRAINT   [ PK_GOODSEXTPROPERTY ]   PRIMARY   KEY    CLUSTERED  
    (
        
[ ID ]
    )  
ON   [ PRIMARY ]  
ON   [ PRIMARY ]
GO

-- 商品扩展属性对应的值
CREATE   TABLE   [ GOODSEXTPROPERTYVALUE ]  (
    
[ ID ]   [ BIGINT ]   IDENTITY  ( 1 1 NOT   NULL  ,
    
[ GOODSID ]   [ BIGINT ]   NULL  ,
    
[ PROPERTYID ]   [ BIGINT ]   NULL  ,
    
[ VALUES ]   [ VARCHAR ]  ( 5000 ) COLLATE CHINESE_PRC_CI_AS  NULL  ,
    
CONSTRAINT   [ PK_GOODSEXTPROPERTYVALUE ]   PRIMARY   KEY    CLUSTERED  
    (
        
[ ID ]
    )  
ON   [ PRIMARY ]  
ON   [ PRIMARY ]
GO

INSERT   INTO   [ GOODS ]   VALUES ( ' 001 ' , ' 电脑 ' , ' 我是描述 ' )
INSERT   INTO   [ GOODS ]   VALUES ( ' 001 ' , ' MP3 ' , ' 我是描述 ' )
INSERT   INTO   [ GOODS ]   VALUES ( ' 002 ' , ' 内衣 ' , ' 我是描述 ' )
INSERT   INTO   [ GOODS ]   VALUES ( ' 003 ' , ' 袜子 ' , ' 我是描述 ' )

GO

INSERT   INTO   [ GOODSEXTPROPERTY ]   VALUES ( ' 001 ' , ' INT ' , ' PRICE ' , ' 价格 ' )
INSERT   INTO   [ GOODSEXTPROPERTY ]   VALUES ( ' 001 ' , ' INT ' , ' MEMERY ' , ' 内存容量 ' )
INSERT   INTO   [ GOODSEXTPROPERTY ]   VALUES ( ' 002 ' , ' INT ' , ' PRICE ' , ' 价格 ' )
INSERT   INTO   [ GOODSEXTPROPERTY ]   VALUES ( ' 002 ' , ' VARCHAR ' , ' COLOR ' , ' 颜色 ' )

GO

INSERT   INTO   [ GOODSEXTPROPERTYVALUE ]   VALUES ( 1 , 1 , ' 3000 ' )
INSERT   INTO   [ GOODSEXTPROPERTYVALUE ]   VALUES ( 1 , 2 , ' 512 ' )
INSERT   INTO   [ GOODSEXTPROPERTYVALUE ]   VALUES ( 2 , 2 , ' 256 ' )
INSERT   INTO   [ GOODSEXTPROPERTYVALUE ]   VALUES ( 3 , 3 , ' 100 ' )
INSERT   INTO   [ GOODSEXTPROPERTYVALUE ]   VALUES ( 3 , 4 , ' RED ' )
INSERT   INTO   [ GOODSEXTPROPERTYVALUE ]   VALUES ( 4 , 4 , ' RED ' )
GO


-- 现在的问题是,如何用SQL语句 SELECT一条,SELECT多条 ,UPDATE一条商品
--
以上是我自己想向中的数据库设计,不知可行不可行 ,您能提供解决方案么

 

转载于:https://www.cnblogs.com/eycbest/archive/2009/06/10/1500204.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值