foreign key [SQL][Compris] - SQL/NoSQL - Programmation
Marsh Posté le 06-04-2004 à 00:54:37
C'est une clef étrangère, une clef qui se rapporte à une autre table.
Note que google marche toujours.
Marsh Posté le 06-04-2004 à 01:02:09
justement une clé etrangere je saisis pas trop le sens, pourquoi le definit on dans cette table, a qui ca sert exactement ? Je me suis mis au SQL cet apres midi donc c est pas encore devenu evident pour moi ...
Marsh Posté le 06-04-2004 à 01:12:21
En tant qu'utilisateur de MySQL, je ne suis pas le mieux placer pour t'expliquer.
C'est une clef qui appartient à une autre table. C'est très utile pour faire référence au contenu d'une autre table sans risque d'erreur ou doublon.
Je ne peux pas aller plus loin sans risque de me tromper.
Marsh Posté le 06-04-2004 à 01:12:57
Une clé étrangère sert à établir une liaison entre deux tables, via une clé primaire dans la table "maitre" et une clé étrangère dans une table "esclave".
Exemple : une table client(idclient, nom, prenom, etc) et une table commande(idcommande, idclient, etc). Grace à idclient tu pourras retrouver les commandes appartenant à un client donné
Marsh Posté le 06-04-2004 à 01:21:07
donc si je comprends bien dans foreign key je met les clés des autre tables, c a d :
table1(champ1,champ2,champ3,champ4)
table2(champ5,champ3,champ6,champ7)avec champ3 et champ7 comme clé
table3(champ8,champ2,champ7)avec champ8 et champ2 comme clé
dans la table1 un je defini champ2 et champ3 comme clé etrangere ?
dois je le faire dasn table2 et table3 ?
par exemple dans table3 definir champ7 comme clé etrangere ?
Marsh Posté le 06-04-2004 à 01:48:49
patastronch a écrit : donc si je comprends bien dans foreign key je met les clés des autre tables, |
Comme une peit dessin vaut mieux qu'un long discours, voilà un modèle de base fait en vitesse le modèle.
Tu vois 4 tables, chacune avec un clé primaire (les noms de champs précédés d'une clé), qui sont uniques dans toute la table. En partant de blog_rubrique, j'ai créer une liaison avec blog_article en créant une clé étrangère id_rubrique dans la table blog_article que je mets en relation avec le champ id_rubrique de blog_rubrique.
Maintenant, il n'y a pas de relation entre blog_fiche et blog_article, donc je n'ai pas de clé étrangère entre les deux tables (mais elles en ont toutes les deux une avec blog_rubrique)
Bref, il n'y a des CE que quand il y a relation entre 2 tables, il peut y en avoir plusieurs dans la même table, et elles sont toujours liées à des clés primaires.
(PS : Avant de t'attaquer au SQL, commence par lire l'un ou l'autre tutorial sur l'architecture des bases de données, question d'assimiler des concepts qu'on utilise tout le temps mais qui peuvent dérouter eu début )
Marsh Posté le 06-04-2004 à 01:53:13
sincerement merci naceroth !
Marsh Posté le 30-09-2004 à 09:35:34
Désolé de remonter ce vieux post mais je pense que c'était préferable que d'en créer un autre.
Question simple et rapide : c'est normal que dans phpmyadmin, rien ne s'affiche quand on créé une foreign key ? est-elle prise en compte par mysql ?
Marsh Posté le 30-09-2004 à 14:46:23
Uniquement sur des tables InnoDB, les tables MyISAM acceptent la commande, mais n'en tiennent pas compte.
Pour avoir le détail de ta table :
Code :
|
Marsh Posté le 01-10-2004 à 08:05:52
kalex a écrit : Uniquement sur des tables InnoDB, les tables MyISAM acceptent la commande, mais n'en tiennent pas compte.
|
Il y a un petit souci ma version de mysql ne propos que des tables :
MyISAM
Heap
Merge
Berkeley DB
ISAM
Aucunes de ces tables n'en tiendrai compte ?
Marsh Posté le 06-10-2004 à 21:50:04
Si je ne me trompe pas, Berkeley DB supporte les foreign key. Mais j'ai jamais essayé...
Marsh Posté le 06-04-2004 à 00:45:16
Bon je debute en SQL et je voulais savoir ce que signifiait le champs foreign key lors de la creation d'un table ?
merci pour vous reponses
surment la question a deja ete postée mais l option de recherche est desactivée ...
Message édité par patastronch le 06-04-2004 à 01:55:08