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


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

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


--商品的基本信息表
CREATE TABLE [GOODS] (
    
[ID] [BIGINT] IDENTITY (11NOT 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 (11NOT 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 (11NOT 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一条商品
--
以上是我自己想向中的数据库设计,不知可行不可行,您能提供解决方案么

 

posted @ 2009-06-10 10:22  二月草  阅读(4124)  评论(3)    收藏  举报