Les données du site
Les informations suivantes permettent de vous faire une première idée de l'organisation des données manipulées par le site.
Introduction
Conformément au sujet du projet, les données sont enregistrées dans une base de données MySQL.
Ce n'est que lorsque l'administrateur se rends dans la zone d'administration pour effectuer une exportation que le catalogue des produits peut être copié dans un fichier XML.
Etant donné que notre site repose largement sur des classes, les données sont encapsulées dans celles-ci et on manipule alors directement des instances de classes, et non des tableaux associatifs d'attributs.
Les tables de la base MySQL
Voici le shéma SQL que nous avons adopté :
| TABLE `categorie` |
| idc |
Numéro de catégorie |
| libellé |
Libellé de la catégorie |
| TABLE `sous_categorie` |
| ids |
Numéro de sous-catégorie |
| idc |
Clé étrangère correspondant à la catégorie parente |
| libellé |
Libellé de la sous-catégorie |
| infoTaille |
Faut-il afficher la taille des produits de cette sous-catégorie ? |
| infoPoids |
Faut-il afficher le poids des produits de cette sous-catégorie ? |
| infoCouleur |
Faut-il afficher la couleur des produits de cette sous-catégorie ? |
| TABLE `article` |
| ida |
Numéro d'article |
| ids |
Clé étrangère correspondant à la sous-catégorie à laquelle apparient l'article |
| poids |
Poids de l'article (facultatif) |
| couleur |
Couleur de l'article (facultative) |
| taille |
Taille de l'article (facultative) |
| prix |
Prix de l'article (en euros) |
| libellé |
Libellé de l'article |
| description |
Description de l'article |
| libelleMarque |
Marque de l'article |
| nbNeuf |
Nombre d'exemplaires neufs pour cet article |
| nbOccasion |
Nombre d'exemplaires d'occasion pour cet article |
| louable |
Cet article est-il louable ou non ? |
| TABLE `client` |
| idcli |
Numéro de client |
| login |
Login du client |
| pass |
Mot de passe du client |
| nom |
Nom du client |
| prenom |
Prénom du client |
| email |
Email du client |
| adresse |
Adresse du client |
| TABLE `administrateur` |
| idadmin |
Numéro d'administrateur |
| login |
Login de l'administrateur |
| pass |
Mot de passe de l'administrateur |
| TABLE `achat` |
| idAchat |
Numéro de l'achat |
| idcli |
Clé étrangère correspondant au client effectuant l'achat |
| ida |
Clé étrangère correspondant à l'article acheté |
| dateAchat |
Date de l'achat |
| prix |
Prix unitaire de l'article au moment de l'achat |
| qte |
Quantité achetée |
| TABLE `location` |
| idloc |
Numéro de la location |
| idcli |
Clé étrangère correspondant au client effectuant la location |
| ida |
Clé étrangère correspondant à l'article loué |
| dateLocation |
Date de la location |
| prixParJour |
Prix unitaire par jour de la location |
| caution |
Caution totale laissée au moment de la location |
| dateRetour |
Date de retour de l'article (à -1 si l'article n'est pas encore retourné) |
| qte |
Quantité d'articles loués |
Structure de nos fichiers XML
Pour représenter le catalogue dans un fichier xml, nous avons adopté la structure suivante :
Voici le DTD qui permet de valider ces fichiers :
<!ELEMENT catalogue (categorie*)>
<!ELEMENT categorie (souscategorie*)>
<!ATTLIST categorie
libelle CDATA #REQUIRED>
<!ELEMENT souscategorie (article*)>
<!ATTLIST souscategorie
libelle CDATA #REQUIRED
infoPoids (oui|non) #REQUIRED
infoTaille (oui|non) #REQUIRED
infoCouleur (oui|non) #REQUIRED>
<!ELEMENT article (marque,description,couleur?,poids?,taille?,prix,stock)>
<!ATTLIST article
ida CDATA #REQUIRED
libelle CDATA #REQUIRED
louable (OUI|NON) #REQUIRED>
<!ELEMENT marque (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT prix ANY>
<!ELEMENT stock (neuf,occasion)>
<!ELEMENT couleur (#PCDATA)>
<!ELEMENT poids (#PCDATA)>
<!ELEMENT taille (#PCDATA)>
<!ELEMENT neuf (#PCDATA)>
<!ELEMENT occasion (#PCDATA)>
|