关于数据库设计的一个问题

来源:百度知道 编辑:UC知道 时间:2024/09/22 03:16:27
我在SQL server 2005中设计一个产品表, 由于产品的品目比较多, 所以数据相对庞大, 遇到问题如下:

同一个产品名称, 有不同的包装规格, 比如: "奶粉", 存在包装:100G,250G,500G,1KG,5KG.

而到了下一个产品名称, 又对应很多包装规格, 比如: "牛奶", 存在包装: 100ML,250ML,355ML,500ML,750ML,1L.

..........

每种产品都如此, 但包装规格又不尽相同, 有以"克"为标识的, 有以"毫升"标识的, 有以"袋"标识的.....

数据库的同一行中还有很多其他的字段(如:产地,品质,批号,日期等), 如果每种包装规格的都单独存在于一行, 那么数据库本身应该会非常庞大, 而且影响查询速度, 请高手指点迷津, 不胜感激...
下面的回答中似乎同一个产品还是要做好多行, 各位的意思我是明白的, 但无法真正解决我的问题, 我的意思是在同一行中, 解决同一个产品名称对应的多种包装规格, 以及每种包装规格对应的价格.

对产品、包装方式、单位、包装单位数量分开描述就可以
奶粉、筒装、克、1000
奶粉、袋装、克、200
牛奶、筒装、克、1000
牛奶、袋装、克、200
另外你可以对包装方式和单位代码化,这样数据量不会很大

产品表 产品ID(主键) 产品名 规格 价格 库存 等等

只能一种规格一行吧,毕竟价格 库存数量 日期都取决于产品和规格吧。弄个产品ID做主键,只要不是几百万条,速度应该还过得去
---------------------------------------------------------------
一定要合一起,只能分两张表了。
产品表 产品ID(主键) 产品名 产地
产品规格表 产品ID 规格(复合主键) 价格 数量

这样产品规格表的数据量就大了,查询价格 数量时的速度比原先稍微慢点,查询产地的速度倒是快很多,看你哪个属性的查询频率高了

楼上的方法不错
比较好
因为一般包装规格用来显示
不会用来作为查询关键字
这样做的话就实现了功能,又简化了数据库
以前也用过类似的方法

两个字段

计量单位:存放,克,袋,ML
计量数量:100 1 50 之类的。

把产品的多种包装规格用这样的格式存在数据库里
100G|250G|500G|1KG|5KG
"|"符号是分割符号,你可以选择别的符号
再在前台显示的时候这样实现:

包装=rs("包装")
if 包装<>"" then
str_bz=split(包装,"|") '把[包装]数组化
Response.Write "<select name=Parameter >" '这里用的是下拉表单项主要是方便提交订单表单的,如果之是要显示,你也可以用别的显示方式
for i=0 to Ub