Organisation d'une base de données

Vous pouvez discuter librement sur ce forum.
Répondre
Avatar du membre
Fredo_L
Scientifique dans l'âme !
Messages : 6880
Enregistré le : 26-12-2001 13:02
Localisation : Paris
Contact :

Organisation d'une base de données

Message non lu par Fredo_L »

Bonsoir,

Demain, je mettrai enfin à jour mes différents sites mais ce soir, je travaille sur un site pour un ami.

Cet ami a prévu de faire une interface pour vendre de la musique.

J'ai fait 1 base de données comportant 2 tables :

Table 1 : Musique
Comporte divers chanmps, un identificateur, un titre, le nom de l'album, son prix, son auteur, etc.

Table 2 : Achat
Comporte divers chanmps, un identificateur, un identifiant md5, le nom de l'acheteur, le prix total, l'email, la date, état de valider de la commande, etc. et un champ par nom des titres de musiques

Le principe du site est le suivant :

Page 1
Le client sélectionne les musiques qui l'intéressent (sur la page de test actuelle, je n'ai que 6 musiques possibles) et valide.

Page 2
Le client voit un résumé des musiques sélectionnées, cela lui donne aussi le prix de sa commande. Si le client est satisfait de sa commande, il entre son nom et son email et il valide sa commande.

Page 3
La page remercie le client pour sa commande.
La page explique au client qu'il doit à présent payer par Paypal.
Le client reçoit un mail avec l'adresse de la page de téléchargement des musiques.
Le responsable du site reçoit de son côté un résumé de la commande.

Page validation de la commande
Une fois que le responsable du site a reçu l'argent depuis Paypal l'argent, il va sur une page pour valider la commande.
Cette action a pour conséquence d'envoyer un mail à l'acheteur pour le prévenir qu'il peut télécharger les musiques.

Page téléchargement
Une fois que la commande est validée, il est possible depuis cette page de télécharger les musiques au format mp3.


Avec ma façon de faire, il y a dans la table achat, 6 champs portant les noms des 6 titres proposés au téléchargement.
Au final, il risque d'y avoir 200 titres à l'achat, ce qui ferait 200 champs dans la table achat, ce qui fait peut être beaucoup.
Est-ce que quelqu'un aurait une bonne idée pour mieux organiser la base de données ?
Merci d'avance :)
Avatar du membre
Soily
Legendary
Messages : 353
Enregistré le : 11-12-2006 09:43

Re: Organisation d'une base de données

Message non lu par Soily »

Tu pourrais créer une ligne dans la table Achat pour chaque titre acheté, au lieu d'une colonne par titre

En fait, pour ne pas répéter les infos de l'acheteur plusieurs fois, tu pourrais plutôt utiliser 3 tables : La table Musique reste inchangée, tu gardes la table "Achat" avec les informations concernant la commande (nom, email, etc... Tout ce que tu as mis sauf les champs concernant les chansons achetées), et ensuite tu auras une table de lien entre les 2 tables, avec juste des clés étrangères qui pointent vers les 2 autres tables : pour chaque chanson achetée, tu auras une ligne dans la table de lien, avec l'identifiant de la commande (ID de la table Achat) et l'identifiant de la chanson achetée (ID de la table Musique)

Table 1 : Musique
Comporte divers champs, un identificateur, un titre, le nom de l'album, son prix, son auteur, etc.

Table 2 : Achat
Comporte divers champs, un identificateur, un identifiant md5, le nom de l'acheteur, le prix total, l'email, la date, état de valider de la commande, etc.

Table 3 : Table de lien (à toi de choisir un nom :) Si tu n'es pas inspiré, LienAchatMusique ça peut convenir :p)
Comporte l'ID de l'achat et l'ID d'une musique.

Après tu peux aussi extraire les infos concernant le client (nom, e-mail) dans une 4ème table Client si tu veux offrir la possibilité d'avoir un compte client avec plusieurs achats qui y sont rattachés.
Avatar du membre
Fredo_L
Scientifique dans l'âme !
Messages : 6880
Enregistré le : 26-12-2001 13:02
Localisation : Paris
Contact :

Re: Organisation d'une base de données

Message non lu par Fredo_L »

Salut,

Ok, merci pour l'idée.
Je vais décider cette semaine de l'organisation définitive du site pour essayer d'en finir.
Répondre