如何设计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一条商品
--以上是我自己想向中的数据库设计,不知可行不可行,您能提供解决方案么


你可能感兴趣的:(mysql)