製品注文データベース設計に “Upgrades”エンティティを追加する方法

data-modeling database-design e-commerce

私はeコマースWebアプリケーションのデータベース設計に取り組んでいます。 この質問では、デザインを単純化し、自分の質問に関連する部分のみを表示しています。

このシナリオにおける私の興味(エンティティ)は Products、` Upgrades`、そして `Orders`です。

Products`と Orders`は、多対多の関係を作るための `OrderItems`テーブルを使って、このタイプのデータベース設計に典型的な方法で関係しています。

製品-------- ProductID(pk)名前説明価格

注文------ OrderID(pk)DateOrderPlaced

OrderItems ---------- OrderID(fk、cpk)商品ID(fk、cpk)数量

さて、ミックスに `Upgrades`を追加する方法を考えています。

  • Upgrade`はひとつ以上の Products`に対して有効です

  • OrderItem`は0個以上の有効な Upgrades`を含むことができます

たとえば、Order#1を構成する `OrderItems`にこれらのレコードがあるとします。

OrderID ProductID ------- --------- 1 1 1 2 1 3

そして、アップグレード#1を製品#1と#2に適用したいのですが。

Upgrades`テーブルと OrderItemUpgrades`テーブルを追加することを想像することができます。それは与えられた OrderItem`に任意の数の Upgrades`を適用することを可能にします( `Order`の行)。

アップグレード-------- UpgradeID(pk)名前説明価格

OrderItemUpgrades ----------------- OrderID(fk、cpk)ProductID(fk、cpk)UpgradeID(fk、cpk)

私はこれを Order`の Product`への `Upgrade`の”アプリケーション “をモデル化するものと考えています。

私の質問は、与えられた Product`に対する与えられた Upgrade`の “妥当性”をどこでモデル化するのか、です。 UpgradesとProducts(または他のデータベースレイヤソリューション)を関連付ける `ValidProductUpgrades`テーブルを追加するべきですか? それとも、そのビジネスロジックはアプリケーション層に属しますか?

  1  0


ベストアンサー

上記の最後のコードブロックに表示されているとおりに実行します。 この場合、製品を考慮しながらアップグレードを特定の順序に実際に関連付ける別のテーブルを追加するのが合理的です。

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

私は上記のあなたの仮定が完全だと思います、そしておそらくこれを処理するための最善の方法です!

お役に立てれば!

1


タイトルとURLをコピーしました