Suite à plusieurs questions sur les bases de données portant sur la conception du schéma de base, les problèmes sont souvent dus à des bases mal pensées, ce qui peut par la suite empêcher certaines possibilités qui peuvent être demandées dans la vie d'un projet.
Cet article n'est pas à but théorique mais va être développé à partir d'un exemple de façon à mieux comprendre l'importance de la réalisation du schéma de base, avant de s'attaquer au codage (que ce soit en ASP ou PHP).
Projet de Site Marchand
Je vais choisir un exemple simple que tout le monde pourra facilement comprendre : un site marchand avec vente d'articles en ligne.
Définition du projet
Le site nécessitera une identification de l'acheteur afin de mémoriser les articles commandés par acheteur. On réalisera ensuite une simple liste des articles proposés et la gestion des informations sur les utilisateurs. On pourra bien sûr ensuite perfectionner la base.
Définition des besoins
On stockera les informations basiques concernant les articles (Nom, Prix Définition, Marque) et les informations nécessaires à l'envoi de ces produits à l'acheteur (Nom, Prénom, Adresse, Code Postal, Ville, Pays, Mot de passe).
NB : Dans tous les projets, il existe un cahier des charges. Il est soit implicite (cas d'un développement personnel), soit explicite (quand le projet est demandé par une autre personne). De même, il peut être écrit (cas des contrats entre client et vous) ou oral (cas où un supérieur vous demande de lui faire un site ou une page, ...). Quoi qu'il en soit, celui-ci devra toujours rester à l'esprit de la personne qui va réaliser le projet, car il en sera le fil conducteur. Dans le cas contraire, on risque de déroger à la demande originale et de finir complètement hors sujet.
Donc, pour cet exemple, nous avons besoin :
Une Liste des articles afin de présenter ceux-ci à l'acheteur potentiel
Un stockage des informations sur le client pour son historique des achats
Un enregistrement de l'utilisateur avec identification par mot de passe, afin que celui-ci puisse voir ce qu'il a déjà acheté (un peu comme Amazon)
On voit ici que la même marque peut arriver plusieurs fois (donc on va scinder la table article en 2 avec une table article réelle et une table Marque, avec un lien entre les 2)
De la même facon pour le Pays et la ville qui sont des données redondantes
On a donc la liste des besoins référencés, regardons maintenant comment représenter les données et donc la base.