举个例子, 现在商场有电视机, 洗衣粉,电脑等商品出售.
电视机的属性有: 屏幕尺寸, 产地, 类型(如液晶,等离子,传统等), 品牌, 型号, 售价...
洗衣粉的属性有: 品牌, 包装(桶装,袋装等), 重量, 产地, 售价...
电脑的属性有: 品牌, 型号, CPU, 内存, 显示器类型, 售价...象这样类型的产品可能很多很多, 有些属性可以通用(如售价), 有些就各自不同了.而且一个商场, 象这样的商品很多很多, 而且随时有可能增加新商品, 可能又有未预料的属性.我想问问这种情况大家如何处理的?
如果设每个商品一个表, 那如果增加每增加一个新商品岂不就要加一次表?(包括主从表似乎也一样)
如果设一个总表, 似乎就更不行了?
电视机的属性有: 屏幕尺寸, 产地, 类型(如液晶,等离子,传统等), 品牌, 型号, 售价...
洗衣粉的属性有: 品牌, 包装(桶装,袋装等), 重量, 产地, 售价...
电脑的属性有: 品牌, 型号, CPU, 内存, 显示器类型, 售价...象这样类型的产品可能很多很多, 有些属性可以通用(如售价), 有些就各自不同了.而且一个商场, 象这样的商品很多很多, 而且随时有可能增加新商品, 可能又有未预料的属性.我想问问这种情况大家如何处理的?
如果设每个商品一个表, 那如果增加每增加一个新商品岂不就要加一次表?(包括主从表似乎也一样)
如果设一个总表, 似乎就更不行了?
這個有個組合的概念, 一些普通的 進銷存 軟件中, 都會處理這個, 看看別人是怎麼做的
这样可以吗?
主表:
ProductID ProductType
000001 电视机
000002 洗衣粉
000003 电脑
............电视机从表:
TypeID ScreenSize ProdArea ScreenType Brand Model Price
000001 29 QingDao LCD Hair H1080 10000
组合是怎么实现呢? 能说说吗?
是不是用什么分隔符分割各属性呢?这样的话用SQL语句查找起来方便吗?
下例假定 tableA 包含 colB 和属于 sql_variant 类型的 colA,检索有关值为 46279.1 的 colA(其中 colB =1689)的 SQL_VARIANT_PROPERTY 信息。CREATE TABLE tableA(colA sql_variant, colB int)
INSERT INTO tableA values ( cast (46279.1 as decimal(8,2)), 1689)
SELECT SQL_VARIANT_PROPERTY(colA,'BaseType'),
SQL_VARIANT_PROPERTY(colA,'Precision'),
SQL_VARIANT_PROPERTY(colA,'Scale')
FROM tableA
WHERE colB = 1689
另外,对于象paradox这种数据库,是不是没有variant类型呢?
无非是价钱。当然还有其他信息,不过都是千变万化的。放一个TEXT字段,把产品信息写进去就可以了。把产品归类,例如电视机属于家电,电冰箱也是家电,每个牌子都对应唯一的ID。
洗衣粉的属性有: 品牌, 包装(桶装,袋装等), 重量, 产地, 售价...
电脑的属性有: 品牌, 型号, CPU, 内存, 显示器类型, 售价...好多属性可以放在一起,比如:电脑属性没有必要列的太详细,把一些无关信息放在一个MEMO就行了。
一个表记录树结构:(-1代表无父节点)
Parent_id self_id
------------
-1 0 (即根)
0 1
0 2
1 3
2 4(假设表电视机)
2 5(假设表电脑)
.............另一个作为主表,预留足够的列数来记录所有商品属性
id(表1中id的fk) 型号 品牌 售价 产地 field1 fild2 field3 .......fieldN
----------------------------------------------------------------------------------------
4 2909 海尔 10000 青岛 等离子 true 2005.1
5 510-M DELL 5000 美国 赛扬2.4G 15'液晶 256M
..................最后一个表用来记录表2中的属性对应的含义和中文称呼(对应含义即该字段实际字段名)
id(同上) 字段名 含义 中文称呼
-----------------------------------------------
4 field1 TV_Type 屏幕类型
4 field2 P_i_P 是否带画中画
....
5 field1 CPU_Type CPU类型
5 filed2 Moni_Type 显示屏类型
....
1。表1,同上帖
2。表2:
id(fk) 属性名 属性值
-------------
4 型号 2909
4 品牌 海尔
4 售价 10000
..........
5 品牌 DELL
5 CPU类型 赛扬2.4G
..........