数据库设计的困扰 04-09-08 iter 数据库的设计一个网上购物系统,有多类产品,每类下面有多个产品,同一类的产品属性相近,不同类属性(意思是有的要10个字段,有的可能需要20个字段)差别较大。有客户订制系统,比如订制一台电脑,可能是需要一个P4 2.8G 的cpu, 1024兆的内存(可能是两个512的),一个显示器,等等,主要意思是客户的一个order里面需要包含不同的产品(比如单买一个P4 2.8G 的cpu,单买一个手机等),也要包含订制的产品(比如上面定制的那台机器,一个定制茶产品包含一对多的子部件等),主要是这个需求,那么问题来了:产品如何存储,按类别放在不同的表里?还是统统放在一个表里?客户的订单如何设计表格,订单的产品如何实现这个一对多再对多的三级关系(此三级非彼三级耶)?请各位兄弟指点,谢谢。 vegetable318 2004-09-08 17:06 个人认为一类的产品应该归为一类,就是表分开建,但是其实是没有机器表这边一说的,,按我的思想我会把这些类用builder设计模式的方法产生一个成品的机器,当然也可以有单个的零件,,当然也可以有机器表,,保存售出的成品,,不知道我的思想对不对? SportsBaby1980 2004-09-08 17:16 我这里有一个想法: 一个汽车 有很多零件。 有相同的零件,也有不同的。 那么他们是组合到一起,是一个汽车。 而你的一个定单也有很多产品 可能有相同的,也会有不同的。 那么他们组合一起就是一个定单。 汽车的零件是如何保存的? 分类保存:一类零件就是一个定义 你的产品该如何保存? 那么汽车零件的保存就是一个比较相当的模型。 public class Car{ private List 零件s = null; //setter //getter } public class Order{ private List items = null; //setter //getter } <p class="indent"> SportsBaby1980 2004-09-08 17:17 忘了说:Order是一个定单。 banq 2004-09-09 12:35 >产品如何存储,按类别放在不同的表里?还是统统放在一个表里?设计一个核心产品表,它有各种属性,属性可以灵活自动加入的。如下:CREATE TABLE item_attrs ( itemAttrsId char(10) not null, itemId char(10) default '', 与item是n:1关系 name VARCHAR(100) default '' , attr VARCHAR(250) default '', fieldSize CHAR(3) default '', KEY itemId (itemId), PRIMARY KEY (itemAttrsId))TYPE=InnoDB;>客户的订单如何设计表格,订单的产品如何实现这个一对多再对多的三级关系(此三级非彼三级耶)?订单和产品roduct是一对多关系,而产品和属性规格是一对多关系,模型设计简单,复杂的是界面显示,Struts对于前台1对多 或嵌套关系显示功能强大,它的1.2版本尤其增强这方面功能。当然使用起来比较玄妙,加上调试不方便,这是一个大问题。