我正在尝试设计一个数据库,并且想知道我的设计是否有任何意义。
我正在尝试为小型内部Copy Shop设计数据库,以跟踪订单和价格工作。我认为创建关系数据库是存储此信息的好方法。典型订单的几个例子是:
我开始研究的设计是这样的:
例如,我有:
到目前为止,我认为这是合理的。我无法弄清楚的是如何添加定价配置文件。问题是属性选项的价格取决于其他属性选项,并且在每种情况下都不同。使用上面的例子:
此外,我们为不同类型的客户收取不同的价格,因此我计划提供多种价格资料。
在关系数据库中有没有合理的方法呢?或者我应该以其他方式做到这一点?现有数据库的设计很差(几年前由我提供),并且大多数属性都是硬编码为字段名称,每个产品都有单独的表。因此,例如,paper_type是copy_orders表中的字段,poster_size是poster_orders表中的字段。我用代码来计算价格。我想设计一些更好,更灵活的东西。
我(显然)不是关系数据库的专家,所以任何建议都将不胜感激!谢谢!
答案 0 :(得分:0)
通常的答案是“它取决于”。举个例子:
The price of Order #1: [price of B&W prints on plain 8.5x11 paper]x[number of B&W pages] + [price of color prints on plain 8.5x11 paper]x[number of color pages] + [number of sets]x[price of staples]
您需要有三个部分(或物品,或产品,或SKU):b& w在普通8.5X11纸张上打印,在普通8.5X11纸张和订书钉上打印彩色。这些部件中的每一个都有价格(这里存在一个问题,与保持价格历史相关并确保您获得每个部件的当前价格,但我现在将忽略它)。然后订单#1的价格变为
amount of part1 * price of part1 +
amount of part2 * price of part2 +
amount of part3 * price of part3
对于第二个示例,您必须定义一个名为“24x36海报层压并安装在foamcore上”的零件,然后定义其价格。
如果属性的成本可以分配一个百分比(例如彩色打印成本比b& w打印成本高25%[虽然现在可能是另一种方式]),那么你定义一个部分'平面打印' 8.5x11纸'并给它一个价格。在属性表中,添加“百分比额外价格”字段,并为属性“彩色打印”插入值25(或0.25或1.25,具体取决于您希望如何管理事物)。
对于客户来说,一种方法是定义每个客户从价目表中获得的恒定折扣。如果客户每个零件获得不同的折扣,那么您别无选择,只能定义一个包含三个字段的表 - 客户ID,零件ID和价格。
虽然这看起来很复杂,但最终还是最好的方式。