Question clef étrangère

Question clef étrangère - SQL/NoSQL - Programmation

Marsh Posté le 11-04-2014 à 09:41:30    

Bonjour,
 
Je suis débutant en base de données et je suis confronté à un problème...
 
J'ai créé une base avec 2 tables (exemple de base) : anniversaire et gâteaux.
je voudrais qu'un anniversaire possède au minimum 0 gateau et au maximum n gateaux.  
Evidemment, la question que je me pose est de savoir comment l'utilisateur de mon site pourra mettre plusieurs gateaux pour un seul anniversaire ?  
Par exemple si je veux savoir les gateaux qu'il y avaient dans l'ID anniversaire 58 comment je fais ?
 
 
http://imageshack.com/a/img855/7175/1f8q.png
 
merci par avance pour vos réponses.

Reply

Marsh Posté le 11-04-2014 à 09:41:30   

Reply

Marsh Posté le 11-04-2014 à 10:01:08    

C'est une relation 0-n entre la table Anniversaire et la table Gateau.
Une simple jointure sur l'ID Anniversaire des 2 tables te permettra de lister les gâteaux d'un anniversaire.
 
Pour la saisie, ben tu fais un bouton "ajouter" sur la fiche anniversaire qui mène à une fiche de saisie d'un gâteau. Tu penseras à "conserver" l'ID de l'anniversaire d'où tu viens et lors de l'insert dans la BD, tu met l'iD de l'anniversaire, en plus des infos relatives au gâteau.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 11-04-2014 à 10:12:01    

Cela voudrait dire que je ne peux pas réutiliser un gâteaux pour un autre anniversaire du coup ? Et que je suis forcé de recréer le même gâteaux ?
 
Exemple :  
 
Anniversaire Bruno -> Gâteaux au chocolat (id=1)
Anniversaire Mouloud -> Gâteaux au chocolat (id=2)

Reply

Marsh Posté le 11-04-2014 à 10:25:21    

NoVa92 a écrit :

Cela voudrait dire que je ne peux pas réutiliser un gâteaux pour un autre anniversaire du coup ? Et que je suis forcé de recréer le même gâteaux ?
 
Exemple :  
 
Anniversaire Bruno -> Gâteaux au chocolat (id=1)
Anniversaire Mouloud -> Gâteaux au chocolat (id=2)


 
 
Dans ce cas il faut matérialiser la relation entre anniversaire et gateaux en mettant du n de chaque côté.
 
Anniversaire --- x,n --- Avoir --- x,n --- Gateaux
 
Et donc l'association "Avoir" deviendrais une table.

Reply

Marsh Posté le 11-04-2014 à 10:28:06    

C'est vous qui le décidez quand vous créez votre modèle, en fonction éventuellement des contraintes.
 
Mais si vous faites une relation (n,n), ce n'est plus une clé étrangère qu'il faut utiliser, mais une table de jointure.
 
Bonne continuation !
 
Edit : Trop lent, petit scarabée :)


Message édité par Farian le 11-04-2014 à 10:28:35
Reply

Marsh Posté le 11-04-2014 à 10:31:39    

ah ben si tu veux réutiliser un gâteau, t'es dans le cas d'une relation n-n. Il faut donc ajouter une table intermédiaire AnniversaireGateau ayant un ID et 2 clés étrangères : l'ID anniversaire et l'ID gâteau (du coup, y'a plus l'ID anniversaire dans la table Gâteau).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 11-04-2014 à 10:31:39    

Ah d'accord ...
 
Mais du coup il y aurait quoi dans cet table "Avoir"? Les deux clef primaire ?


---------------
eXosted-clan . Mon SK . Mon petit Feed Back
Reply

Marsh Posté le 11-04-2014 à 10:32:18    

NoVa92 a écrit :

Ah d'accord ...
 
Mais du coup il y aurait quoi dans cet table "Avoir"? Les deux clef primaire ?


Voir mon post ci-dessus ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 11-04-2014 à 10:36:32    

Oué j'ai vu on a posté à la même seconde ^^
 
Merci beaucoup pour les réponses c'est déjà plus claire :)


---------------
eXosted-clan . Mon SK . Mon petit Feed Back
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed