我最近在开发过程中发现一个问题,有关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一条商品
-- 以上是我自己想向中的数据库设计,不知可行不可行 ,您能提供解决方案么