Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2782 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL][Compris]foreign key

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL][Compris]foreign key

n°693055
patastronc​h
Posté le 06-04-2004 à 00:45:16  profilanswer
 

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
mood
Publicité
Posté le 06-04-2004 à 00:45:16  profilanswer
 

n°693062
kalex
Posté le 06-04-2004 à 00:54:37  profilanswer
 

C'est une clef étrangère, une clef qui se rapporte à une autre table.
 
Note que google marche toujours. ;)

n°693068
patastronc​h
Posté le 06-04-2004 à 01:02:09  profilanswer
 

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
n°693072
kalex
Posté le 06-04-2004 à 01:12:21  profilanswer
 

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

n°693073
naceroth
Posté le 06-04-2004 à 01:12:57  profilanswer
 

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

n°693080
patastronc​h
Posté le 06-04-2004 à 01:21:07  profilanswer
 

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 ?

n°693088
naceroth
Posté le 06-04-2004 à 01:48:49  profilanswer
 

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

n°693093
patastronc​h
Posté le 06-04-2004 à 01:53:13  profilanswer
 

sincerement merci naceroth !


Message édité par patastronch le 06-04-2004 à 01:53:25
n°860704
Scarf3ss3
Posté le 30-09-2004 à 09:35:34  profilanswer
 

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 ?

n°861017
kalex
Posté le 30-09-2004 à 14:46:23  profilanswer
 

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;

mood
Publicité
Posté le 30-09-2004 à 14:46:23  profilanswer
 

n°861718
Scarf3ss3
Posté le 01-10-2004 à 08:05:52  profilanswer
 

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
n°866637
kalex
Posté le 06-10-2004 à 21:50:04  profilanswer
 

Si je ne me trompe pas, Berkeley DB supporte les foreign key. Mais j'ai jamais essayé...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL][Compris]foreign key

 

Sujets relatifs
Que représente % en SQL (aide pour moteur de recherche)Hébergement SQL avec port 3306 accessible
Requete SQL Oracle : Pourquoi ca ne marche pas ?trie en sql sur jointure
[SQL] Probleme de connexion à une base[java][sql]connection java/Sql Server
[SQL][résolu] 2 colonnes en 1 seuleDernier enregistrement sous SQL
[SQL] Type de données incompatible dans l'expression du critère.[SQL] "from ...., table t(2)" : Que signifie "(2)"
Plus de sujets relatifs à : [SQL][Compris]foreign key


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR