0

作为学习一些数据库设计技术的练习,我正在为一个虚构的小型计算机商店设计一个数据库。这个想法是商店从多个供应商那里获得一些组件,将它们组装成计算机系统并将它们出售给客户。

这是我到目前为止提出的模型的图像: 图像

一些解释:

这个模型的中心实体是一个项目。它代表商店拥有或已售出的单件商品,例如一个精确的 i7 920 处理器。此项目属于一个产品(在本例中为“Intel i7 920”),该产品属于一个类别(“处理器”)。

这些物品通过订单进入商店。当从供应商处订购组件时,会在 Orders 表中创建一个新条目。对于订购的每个项目,都会在 Items 表中创建一个新条目,并在 OrderItem 中创建相应的条目(我无法为这个表想出更好的名称......)。

OrderItem 条目基本上包含商店在发票上从供应商处收到的内容:该商品的价格、相同的描述等。如果必须显示或打印订单,订单字段决定了商品的显示顺序。

另一方面,当客户购买商品时,会创建发票。他们购买的每个商品都会创建一个 InvoiceItem。它的工作方式基本上与 OrderItem 相同。价格字段是客户将支付的价格(假设价格不是每个产品的价格,而是为每个发票定制的。我找不到一种优雅的方式来获得每个产品的价格并能够跟踪价格变化) . 如果 description 为 NULL,则相应产品的描述出现在 Invoice 上,否则,可以输入该 Invoice 的自定义描述。

现在棘手的部分是装配表。如果商店销售一个名为“PC 1”的 PC 系统,产品中会有一个“PC 1”条目,例如属于“PCs”类别。每次组装“PC 1”系统时,都会创建一个新项目(productID 为“PC 1”),并且对于该系统的每个组件,都会向组件添加一个条目:assemblyID 将是新项目的 itemID ,componentID是组件的itemID。

我只是想到了另一种在没有 Assemblies 表的情况下管理此问题的方法:商店可以以 0 美元(实际上是 0自由的)。这似乎更容易做到,因为这些组件将从库存中消失,但是是否有一种简单的方法可以将“出售”的组件链接到“购买”的计算机?

现在,我对我从中学到的东西非常满意。但是肯定有一些错误或一些更好的方法来表示我想不到的东西。我很高兴收到任何建议和批评。提前致谢!

PS:对不起,如果文本有点长......另外,对于某些英语不好的情况(这不是我的主要语言(这也可以解释一些选择不当的字段/表名称),我很乐意得到建议)))

4

2 回答 2

2

您在从单个部件创建 PC 时描述的过程是物料清单,这是一个包含大量数据库信息的网站,它们实际上有数据模型示例,包括物料清单。

于 2011-01-28T17:53:19.967 回答
0

您此时正在处理的过程称为数据库规范化,即在查询处理时间方面使数据库可扩展和更快的行为。

马上,我可以看到 Customers 表中的 Remarks 应该有自己的名为 Remarks 的表,该表通过 CustomerID 绑定到您的 Customer 表。这样客户可以留下无限的评论。

与 Invoices 相同,您可能还想设置一个 Payments 表来控制所有客户进行的所有 Payments,将这两个表分别与 PaymentIDs 和 InvoiceIDs 绑定在一起。

希望这可以帮助。

于 2011-01-28T13:23:45.960 回答