私は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
任意の数を適用できます。Upgrades
OrderItem
Order
Upgrades
--------
UpgradeID (pk)
Name
Description
Price
OrderItemUpgrades
-----------------
OrderID (fk, cpk)
ProductID (fk, cpk)
UpgradeID (fk, cpk)
これは、の「アプリケーション」をモデル化するUpgrade
ことだと思います。Product
Order
私の質問は、与えられたものの与えられたものの「妥当性」をどこでモデル化するのかUpgrade
ということです。アップグレードと製品(または別のデータベースレイヤーソリューション)に関連するテーブルProduct
を追加する必要がありますか?ValidProductUpgrades
それとも、そのビジネスロジックはアプリケーション層に属しますか?