私はeコマース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は1つ以上に対して有効ですProducts OrderItemゼロ以上の有効なものを含めることができますUpgrades
たとえば、OrderItems注文番号1を作成する際にこれらのレコードがあるとします。
OrderID ProductID
------- ---------
1 1
1 2
1 3
そして、アップグレード#1を製品#1と#2に適用したいと思います...
Upgradesテーブルとテーブルを追加することを想像できます。これにより、特定の(の行)にOrderItemUpgrades任意の数を適用できます。UpgradesOrderItemOrder
Upgrades
--------
UpgradeID (pk)
Name
Description
Price
OrderItemUpgrades
-----------------
OrderID (fk, cpk)
ProductID (fk, cpk)
UpgradeID (fk, cpk)
これは、の「アプリケーション」をモデル化するUpgradeことだと思います。ProductOrder
私の質問は、与えられたものの与えられたものの「妥当性」をどこでモデル化するのかUpgradeということです。アップグレードと製品(または別のデータベースレイヤーソリューション)に関連するテーブルProductを追加する必要がありますか?ValidProductUpgradesそれとも、そのビジネスロジックはアプリケーション層に属しますか?