|
|
Aug
01
2006
|
Modèle relationnel de données d’un catalogue de produits |
|
|
|
Analyse -
Besoins
|
|
Ecrit par Kamal AOUDA
|
|
01-08-2006 |
|
Modèle relationnel de données d’un catalogue de produits
Dans cet article nous reproduisons un sous-ensemble du modèle relationnel de
données d’un site de commerce électronique. La sous-partie reproduite ci-dessous
permet de structurer et de stocker les données d’un catalogue de produits.
Voici les spécifications qui ont régit la conception du Modèle Relationnel de
Données en question :
* Les catégories de produits peuvent contenir plusieurs sous-catégories avec un
niveau d’imbrication illimité (autrement dit la profondeur de l’arbre des
catégories n’a pas de limites. De manière réflexive, chaque (sous)catégorie peut
contenir un nombre illimité d’autres (sous)catégories).
* Les spécifications préalablement citées s’appliquent également aux produits.
* Le prix d’un produit peut varier dans le temps et on doit pouvoir garder une
trace sur toutes ces variations.
* Des articles complémentaires (appelés options dans le diagramme) peuvent être
associés à chaque produit selon le principe du cross selling. Cela
signifie que lorsque le client ajoute un produit à son panier d’achat le site
lui propose dynamiquement une liste d’articles complémentaires qui pourraient
l’intéresser. Une même option peut être associée à plusieurs produits et vice
versa (relation de plusieurs à plusieurs des deux côtés).
Modèle Relationnel de Données d'un site de commerce
électronique (sous-ensemble relatif au catalogue de produits)

Table Category
| CategoryID
|
int |
4 |
Identifiant Unique de
chaque catégorie |
| Name |
varchar
|
25 |
Nom de chaque catégorie. C'est ce
nom qui va apparaître sur les interfaces du site web. |
| Description
|
varchar
|
100 |
Description de la catégorie (pour
une meilleure lisibilité du MRD). |
| DisplaySeq
|
smallint
|
2 |
Séquence d'affichage (il s'agit
de l'ordre d'apparition d'une catégorie sur l'interface du site web).
|
| CategoryParentID
|
int |
4 |
Catégorie de rattachement (nous
rappelons que le rattachement se fait par le biais d'une relation
réflexive d'une occurrence de la table catégorie vers une autre
occurrence de cette même table). |
Table Products
| ProductID
|
int |
4 |
Clé primaire de la
table (identifiant unique de chacune de ses occurrences). |
| Name |
varchar
|
25 |
Nom du produit tel
qu'il apparaît sur les interfaces du site.
|
| DisplaySeq
|
smallint
|
2 |
Séquence d'affichage
indiquant l'ordre d'apparition du produit sur les interfaces du site
web. |
| ParentProductID
|
int |
4 |
Produit de
rattachement (nous rappelons que le rattachement se fait par le biais
d'une relation réflexive d'une occurrence de la table catégorie vers une
autre occurrence de cette même table). |
| CategoryID
|
int |
4 |
Clé externe de la
table Category. Permet de rattacher un ou plusieurs produits à une
catégorie. |
| ProductGroupID
|
int |
4 |
Permet de grouper les
produits. |
| Display
|
smallint
|
2 |
Indique si le produit
doit apparaître ou ne pas apparaître sur l'interface. |
| ShortDescription
|
varchar
|
50 |
Description concise
du produit. |
| LongDescription
|
varchar
|
500 |
Description détaillée
du produit. |
| ImageName
|
varchar
|
50 |
Chemin de l'image du
produit (nous n'allons pas stocker l'image au format binaire mais
seulement l'emplacement où elle se trouve). |
Table ProductPrice
| ProductID
|
int |
4 |
Identifiant du
produit
|
| Price |
decimal
|
9 |
Prix du produit |
| StartDate
|
datetime
|
8 |
Date de début de
validité du prix (nous rappelons que les prix varient dans le temps). |
| EndDate
|
datetime
|
8 |
Date après laquelle
le prix n'est plus valide. |
Pour pouvoir associer un produit à plusieurs catégories il faut ajouter une
table de jonction permettant de lier la table produit à la table catégories
(relation de plusieurs à plusieurs des deux côtés). La clé primaire de cette
table est le résultat de la concaténation de la clé primaire de la table
produits avec celle de la table catégorie. A noter que cette table de jonction
n'apparaît pas sur le MRD.
Table de jonction ProductCategoryMap
| ProductID
|
int |
4 |
Clé externe de la
table produit |
| CategoryID
|
int |
4 |
Clé externe de la
table catégorie |
Table Option Table
| OptionID
|
int |
4 |
Clé primaire de la
table option |
| Name |
varchar
|
100 |
Nom de l'option tel
qu'il apparaît sur l'interface |
Table ProductOptions Table
| UniqueID
|
int |
4 |
Identifiant unique |
| OptionID
|
int |
4 |
ID de chaque option
(clé externe) |
| ProductID
|
int |
4 |
ID du produit
auquel l'option est associée |
| OptionValue
|
varchar
|
100 |
Prix réel de
l'option (lorsqu'elle n'est pas achetée avec un autre produit principal) |
| ExtraCost
|
money
|
8 |
Prix bonifié de
l'option (lorsqu'elle est achetée avec un autre produit principal) |
|
|
Dernière mise à jour : ( 06-11-2006 )
|
|
UML - Modéliser un site e-commerce |
UML - Modéliser un site e-commerce
|
 |
Du cahier des charges au code, ce livre fait état des meilleures pratiques de
modélisation avec UML. Toutes les étapes de conception sont décrites,
abondamment illustrées et expliquées dans une étude de cas qui porte sur un site
de commerce électronique.
Lien vers le livre sur le site d'Eyrolles
|
|
Critiques du livre
« Tous les diagrammes d'UML ne sont pas utilisés,
et l'auteur a pris le parti de n'en traiter que la moitié, insistant
plus particulièrement sur les diagrammes de classe et de séquence. Ceci
n'est aucunement handicapant, bien au contraire. L'organisation du livre
et les nombreux schémas et diagrammes clairs le rendent très agréable à
lire et ne noient pas le néophyte sous des concepts théoriques et
abstraits ». Jérôme
« On peut regretter que l'exemple choisi n'utilise pas les bases de
données. En effet l'auteur a choisi d'illustrer la programmation du
panier qui par définition ne stocke rien de manière permanente. C'est
dommage car le lien entre classes d'analyse et relations en base de
données est intéressant et essentiel pour bien comprendre le lien entre
analyse et programmation ». Rédaction de devoloppez.com
|
Références
Pascal Roques
Langue : Français Éditeur : Eyrolles (10 septembre 2002)
Collection : Les cahiers du programmeur
ASIN : 2212110707
|
|
|