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

请教一个关于数据库设计的问题
一件商品有三种规格(或三种以下),例如:餐巾纸,1箱=4盒=20包。
需求是商品的规格和数量可配置,录入时可选择任意规格,页面显示最小规格。
请问如何进行数据库设计?
数据库?设计

------解决方案--------------------
--规格
create table tt1( a number,b varchar2(10),ca varchar2(10),num number);
insert into tt1 values(1,'箱',2,4);
insert into tt1 values(2,'盒',3,20);
insert into tt1 values(3,'包',null,1);

--录入数据
create table tt2(pname varchar2(10),num number,unit varchar2(10));
insert into tt2 values('a',10,1);
insert into tt2 values('b',11,2);
insert into tt2 values('c',12,3);
insert into tt2 values('c',13,1);

--前台页面显示
with t as
 (select a, power(10, Sum(Log(10, num))) num
    from (select connect_by_root(a) a, num from tt1 connect by a = prior ca)
   group by a)
select pname, tt2.num * t.num num from tt2 join t on tt2.unit = t.a;

------解决方案--------------------
表A:商品类型、规格类型(箱、盒或者包)、最小规格(该规格对应的最小规格数)
  比如:餐巾纸  箱    20
        餐巾纸 盒    5
        餐巾纸 包    1
表B: 商品类型、规格类型、数量
比如: 餐巾纸  箱  10
       餐巾纸 盒  5
在页面显示就好办了 根据商品类型和规格类型 表B中数量*表A的最小规格