1

私は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ミックスに追加する方法を考えています:

  • anUpgradeは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それとも、そのビジネスロジックはアプリケーション層に属しますか?

4

1 に答える 1

1

上記の最後のコードブロックで示したとおりに実行します。この場合、製品を念頭に置いて、アップグレードを特定の注文に実際に接続する別のテーブルを追加することは理にかなっています。

アップグレードは1つ以上の製品に有効である可能性があり、そのことを念頭に置いて、1つの製品に複数のアップグレードが適用される可能性があるためです。また、ValidProductUpgradesテーブルを用意することも理にかなっています。このテーブルを照会して、製品のアップグレードがその製品に適用できる場合にのみ表示されるようにすることができます。

上記の仮定は完全であり、おそらくこれを処理するための最良の方法だと思います。

お役に立てれば!

于 2009-09-08T20:42:50.340 に答える