Sql clé étrangère phpMyAdmin
Fermé
novas91000
Messages postés
21
Date d'inscription
lundi 11 octobre 2010
Statut
Membre
Dernière intervention
9 mai 2011
-
4 déc. 2010 à 23:32
novas91000 Messages postés 21 Date d'inscription lundi 11 octobre 2010 Statut Membre Dernière intervention 9 mai 2011 - 5 déc. 2010 à 00:24
novas91000 Messages postés 21 Date d'inscription lundi 11 octobre 2010 Statut Membre Dernière intervention 9 mai 2011 - 5 déc. 2010 à 00:24
A voir également:
- Sql clé étrangère phpMyAdmin
- Clé windows 10 gratuit - Guide
- Cle usb non reconnu - Guide
- Clé bootable windows 10 - Guide
- Recuperer cle windows - Guide
- Formater clé usb mac - Guide
1 réponse
Salut,
Attention à ne pas confondre identifiant naturel dans merise et clé primaire dans les tables.
Une clé étrangère n'est pas la clé primaire. Identifiant naturel ne signifies pas clé primaire sauf lorsque celui ci est unique. Il ne peut avoir qu'une seule clé primaire et par commodité on rajoutes le champ numérique idmembre qui ne correspond à aucune donnée du Dictionnaire de données Merise. Il y a des pour et des contre mais dans le cas de la table membre ça évite de faire le tri sur les 3 identifiants naturels de la table (nom+prénom+date de naissance car deux personnes de même nom et prénom est courant, moins probable qu'ils soient nés exactement le même jour).
Bref en considérant la table Image:
idMembre INT auto_increment
idMembre ne peut être auto_increment puisqu'il doit obligatoirement correspondre à idMembre de la table Membre. Généralement il est plus pratique de les nommer différemment parce qu'ils font référence à la même donnée mais dans des tables différente afin de ne pas les confondre; par exemple refMembre dans table image.
Ce champs dans la table image fait la liaison entre les deux tables(on parles aussi de jointures de tables), donc lorsque on cherche les images du membre dont l'idmembre sur la table membre est 3 il suffiras de chercher
WHERE refmembre.IMAGE=idmembre.MEMBRE (donc où l'id de la table membre apparaît dans la table image).
Il NE PEUT PAS ÊTRE AUTO-INCREMENTE, l'auto incrément rajoute 1 à chaque enregistrement, pour tout enregistrement de la table image il faut récupérer avant l'idmembre de la table membre afin de l'insérer dans la table image.
Inversement l'identifiant de la table image permet de retrouver le nom et prénom du membre donc surtout pas auto-incrémenté.
edit: l'erreur vient du fait que tu utilises le MCD pour les tables, hors celles ci sont faites par le MLD.
Attention à ne pas confondre identifiant naturel dans merise et clé primaire dans les tables.
Une clé étrangère n'est pas la clé primaire. Identifiant naturel ne signifies pas clé primaire sauf lorsque celui ci est unique. Il ne peut avoir qu'une seule clé primaire et par commodité on rajoutes le champ numérique idmembre qui ne correspond à aucune donnée du Dictionnaire de données Merise. Il y a des pour et des contre mais dans le cas de la table membre ça évite de faire le tri sur les 3 identifiants naturels de la table (nom+prénom+date de naissance car deux personnes de même nom et prénom est courant, moins probable qu'ils soient nés exactement le même jour).
Bref en considérant la table Image:
idMembre INT auto_increment
idMembre ne peut être auto_increment puisqu'il doit obligatoirement correspondre à idMembre de la table Membre. Généralement il est plus pratique de les nommer différemment parce qu'ils font référence à la même donnée mais dans des tables différente afin de ne pas les confondre; par exemple refMembre dans table image.
Ce champs dans la table image fait la liaison entre les deux tables(on parles aussi de jointures de tables), donc lorsque on cherche les images du membre dont l'idmembre sur la table membre est 3 il suffiras de chercher
WHERE refmembre.IMAGE=idmembre.MEMBRE (donc où l'id de la table membre apparaît dans la table image).
Il NE PEUT PAS ÊTRE AUTO-INCREMENTE, l'auto incrément rajoute 1 à chaque enregistrement, pour tout enregistrement de la table image il faut récupérer avant l'idmembre de la table membre afin de l'insérer dans la table image.
Inversement l'identifiant de la table image permet de retrouver le nom et prénom du membre donc surtout pas auto-incrémenté.
edit: l'erreur vient du fait que tu utilises le MCD pour les tables, hors celles ci sont faites par le MLD.
5 déc. 2010 à 00:24
membres(idMembre, nom, prenom, dateNaiss, lieuNaiss, motDePasse)
idMembre : clé primaire
images(idImage, nom, extension, idMembre)
idImage : clé primaire
idMembre : clé étrangère en référence à idMembre de membres
et idMembre dans images est clé étrangère car elle existe dans une autre table et elle fait le lien avec idMembre de membres car une image n'appartient qu'à un seul membre !
je n'ai pas très bien compris ta logique là ^^