J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 200710 7 févr. 2006 à 17:10
Salut,
Cela dépend de ta base de donnée (MyISAM, innoDB, ...)
Mais le plus simple : tu déclares ta clef comme une donnée normale (entier positif non null)
Avec certaine bases tu peux définir des fonctions internes qui s'occupe de faire les correspondances entre les tables liées par une cléf étrangère.
Mais en règle générale, la notion de FK est plus souvent une indication de la structure de la base (donc écrite sur le papier/cahier des charges) qu'un code informatique (les fameuses fonctions sus-mentionnées).
Par contre, je ne confirme pas la proposition de sidf. Garde ta possiblité d'avoir plusieurs CD pour un même groupe... Par contre, qu'arrivera t-il si un CD est une compile de plusieur groupes ?!? (aie, aie, aie, ...)
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 7 févr. 2006 à 17:19
Heu par contre oui, je n'avais pas du tout réflêchi à la structure, et J_G a raison : ta structure est mauvaise, mais uniquement dans le dernier cas qu'il cite : 1 cxd avec plusieurs groupes.
Parce que si on a 1 groupe => 1, n cd, la structure est ok.
On ne va pas sortir une table de jointure dans ce cas ?
tbl_groupes :
grp_id
grp_nom
etc...
tbl_cd:
cd_id
cd_nom
grp_id
ca ne gène pas.
Mais en effet, si on a 1,n groupes => 1,n cd, dans ce cas:
tbl_groupes :
grp_id
grp_nom
...
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 7 févr. 2006 à 17:38
Mais n'oublions pas la remarque de J_G concerant LE cd contenant les titres de différents groupes...tu ne peux pas le gérer avec cette structure, hein.
J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 200710 7 févr. 2006 à 17:46
sidf...
J'avais un peu mal lu !(
En fait, c'est le idgroupe en Primary Key qui m'a géné...
Une clef primaire doit être unique, idéologiquement parlant. Il en découlerait que chaque cd aurait un groupe différent (dans le cas que tu présentes).
Mais, à part ça... Tu as raison.
Pour compléter ce que dit malalam :
Dans le cas où tu cherches un cd n'étant pas (ou plus) lié à un groupe
SELECT
IF(grp.grp_nom IS NULL,'Inconnu',grp.grp_nom) AS grp_nom, cd.cd_nom
FROM cd
LEFT JOIN groupes grp ON grp.grp_id=cd.grp_id
WHERE cd.cd_id = 3
J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 200710 9 févr. 2006 à 10:57
sidf :
Ah ok... Oui, c'est possible de créer une clef de deux champs.
Mais je ne vois pas trop l'intéret ici. (Faut dire que je ne m'intéresse au sujet que de loin)
malalam :
Merci pour la syntaxe ON UPDATE... Je l'utiliserai quand mon serveur cd décidera enfin à considérer MySQL 3.23 comme étant désué. (pfou... je vois les chiffres passé : 4, 5, 5.1 à 6 je saute)