[SQL][Compris]foreign key

foreign key [SQL][Compris] - SQL/NoSQL - Programmation

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
Reply

Marsh Posté le 06-04-2004 à 00:45:16   

Reply

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. ;)

Reply

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 ...


Message édité par patastronch le 06-04-2004 à 01:02:34
Reply

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. :D
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. :o

Reply

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é :)

Reply

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 ?

Reply

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,  
 
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 ?


 
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 :))

Reply

Marsh Posté le 06-04-2004 à 01:53:13    

sincerement merci naceroth !


Message édité par patastronch le 06-04-2004 à 01:53:25
Reply

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 :  :D  c'est normal que dans phpmyadmin, rien ne s'affiche quand on créé une foreign key ? est-elle prise en compte par mysql ?

Reply

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 :
  1. SHOW CREATE TABLE ta_table;

Reply

Marsh Posté le 30-09-2004 à 14:46:23   

Reply

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.
 
Pour avoir le détail de ta table :

Code :
  1. SHOW CREATE TABLE ta_table;




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 ?


Message édité par Scarf3ss3 le 01-10-2004 à 08:06:46
Reply

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é...

Reply

Sujets relatifs:

Leave a Replay

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