日期:2014-05-20  浏览次数:20726 次

难死我了,谁来挑战一下?!
我仔细的描述一下问题

有一个产品列类别列表页,如下结构

                  电脑1,电脑2,电脑3,电脑4,.....电脑9

9种类别的电脑价钱不一样,

                  电视1,电视2,电视3,电视4,电视5,,,,,,,电视9

9种类别的电视价钱不一样,

                  冰箱1,冰箱2,冰箱3,冰箱4,,,,,,,,,,,,,,,冰箱9

9种类别冰箱价钱不一样,

………………………………

                N1,N2,N3,N4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,N9

9种N价钱不一样,


做了一个页面,上面列表出了电脑1-9,电视1-9,冰箱1-9,每个产品前都有一个复选框,打勾表示购买,提交存储到数据库,

数据库怎么设计最合理,其中已经存在一些表,分别为电脑表,电视表,冰箱表,…………N表,客户表,

现在要设计一个订单表,这个订单表怎么设计????

一开始时的设计:
客户   |   产品名称   |   产品数量   |   产品单价   |   总计金额
kkun   |   电脑3         |   1                 |   5400           |   5400
kkun   |   冰箱4         |   1                 |   1380           |   1380
kkun   |   N4               |   2                 |   200             |   400

这样设计的麻烦是,客户在点提交表单的时候,我要插入多条记录!!!

于是又想到一个设计方法:
客户   |   电脑   |   电视   |   冰箱   |   N1   |   N2   |   N3   ……
kkun   |   电脑1|   电视5|   冰箱9|   n11|n21   |n31   ……
…………

这样设计如果产品类别很多的话,这个表字段的数量就太多了,而且这样设计,我发现数据冗余,例如某客户只买三台电视,类型不一样,那么电脑列,冰箱列,N1列,N2列……N9列   都为空,尤其在产品类别多的时候,会有大量的数据冗余,显然设计也不合理




------解决方案--------------------
支持第一种设计方法
------解决方案--------------------
第一种好一点,
用你第二种的话,如果你又加个别的产品,不是又要重新加字段了.
另外,你的电脑表,电视表,冰箱表也可以考虑合为一个表,加个分类字段,这样扩充性会好些
------解决方案--------------------
首选第一种嘛
------解决方案--------------------
可以使用一张销售表 + 一张产品参数表
销售表里记录客户,产品编号,产品数量,购买日期.等和销售相关的信息
产品参数表里记录产品编号,产品单价,产品描述.等和产品属性相关的信息
嗯..第三范式就是这样的..
------解决方案--------------------
?
其实我也知道第一种比较好,,可用第一种也是有顾虑的,,
当客户点击[下一步]时,我在后台需要处理多条记录的insert操作,,,,可是如果他上一步又重新选的话,,,,,,,,,,,这时候我就必须把他已经选择的记录再全部删除,,,,
这里总感觉怪怪的,,,,,不知道大家遇到过这种情况没,,,,是怎么处理的
==========
保存用户提交的结构在session里