Mammouth du PHP |
19672 Messages
14 févr. 2014, 22:10
Salut,
la logique que tu présentes n'est à mon sens absolument pas logique.
Si tu supprimes un client, comment pourras-tu faire pour identifier à quel client appartiennent ses commandes ? Tu te retrouveras avec des données orphelines avec des commandes sans client, ce qui m'apparait comme tout à fait incohérent.
Dans ton design, ta table commande_client est une table relationnelle et les deux colonnes devraient former une clé primaire composite, ce qui interdit la suppression d'un client qui a enregistré au moins une commande.
Ta table contenu commande est également une table relationnelle, donc les deux colonnes actuelles devraient former une clé primaire composite. Il faudrait en outre y rajouter une colonne « nombre_articles » ainsi qu'une colonne « date_commande ».
La gestion des catégories/sous-catégories est étrange : pour cette partie, ta table « sous_categorie » devrait en réalité s'appeler quelque chose comme « article_appartient_categorie » et ne comporter que deux colonnes, id_article et id_categorie en clé primaire composite. Mais tu devrais avoir une relation récursive dans ta table categories de telle sorte qu'une catégorie puisse comporter des sous-catégories, ce qui implique une colonne id_categorie_parent te permettant d'avoir des sous-catégories à niveaux multiples.
Enfin, pour la gestion des promotions, il faudrait virer les colonnes id_categorie et id_sous_categorie de ta table articles_en_promo, et ajouter les colonnes date_debut_promo et date_fin_promo. Puisqu'un article ne peut appartenir qu'à une et une seule catégorie, même si cette dernière est la sous-catégorie d'une autre catégorie (avec le système de récursion exposé plus haut), tu n'as plus besoin de ces colonnes.
Lis et relis tout ceci autant de fois que nécessaire, ça devrait s'éclaircir assez rapidement pour te sortir de l'impasse dans laquelle tu t'es engagé

Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse 