我正在为电子商务 Web 应用程序进行数据库设计。对于这个问题,我正在简化设计,只显示与我的问题相关的部分。
在这种情况下,我感兴趣的事物(实体)是Products
、Upgrades
和Orders
。
Products
和Orders
以这种类型的数据库设计的典型方式相关,并使用一个表OrderItems
来创建多对多关系:
Products
--------
ProductID (pk)
Name
Description
Price
Orders
------
OrderID (pk)
DateOrderPlaced
OrderItems
----------
OrderID (fk, cpk)
ProductID (fk, cpk)
Quantity
现在我想知道如何添加Upgrades
到组合中:
- an
Upgrade
可以对一个或多个有效Products
- an
OrderItem
可以涉及零个或多个有效Upgrades
例如,假设我在OrderItems
制作订单 #1 时有这些记录:
OrderID ProductID
------- ---------
1 1
1 2
1 3
我想将升级#1 应用到产品#1 和#2...
我可以想象添加一个Upgrades
表格和一个OrderItemUpgrades
表格,这将允许我将任意数量的应用Upgrades
到给定的OrderItem
(行中的行Order
)。
Upgrades
--------
UpgradeID (pk)
Name
Description
Price
OrderItemUpgrades
-----------------
OrderID (fk, cpk)
ProductID (fk, cpk)
UpgradeID (fk, cpk)
Upgrade
我认为这是对 an中的 aProduct
的“应用程序”进行建模Order
。
我的问题是,我在哪里为给定的给定的“有效性”Upgrade
建模Product
?我应该添加一个ValidProductUpgrades
与升级和产品(或其他数据库层解决方案)相关的表吗?还是该业务逻辑属于应用层?