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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Clef externe SQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Clef externe SQL

n°998036
creusois
Posté le 02-03-2005 à 11:27:46  profilanswer
 

Bonjour,  
 
Je debute plus ou moins dans le SQL, autrement dit je commence à vouloir faire des bases de données assez complexe et je me heurte à une difficulté:  
 
Je n arrive pas a faire de lien entre deux tables. Je m'esplique, j ai une table etablissement avec dedans {id, type, nom, prenom} et une table photo {id, etablissement , Portugal} et je veux relier photo->etablissementavec la table etablissement->id. comment faire ca avec phpmyadmin. Je n arrive pas a trouver comment faire ce genre de chose.  
 
 
J'ai tout de meme trouvé un bout de qq chose, que mysql accepte mais je sens pas que ca fasse quelque chose:
 
ALTER TABLE photosADD CONSTRAINT FK_etablissement FOREIGN KEY ( etablissement) REFERENCES etablissement( id) ;  
 
Je vous remercie.

mood
Publicité
Posté le 02-03-2005 à 11:27:46  profilanswer
 

n°998126
glod 2
Votre trajet, notre projet.
Posté le 02-03-2005 à 12:03:56  profilanswer
 

C'est bien la commande que t'as postée.
Sinon

Citation :

{id, etablissement , Portugal}

:??:

n°998143
creusois
Posté le 02-03-2005 à 12:25:55  profilanswer
 

oui escuse moi je voulais mettre pays.
 
D'accord c est donc bien la commande que j ai posté, mais j ai du mal a l'utilisé car d'apres l exemple que j ai trouvé je devrais mettre: FK_... je comprends pas pourquoi rajouter ce FK_
 
Sinon je marque la synthaxe, si tu pouvais me reprendre si je me trompe.
 
ALTER TABLE 'table_fils' CONSTRAINT FK_'occurence_fils' FOREIGN KEY ('encore une fois occurence fil?????') REFERENCES 'table_pere' ('occurence_pere');
 
Autre question, une fois que c'est fait, via phpmyadmin, ai-je la possibilité de voir ce lien?
Aussi, j 'ai cru comprendre qu il existait des contrainte comme: Nous ne pouvons pas supprimé la table du pere pere si la table du fils existe tjrs. Pourtant moi j ai eu l impression que la suppression etait possible. Peut-etre est-ce parce que le lien n avais pas pu se faire du a une erreur (le FK_ par exemple)
 
J'espere avoir été le plus clair possible.
 
Merci

n°998221
vttman2
Je suis Open ...
Posté le 02-03-2005 à 13:50:05  profilanswer
 

ALTER TABLE photosADD CONSTRAINT FK_etablissement FOREIGN KEY ( etablissement) REFERENCES etablissement( id) ;  
 
En fait tu rajoutes par cette instruction une contrainte d'intégrité sur le champ etablissementde la table photos ...
 
Ainsi pour insérer ou mettre à jour
ton champ etablissement niveau toujours de ta table photos,
il faudra que ce champ existe dans id niveau de ta table etablissement sinon tu auras un message d'erreur ...  
 
C en fait un contrôle automatique que tu mets
en place au niveau de ta table photos qui empêchera de mettre n'importe quoi dans ton champ etablissement ...
 
En plus de cela il te sera impossible de supprimer un id
de ta table etablissement si celui-ci est utilisé dans
ta table photos champ etablissement ...
 
 
C plus clair ?


Message édité par vttman2 le 02-03-2005 à 13:50:59
n°998233
glod 2
Votre trajet, notre projet.
Posté le 02-03-2005 à 13:58:27  profilanswer
 

creusois a écrit :

oui escuse moi je voulais mettre pays.
 
D'accord c est donc bien la commande que j ai posté, mais j ai du mal a l'utilisé car d'apres l exemple que j ai trouvé je devrais mettre: FK_... je comprends pas pourquoi rajouter ce FK_
 
Sinon je marque la synthaxe, si tu pouvais me reprendre si je me trompe.
 
ALTER TABLE 'table_fils' CONSTRAINT FK_'occurence_fils' FOREIGN KEY ('encore une fois occurence fil?????') REFERENCES 'table_pere' ('occurence_pere');
 
Autre question, une fois que c'est fait, via phpmyadmin, ai-je la possibilité de voir ce lien?
Aussi, j 'ai cru comprendre qu il existait des contrainte comme: Nous ne pouvons pas supprimé la table du pere pere si la table du fils existe tjrs. Pourtant moi j ai eu l impression que la suppression etait possible. Peut-etre est-ce parce que le lien n avais pas pu se faire du a une erreur (le FK_ par exemple)
 
J'espere avoir été le plus clair possible.
 
Merci


le FK_machin c'est le nom de la contrainte que tu vas créer, on met FK_ + nom du champ par convention mais tu peux aussi bien mettre tartanpion ça ira aussi. Par contre vu que c'est un nom, ton FK_'machin' n'est pas valide, FK_machin est bon par contre.

n°998242
creusois
Posté le 02-03-2005 à 14:02:11  profilanswer
 

C'est exactement ce dont j'ai besoin. Je commence a voir le bout du tunnel, je te remercie beaucoup pour ton aide.
 
Reste juste une petite question (et oui encore et toujours la der des der). Est-ce que je vois ce lien dans mon administration de base de donnée sql? J'utilise le tres connu phpmyadmin.

n°998250
creusois
Posté le 02-03-2005 à 14:04:02  profilanswer
 

glod 2 a écrit :

le FK_machin c'est le nom de la contrainte que tu vas créer, on met FK_ + nom du champ par convention mais tu peux aussi bien mettre tartanpion ça ira aussi. Par contre vu que c'est un nom, ton FK_'machin' n'est pas valide, FK_machin est bon par contre.


 
Oki merci bien pour tes esplications, pas de probleme je met pas les simples cotes entre "machin"

n°998956
creusois
Posté le 02-03-2005 à 23:31:57  profilanswer
 

Bonsoir
 
Donc j'ai bien fait mes requetes qui ont été accepté sans probleme. Seulement je voudrais savoir si j'ai un moyen de bien visualiser les clefs externes que j'ai créé via phpmyadmin. Car apres les avoir créé, j'ai voulu sauvegarder ma base de donnée dans un fichier texte (la structure), et je retrouve bien les tables et les differents champs, mais je ne trouve null par trace des liens que j'ai fait.
 
Je me pose alors la question, à savoir si j'ai bien fait les liens, auquels cas, ils ne sont pas "transportables" dans un fichier sql de sauvegarde de structure. Ou bien alors je n'ai pas réussi a faire mes liens.
Une autre possibilité serait aussi qu'une case a coché est indispensable pour bien sauvegarder la structure et les liens externes.
 
Merci

n°1000193
creusois
Posté le 03-03-2005 à 22:18:28  profilanswer
 

En parcourant les forums, j'ai lu qu il fallait aussi que le format de nos tables soit en BERKELEY DB, qq pourrait m'en dire un peu plus?


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

  Clef externe SQL

 

Sujets relatifs
[SQL] Export de table dans un fichier : commande ?base de donnée livre avec My SQL
[C++/SQL./Oracle] Juste un petit problème de chaine...VBS et XML et SQL !
Requete SQL en ASP -- Helpdebutant formulaire access et SQL
Probleme de requet SQL php[SQL] Question bête
Connection à SQL server[SQL SERVER] Primary key de type char/varchar
Plus de sujets relatifs à : Clef externe SQL


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