2017-07-11 1 views
-2

Je cherche des suggestions pour concevoir un schéma de base de données basé sur les exigences suivantes.Schéma de base de données pour les prix des produits qui peuvent changer tous les jours

  1. produit peut avoir variante
  2. chaque variante peut avoir des prix différents
  3. Prix peut être différent pour jour spécifique d'une semaine
  4. Le prix peut être différent pour un moment précis de la journée
  5. tous les prix seront valides pour des dates précises seulement
  6. Les prix peuvent être définis pour les périodes de pointe, haute et moyenne
  7. Les fournisseurs offrant n'importe quel produit peuvent définir leurs propres prix et les règles ci-dessus s'applique toujours

Quel pourrait être le meilleur schéma possible où les données sont faciles à récupérer sans impact sur les performances?

Merci d'avance pour vos suggestions.

Cordialement Harmeet

+0

Avez-vous besoin de stocker les données historiques? –

+1

Ceci est à la fois entièrement trop large et principalement basée sur l'opinion. Il y a des possibilités de zillion pour concevoir une telle base de données. Si vous êtes si incertain que même commencer, je suggère que vous devriez embaucher un consultant parce que la conception de la base de données sans aucune idée de comment le faire est une recette pour le désastre. –

Répondre

0

est donc pas vraiment un forum pour des suggestions autant que les réponses. Aucune réponse ne donne peut être définitivement correcte. Cela dit, je garderais les tables aussi granulaires que possible pour permettre des changements faciles entre les produits.

En ce qui concerne le numéro 5, je placerais les dates de début et de fin sur les produits. Si le prix n'est plus valable, le produit ne devrait plus être disponible.

Cela inclut les relations pour différents prix saisonniers, mais vous devrez soit coder en dur les saisons, soit créer une autre table pour les définir. Pour les prix, s'il s'agit de plus d'une région, vous pouvez avoir besoin d'une table de régions, auquel cas une colonne de devise serait appropriée.

Il s'agit de données opérationnelles, pas de données temporelles. Si vous voulez qu'il soit disponible pour l'analyse historique des prix, vous devrez également créer des tables temporelles.

Tableau de produit

+-------------+-----------+------------------+----------------+ 
| ProductName | ProductID | ProductStartDate | ProductEndDate | 
+-------------+-----------+------------------+----------------+ 
| Product1 |   1 | 01/01/2017  | 01/01/2018  | 
| Product2 |   2 | 01/01/2017  | 01/01/2018  | 
+-------------+-----------+------------------+----------------+ 

Variante Tableau

+-----------+-----------+-------------+---------------+-------------+-------------+ 
| ProductID | VariantID | VariantName | NormalPriceID | HighPriceID | PeakPriceID | 
+-----------+-----------+-------------+---------------+-------------+-------------+ 
|   1 |   1 | Blue  |    1 |   3 |   5 | 
|   1 |   2 | Black  |    2 |   4 |   5 | 
+-----------+-----------+-------------+---------------+-------------+-------------+ 

Tableau des prix

+---------+-----+-----+-----+-----+-----+-----+-----+ 
| PriceID | Mon | Tue | Wed | Thu | Fri | Sat | Sun | 
+---------+-----+-----+-----+-----+-----+-----+-----+ 
|  1 | 30 | 30 | 30 | 30 | 35 | 35 | 35 | 
|  2 | 35 | 35 | 35 | 35 | 40 | 40 | 40 | 
|  3 | 33 | 33 | 33 | 33 | 39 | 39 | 39 | 
|  4 | 38 | 38 | 38 | 38 | 44 | 44 | 44 | 
|  5 | 40 | 40 | 40 | 40 | 50 | 50 | 50 | 
+---------+-----+-----+-----+-----+-----+-----+-----+