Je travaille sur une conception de base de données pour une application web de commerce électronique. Pour cette question je simplifie la conception et montre seulement les parties qui sont pertinentes à ma question. Mes points d'intérêt (entités) dans ce scénario sont Products
, Upgrades
et Orders
.Comment ajouter l'entité "Mises à jour" à la conception d'une base de données de produits?
Le Products
et Orders
sont liés d'une façon typique pour ce type de conception de base de données, avec une table OrderItems
pour créer les nombreux à-plusieurs:
Products
--------
ProductID (pk)
Name
Description
Price
Orders
------
OrderID (pk)
DateOrderPlaced
OrderItems
----------
OrderID (fk, cpk)
ProductID (fk, cpk)
Quantity
Maintenant, je me demande comment ajouter Upgrades
dans le mélange:
- un
Upgrade
peut être valable pour un ou plusieursProducts
- un
OrderItem
peut impliquer zéro ou plus valideUpgrades
Par exemple, dire que j'ai ces enregistrements OrderItems
qui composent la commande n ° 1:
OrderID ProductID
------- ---------
1 1
1 2
1 3
Et je veux appliquer la mise à niveau n ° 1 au produit n ° 1 et # 2 ...
Je peux imaginer d'ajouter une table Upgrades
et une table OrderItemUpgrades
, ce qui me permettra d'appliquer un certain nombre de Upgrades
à un OrderItem
donné (ligne dans un Order
).
Upgrades
--------
UpgradeID (pk)
Name
Description
Price
OrderItemUpgrades
-----------------
OrderID (fk, cpk)
ProductID (fk, cpk)
UpgradeID (fk, cpk)
je pense à ce que la modélisation de la « application » d'un Upgrade
à un Product
dans un Order
.
Ma question est, où puis-je modéliser la "validité" d'un Upgrade
donné pour un Product
donné? Dois-je ajouter un tableau ValidProductUpgrades
qui concerne les mises à niveau et les produits (ou une autre solution de couche de base de données)? Ou cette logique métier appartient-elle à la couche application?
Merci Wade, ceci est utile en tant que confirmation par un tiers que j'y vais de la bonne façon! – nselikoff