Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1631 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Réalier une Base de donnée [Artiste original / Artiste Sample ]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Réalier une Base de donnée [Artiste original / Artiste Sample ]

n°794046
peemousse
Posté le 12-07-2004 à 22:58:13  profilanswer
 

Bonjour,
 
Je sais pas si je suis dans le bon forum .... on verra :p
 
Voila je voudrais faire une base de donnée qui contienent des références musicales concernant les samples des chansons !
 
Et faire des recherches en fonctions d'un titre de chansons (original ou Sample) ou d'un artiste.
 
Exemple :  
 
Original
Auteur : Charles Aznavour  
titre : Parce que tu crois
Album : ?
Année : ?
 
Reprise
Auteur : Eminem
titre : What's the diffrence
Album : ?
Année : ?
 
Les ? on s'en fout c'est juste un exemple de ce que je voudrais avoir.
 
Mon problème c'est qu'une chanson originale peut avoir été repirse plusieurs fois.... et je ne sais pas comment créer mes tables en fonctions de cette contrainte.
 
Si quelqu'un peut me filer un coup de main  
 
Merci

mood
Publicité
Posté le 12-07-2004 à 22:58:13  profilanswer
 

n°794047
mareek
Et de 3 \o/
Posté le 12-07-2004 à 23:04:54  profilanswer
 

Tu fais une table "Chanson_Originale" et une table "Interpretation" qui est liée à la table "Chanson_Originale"


Message édité par mareek le 12-07-2004 à 23:05:11

---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°794049
the real m​oins moins
Posté le 12-07-2004 à 23:06:28  profilanswer
 

ben dans la table "reprise" tu colles une foreign key vers la table "original"...


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°794050
the real m​oins moins
Posté le 12-07-2004 à 23:06:59  profilanswer
 

mareek a écrit :

Tu fais une table "Chanson_Originale" et une table "Interpretation" qui est liée à la table "Chanson_Originale"

bah pq tu barres ? [:spamafote]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°794053
mareek
Et de 3 \o/
Posté le 12-07-2004 à 23:09:53  profilanswer
 


parce qu'on duplique les donées inutilement.


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°794060
peemousse
Posté le 12-07-2004 à 23:18:28  profilanswer
 

C'est ce que je pensais aussi mais ca va pas fonctionner !
 
Car par exemple une Reprise peut contenir plusieurs Samples de chansons Originales, donc si je colle dans
la table "reprise" une foreign key vers la table "original"... ca entraine le fait d'avoir une seule référence vers une chanson originale !
 
J'y connais pas grand chose en SGBD .. donc je me plante peut-etre ?

n°794063
the real m​oins moins
Posté le 12-07-2004 à 23:20:25  profilanswer
 

he ben tu fais une table de mapping


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°794065
mareek
Et de 3 \o/
Posté le 12-07-2004 à 23:23:08  profilanswer
 

peemousse a écrit :

C'est ce que je pensais aussi mais ca va pas fonctionner !
 
Car par exemple une Reprise peut contenir plusieurs Samples de chansons Originales, donc si je colle dans
la table "reprise" une foreign key vers la table "original"... ca entraine le fait d'avoir une seule référence vers une chanson originale !
 
J'y connais pas grand chose en SGBD .. donc je me plante peut-etre ?


OK, j'avais pas vu ça comme ça.
 
Tu fais une table Chanson qui contient toutes tes chansons (originale ou repirse) et une table de relation entre la table chanson et la table chanson ([:ddr555]) avec un champ IDChansonOriginale et un champ IDChansonReprise.


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°794066
peemousse
Posté le 12-07-2004 à 23:23:31  profilanswer
 

Bon je crois que je vais aller me renseigner un peu sur les SGBD avnt de me lancer la dedans, parce que la ca dépasse mes pauvres compétences :)
 
Si tu peux m'expliquer rapidos en quoi ca consiste et commment je peux faire ca !
en attendans je vais googler pour voir un peu !
 
Merci en tout cas
 
EIDT: je parlais de la table de mapping !


Message édité par peemousse le 12-07-2004 à 23:24:13
n°794159
peemousse
Posté le 13-07-2004 à 02:26:47  profilanswer
 

J'arrive a rien :/ je suis pas douée en Base de donnée.. si quelqu'un pouvait me donner un petit coup de pouce.

mood
Publicité
Posté le 13-07-2004 à 02:26:47  profilanswer
 

n°794160
mareek
Et de 3 \o/
Posté le 13-07-2004 à 02:28:24  profilanswer
 

peemousse a écrit :

J'arrive a rien :/ je suis pas douée en Base de donnée.. si quelqu'un pouvait me donner un petit coup de pouce.


http://www.commentcamarche.net/bdd/bddintro.php3


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°794162
peemousse
Posté le 13-07-2004 à 02:41:40  profilanswer
 

C'est vrai que vu commme ca ca fait un peu pleurnichard :)
Je vais essayer d'être un peu plus complet.
 
Je vais faire mon truc part étapes, ca va me permettre de maitriser un peu tout ca.
 
J'ai fait 3 tables :
 
Original qui contient :  
id    oartist    otitle    oalbum    oyear
 
Reprise qui contient :
id     saritist      stitle      salbum      syear
 
mappingqui contient :
 id      idOriginal      idReprise
 
donc dans ma logique (qui n'est pas une référence :p) je me dis Bon !
Dans cette table de mapping je vais faire correspondre les ID de mes chansons originales avec les ID de mes chansons reprises.
 
exemple:
 
IDoriginal = 1        IdReprise = 1
IDoriginal = 1        IdReprise = 2
 
C'est à dire que pour une chanson Original avec l'ID 1 il y a 2 chansons Reprises qui ont pour ID 1 et 2
 
Donc si je fais une recherche Par artiste original je "devrais" retourner idReprise 1 et 2 qui correspondent dans ma table Reprise à un artiste , un titre ....
 
Donc si je transcris ca en php ca doit ressembler à un truc comme ca :
 

Code :
  1. //je selectionne l'id de l'artiste recherchée
  2. $id= @mysql_query("SELECT id FROM original WHERE oartist ='$oartist'" );
  3. $data = mysql_fetch_array($id);
  4. $id=$data['id'];
  5. //je selectionne dans la table de mapping l'ID des chansons qui ont pour idOriginal l'id de l'artiste recherchée.
  6. $idReprise = "SELECT idReprise FROM mapping WHERE idOriginal = '$id'";
  7. $data = mysql_fetch_array($idReprise);
  8. $idReprise=$data['idReprise'];
  9. //je retourne de la table reprise l'intégralité des champs qui ont pour ID ce que j'ai recu dans la requete précedente !
  10. $result= @mysql_query("SELECT * FROM reprise WHERE id = '$idReprise'" );
  11. $data = mysql_fetch_array($result);
  12. while($data = mysql_fetch_array($result))
  13.     {
  14.     // on affiche les informations de l'enregistrements en cours
  15.    echo "Title : <span class='result'> " .$data["stitle"]." </span><br><br>
  16.   Author : <span class='result'> " .$data["sartist"]." </span><br><br>
  17.   Album : <span class='result'> " .$data["salbum"]." </span><br> <br>
  18.   Year : <span class='result'> " .$data["syear"]." </span><br><br>"; 
  19.     }


 
Hmmm est-ce que je suis completement à l'ouest dans mon raisonnement ?
 
Merci d'avoir lu jusqu'au bout !

n°794163
mareek
Et de 3 \o/
Posté le 13-07-2004 à 02:50:14  profilanswer
 

Ton raisonnement a l'air bon :jap:
 
Tu n'es pas obligé de séparer les reprises et les originales en 2 tables, tu peux mettre tout ça dans une seule table "Chanson".


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°794166
peemousse
Posté le 13-07-2004 à 03:26:13  profilanswer
 

Ok merci ca me rassure ! :)
 
J'ai fait une base unique chanson.
 
Maintenant mon problème c'est du php je pense :/
 
Je récupère l'ID de la chanson originale pas de blem

Code :
  1. $id= @mysql_query("SELECT id FROM song WHERE artist ='$artist'" );
  2. $data = mysql_fetch_array($id);
  3. $id=$data['id'];


 
mais maintenant quand je veux récupérer les ID des reprises je sais pas comment faire parce que je ne sais pas à l'avance combien de chanson reprise il y a :
 

Code :
  1. $idReprise = "SELECT idReprise FROM mapping WHERE idOriginal = '$id'";
  2. $idReprise=mysql_query($idReprise);


 
donc pour ma requete suivante, celle qui va chercher dans la base chanson les reprises correspondantes pour les afficher
 

Code :
  1. $result= "SELECT * FROM reprise WHERE id = '$idReprise'";


 
Le problème se situe au niveau de '$idReprise' si je fais dans la requete précédente
 

Code :
  1. while($data = mysql_fetch_array($idReprise))
  2.     {
  3. //$data = mysql_fetch_array($result);
  4. $idReprise=$data['idReprise'];
  5. }


 
J'ai une erreur ! :/


Message édité par peemousse le 13-07-2004 à 03:27:11
n°794167
mareek
Et de 3 \o/
Posté le 13-07-2004 à 04:03:33  profilanswer
 

Je ne connais pas le PHP, je ne peux pas t'aider :/


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°794223
hop le fou
Tu m'en diras tant
Posté le 13-07-2004 à 09:19:08  profilanswer
 

Le probleme c'est que tu affectes les données de ton résultat ($data['idReprise']) dans ta structure de résultat ($idReprise)
Du coup, quand tu arrives sur ton test dans la boucle while, tu penses tester le résultat de ta requete mais comme tu l'as re-affecté, ca fait une erreur.
--> Utilise une autre variable pour récupérer le résultat (les données, pas la structure).
 
Je suppose que $idReprise est le résultat renvoyé par la fonction mySql_query parce que la on ne la voit pas.
EDIT : ah tiens si c'était écrit plus haut...  :whistle:  
En fait je me demande pourquoi tu fais 2 requetes (1 pour récupérer les id des reprises, et une autre pour les infos des reprises)
Autant tout récupérer d'un coup non?


Message édité par hop le fou le 13-07-2004 à 09:23:05
n°794228
deliriumtr​emens
sic transit intestinal...
Posté le 13-07-2004 à 09:26:35  profilanswer
 

Code :
  1. //requête 1
  2. $sql="SELECT id FROM song WHERE artist='$artist';
  3. $req=mysql_query($sql);
  4. $data=mysql_fetch_array($req);
  5. $id=$data['id'];
  6. //requête 2
  7. $sql2="SELECT mapping.idOriginal, mapping.idReprise, Reprise.* ";
  8. $sql2.="FROM mapping, Reprise ";
  9. $sql2.="WHERE mapping.idOriginal=$id AND mapping.idReprise=Reprise.id";
  10. $req2=mysql_query($sql2);
  11. while($data2=mysql_fetch_array($req2))
  12. {
  13.   $idchansonreprise=$data2['id'];
  14.   ...
  15. }


Message édité par deliriumtremens le 13-07-2004 à 09:29:00
n°794652
Arjuna
Aircraft Ident.: F-MBSD
Posté le 13-07-2004 à 13:24:59  profilanswer
 

:heink:
 
Arrêtez le délire tout de suite...
 
Une seule table suffit !
 
chanson
chanson_id
artiste
titre
album
annee
genre
reprise_id
 
 
Avec reprise_id FK with null pointant sur chanson_id
 
Dans ce champs, pour un original, tu mets vide.
Pour une reprise, tu mets l'id de la chason origonale.
 
Seule limitation :
-> Si une chanson est la reprise de plusieurs autres ça ne marchera pas. Ce cas existe, notamment une chanson française dont je ne me souvient jamais le titre, qui reprends 4 ou 5 grands titres des années 70.

n°794656
Arjuna
Aircraft Ident.: F-MBSD
Posté le 13-07-2004 à 13:27:31  profilanswer
 

Si tu veux mapper les reprises de plusieurs originaux, il te suffit de faire deux tables uniquement. La table REPRISE et la table ORIGINAL sont une seule table !
On ne multiplie les tables que si fonctionnellement il y a une différence. Moi il faut qu'on m'explique quelle est la différence FONCTIONNELLE entre une reprise et un original... Les deux sont des chansons, point barre.
 
On vous apprends quoi en cours d'analyse ?

n°794675
mareek
Et de 3 \o/
Posté le 13-07-2004 à 13:40:12  profilanswer
 

Arjuna a écrit :


On vous apprends quoi en cours d'analyse ?


Et toi, on t'a appris à lire les topics jusqu'au bout avant de répondre ? :sarcastic:  
peemousse a dit qui avait tout mis dans une seule table quelque posts plus haut :o


Message édité par mareek le 13-07-2004 à 13:40:34

---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°794746
peemousse
Posté le 13-07-2004 à 15:01:21  profilanswer
 

Vraiment mercu pour tout vos réponses !! dans la joie et la bonne humeur en plus ! La j'ai pas le temps de tester mais je vous tiens au courant !
 
A tout :p

n°795241
Arjuna
Aircraft Ident.: F-MBSD
Posté le 13-07-2004 à 21:07:08  profilanswer
 

mareek a écrit :

Et toi, on t'a appris à lire les topics jusqu'au bout avant de répondre ? :sarcastic:  
peemousse a dit qui avait tout mis dans une seule table quelque posts plus haut :o


Je parle pas pour lui, je parle pour ceux qui lui ont dit de faire 3 tables :o

n°796744
peemousse
Posté le 15-07-2004 à 17:08:33  profilanswer
 

EDIT : ma question traite de PHP, je vais poster dans le forum adéquate !
 
http://forum.hardware.fr/hardwaref [...] 4949-1.htm


Message édité par peemousse le 15-07-2004 à 17:45:18
n°798209
instantdha​rma
Ailleurs c'est ici
Posté le 17-07-2004 à 01:15:31  profilanswer
 

réponse rapide : commencer par modéliser. DBDesignor est gratos.
di.


---------------
di. / www.diredaredare.org - Ailes de la ville
n°798467
the real m​oins moins
Posté le 17-07-2004 à 13:34:32  profilanswer
 

instantdharma a écrit :

réponse rapide : commencer par modéliser. DBDesignor est gratos.
di.

super pour un bete modele a 2 tables [:mlc]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Réalier une Base de donnée [Artiste original / Artiste Sample ]

 

Sujets relatifs
ocilogon - attaquer une base oracle avec phppb msg erreur (base de donnée)
Pblm de base[SAS]Besoin d'aide, traitement d'une grande base
aide sur base de donnéeLogiciel acces base mysql
[Paradox][MySQL] Cherche soft de convertion de basepb base de donnée
Plus de sujets relatifs à : Réalier une Base de donnée [Artiste original / Artiste Sample ]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR