Réalier une Base de donnée [Artiste original / Artiste Sample ] - SQL/NoSQL - Programmation
Marsh Posté le 12-07-2004 à 23:04:54
Tu fais une table "Chanson_Originale" et une table "Interpretation" qui est liée à la table "Chanson_Originale"
Marsh Posté le 12-07-2004 à 23:06:28
ben dans la table "reprise" tu colles une foreign key vers la table "original"...
Marsh Posté le 12-07-2004 à 23:06:59
mareek a écrit :
|
bah pq tu barres ?
Marsh Posté le 12-07-2004 à 23:09:53
the real moins moins a écrit : bah pq tu barres ? |
parce qu'on duplique les donées inutilement.
Marsh Posté le 12-07-2004 à 23:18:28
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 ?
Marsh Posté le 12-07-2004 à 23:20:25
he ben tu fais une table de mapping
Marsh Posté le 12-07-2004 à 23:23:08
peemousse a écrit : C'est ce que je pensais aussi mais ca va pas fonctionner ! |
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 () avec un champ IDChansonOriginale et un champ IDChansonReprise.
Marsh Posté le 12-07-2004 à 23:23:31
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 !
Marsh Posté le 13-07-2004 à 02:26:47
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.
Marsh Posté le 13-07-2004 à 02:28:24
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
Marsh Posté le 13-07-2004 à 02:41:40
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 ) 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 :
|
Hmmm est-ce que je suis completement à l'ouest dans mon raisonnement ?
Merci d'avoir lu jusqu'au bout !
Marsh Posté le 13-07-2004 à 02:50:14
Ton raisonnement a l'air bon
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".
Marsh Posté le 13-07-2004 à 03:26:13
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 :
|
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 :
|
donc pour ma requete suivante, celle qui va chercher dans la base chanson les reprises correspondantes pour les afficher
Code :
|
Le problème se situe au niveau de '$idReprise' si je fais dans la requete précédente
Code :
|
J'ai une erreur !
Marsh Posté le 13-07-2004 à 04:03:33
Je ne connais pas le PHP, je ne peux pas t'aider
Marsh Posté le 13-07-2004 à 09:19:08
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...
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?
Marsh Posté le 13-07-2004 à 09:26:35
Code :
|
Marsh Posté le 13-07-2004 à 13:24:59
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.
Marsh Posté le 13-07-2004 à 13:27:31
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 ?
Marsh Posté le 13-07-2004 à 13:40:12
Arjuna a écrit : |
Et toi, on t'a appris à lire les topics jusqu'au bout avant de répondre ?
peemousse a dit qui avait tout mis dans une seule table quelque posts plus haut
Marsh Posté le 13-07-2004 à 15:01:21
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
Marsh Posté le 13-07-2004 à 21:07:08
mareek a écrit : Et toi, on t'a appris à lire les topics jusqu'au bout avant de répondre ? |
Je parle pas pour lui, je parle pour ceux qui lui ont dit de faire 3 tables
Marsh Posté le 15-07-2004 à 17:08:33
EDIT : ma question traite de PHP, je vais poster dans le forum adéquate !
http://forum.hardware.fr/hardwaref [...] 4949-1.htm
Marsh Posté le 17-07-2004 à 01:15:31
réponse rapide : commencer par modéliser. DBDesignor est gratos.
di.
Marsh Posté le 17-07-2004 à 13:34:32
instantdharma a écrit : réponse rapide : commencer par modéliser. DBDesignor est gratos. |
super pour un bete modele a 2 tables
Marsh Posté le 12-07-2004 à 22:58:13
Bonjour,
Je sais pas si je suis dans le bon forum .... on verra
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