【问题标题】:Copy Shop database design复制店数据库设计
【发布时间】:2013-05-25 00:33:57
【问题描述】:

我正在尝试设计一个数据库,并且想知道我的设计是否有意义。

我正在尝试为小型内部复印店设计一个数据库来跟踪订单和定价工作。我认为创建关系数据库将是存储此信息的好方法。典型订单的几个例子是:

  • 订单 #1:100 套 7 张黑白页面和 3 张彩色页面,装订在 20 磅 8.5x11 普通纸上
  • 订单 #2:一张 24" x 36" 海报,层压并安装在泡沫芯上

我开始着手的设计是这样的:

例如,我有:

  • 产品:{复制订单、海报}
  • 属性:{黑白页面、彩色页面、套装、装订、纸张尺寸、纸张类型、海报尺寸}
  • 属性选项:{Staple Upper-Left, ..., 8.5x11, ..., Plain 20lb, ..., 24" x 36", ...}

到目前为止,我认为这是合理的。我不知道如何添加定价配置文件。问题是属性选项的价格取决于其他属性选项,并且在每种情况下都不同。使用上面的例子:

  • 订单 #1 的价格:[在 8.5x11 普通纸上打印的黑白价格]x[黑白页数] + [在普通 8.5x11 纸上打印彩色的价格]x[彩色页数] + [数量套数]x[订书钉价格]
  • 订单 #2 的价格:[24x36 层压并安装在泡沫芯上的海报的价格]x[海报数量]

此外,我们对不同类型的客户收取不同的价格,所以我计划有多个价格配置文件。

在关系数据库中是否有任何合理的方法可以做到这一点?或者我应该以其他方式做吗?现有数据库设计不佳(几年前由我设计),并且大多数属性硬编码为字段名称,每个产品都有单独的表。例如,paper_type 是 copy_orders 表中的一个字段,而 poster_size 是 poster_orders 表中的一个字段。我使用代码来计算价格。我想设计一些更好、更灵活的东西。

我(显然)不是关系数据库方面的专家,因此我们将不胜感激任何建议!谢谢!

【问题讨论】:

  • 我建议您提供一个实体关系表以便更快地回复。
  • 我贴的图不够吗?我不确定还要上传什么 - 有没有更好的方法来上传图表?
  • ERT 表包括 1:1、1:many 等关系船以及共享列(如外键)。您可以尝试从您的方案中导出一个。
  • 哦,我明白了。是的,我在那里有点懒惰,还没有定义它们。

标签: database-design relational-database


【解决方案1】:

和往常一样,答案是“视情况而定”。以你的第一个例子:

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):在 8.5X11 普通纸上进行黑白打印、在 8.5X11 普通纸上进行彩色打印和订书钉。这些零件中的每一个都有一个价格(这里有一个与维护价格历史和确保您获得每个零件的当前价格有关的问题,但我现在将忽略它)。那么订单#1的价格就变成了

amount of part1 * price of part1 +
amount of part2 * price of part2 +
amount of part3 * price of part3

对于第二个示例,您必须定义一个名为“24x36 海报层压并安装在泡沫芯上”的部件,然后定义其价格。

如果属性的成本可以指定一个百分比(例如,彩色打印成本比黑白打印高 25% [尽管现在可能是相反的方式]),那么您定义一个部件“在普通 8.5x11 上打印”纸”并为其指定价格。在您的属性表中,您添加一个“百分比额外价格”字段并为属性“彩色打印”插入一个值 25(或 0.25 或 1.25,具体取决于您要如何管理)。

对于客户,一种处理方法是定义每个客户从价目表中获得的恒定折扣。如果客户在每个零件上获得不同的折扣,那么您别无选择,只能定义一个包含三个字段的表 - 客户 ID、零件 ID 和价格。

虽然这看起来很复杂,但最终这是最好的方法。

【讨论】:

  • 谢谢,No'am。它看起来确实很复杂,所以我决定搁置这个项目,直到我有更多时间投入到它并可能简化操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-06
  • 1970-01-01
  • 2011-07-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多