Idée de structure DB
Description
L'idée est donc d'enregistrer les utilisateurs, les articles ainsi que les commandes.
Pour cela, nous allons d'abord nous préoccuper de la partie "utilisateur".
Nous devons authentifier les utilisateurs sur base d'un rôle (Administrateur, Client,...).
Il nous faut donc deux tables:
- une table rôle
- une table utilisateur
Role (role) contiendra au minimum 2 colonnes:
- id (INT, PK avec incrémentation automatique) <= identifiant unique d'un rôle
- name (VARCHAR) <= nom d'un rôle (exemple: admin)
Utilisateur (user) contiendra au minimum 4 colonnes:
- id (INT, PK avec incrémentation automatique) <= Identifiant unique d'un utilisateur
- login (VARCHAR, de préférence unique) <= login d'un utilisateur
- password (VARCHAR. Attention à la taille en fonction de votre méthode de hashage) <= password d'un utilisateur
- role_id (INT, FK de la colonne id de la table Role) <= relation permettant de récupérer le rôle de l'utilisateur
Nous avons donc terminé pour la partie utilisateur.
Passons maintenant aux articles.
Une seule table est nécessaire: une table article.
Article (item) contiendra au minimum 3 colonnes:
- id (INT, PK avec incrémentation automatique) <= Identifiant unique d'un article
- title (VARCHAR, éventuellement unique) <= Titre de l'article
- price (FLOAT) <= Prix de l'article
Vous pouvez également rajouter une table "Catégorie" et rajouter une relation à la table Article pour pouvoir les trier par catégorie (même principe qu'avec la table Utilisateur et Rôle).
Et maintenant, la partie un peu plus complexe: les commandes !
Pour cela, nous allons avoir besoin de trois tables (ou deux tables si on ne compte pas gérer le statut d'une commande):
- une table statut
- une table commande
- une table commande_article
Statut (status) contiendra 2 colonnes:
- id (INT, PK avec incrémentation automatique, ou éventuellement un VARCHAR en PK) <= identifiant unique d'un statut
- name (VARCHAR) <= nom d'un statut (exemples: En attente, Traité, Refusé,...)
Commande (book) contiendra au minimum 3 colonnes:
- id (INT, PK avec incrémentation automatique) <= identifiant unique d'une commande (numéro de la commande)
- user_id (INT, FK de la colonne id de la table Utilisateur) <= relation permettant de récupérer l'utilisateur (client) de la commande
- status_id (INT, FK de la colonne id de la table Statut) <= relation permettant de récupérer le statut actuel de la commande
CommandeArticle (book_item) contiendra au minimum 4 colonnes:
- id (INT, PK avec incrémentation automatique) <= identifiant unique (ne sera normalement pas utilisé. Mais toujours bien d'avoir une PK)
- book_id (INT, FK de la colonne id de la table Commande) <= relation permettant de faire le lien avec la commande
- item_id (INT, FK de la colonne id de la table Article) <= relation permettant de récupérer un article
- price (FLOAT) <= prix de l'article. Nous copions ici le prix pour garder une trace du prix de l'article au moment où il a été commandé.
Dump de la db
Diagramme de la db