|
|
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 )
|
|
Hébergement PHP, Mambo, MySQL |
|
|
|