Clé étrangère dans une BD

Résolu
Signaler
Messages postés
46
Date d'inscription
samedi 1 novembre 2003
Statut
Membre
Dernière intervention
16 avril 2008
-
Messages postés
1251
Date d'inscription
mercredi 7 août 2002
Statut
Modérateur
Dernière intervention
10 avril 2013
-
Hello,
Une petite question par rapport cette fois ci à ma clé étrangère que j'ai dans mes tables, est ce qu'il y a une manière de dire, cette clé étrangère correspond à cette table ? Je l'ai fait à la base en créant mes tables en code SQL, faut il encore faire qqch de plus dans MySql ?
J'aimerais faire par exemple, une insertion de donnée pour inserer par exemple le nom (table client), prenom (table client) et localité (table localité) d'une personne, et la localité se trouve donc dans une autre table. Donc dans la table client,j'ai une clé étrangère qui correspond à la table localité. Comment donc faire afficher dans la table client la clé étrangère qui correspond à la localité du client insérer ?
Merci
Salutations

8 réponses

Messages postés
1251
Date d'inscription
mercredi 7 août 2002
Statut
Modérateur
Dernière intervention
10 avril 2013

SELECT tableville.*
FROM tableville
WHERE (((tableville.ville)="Paris"))

Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle
Messages postés
1251
Date d'inscription
mercredi 7 août 2002
Statut
Modérateur
Dernière intervention
10 avril 2013

Hello,
Il faut prendre des principes de base, sans vouloir trop rentrer dans le détail de gestion des base de données tu dois savoir plusieurs choses :
1 Une base de données est composée de table
2 Chaque table est composée de champs
3 Les champs peuvent être de différents type (texte, numérique, date,...)
4 Chaque champs peut etre indexé, ce qui permet au moteur de la base de donnée de faire des recherches plus rapide
5 Il ne faut pas indexer tout et n'importe quoi
6 Il y a plusieurs façon de définir des clés primaire et il existe 2 types de clé (technique et fonctionelle), celles-ci doivent certainement être indexée.
7 Une clé primaire c'est ce qui définit qu'un enregistrement (record) est unique.
8 Une clé peut etre à la fois technique et fonctionelle.
Imaginons un exemple simple une table client qui contient comme champs : nom, prénom, sociéte, adresse, ville,....
Une table facture qui contient comme champs : référence de facture, date, montant
Définissons une clé primaire de la table client qui sera nom, prénom et société
On peut dire que chaque facture appartient à un et un seul client, donc il va falloir définir un champs supplémentaire au niveau de la table facture qui va pointer sur la table client c'est ce que l'on appel une relation et c'est ce qui répond à ta question .
Le problème c'est que la clé de table client est longue (3 champs texte).
Donc il va falloir définir au niveau de la table client une clé technique qui sera de type autonumber (1,2,3,4,...)
Maintenant nous disponsons de 2 clés au niveau de la table client, l'une technique (unique) qui servira pour les relations avec d'autres tables et l'autre fonctionelle (unique également) mais qui servira à définir que les données sont unique.
Faute à ne pas faire : c'est définir comme clé fonctionelle un champs autonumber et un ou plusieurs autres champs

J'espère que ceci répond à ta question.

Avec Access il est évidement plus simple de gérer tout ça car tu dispose d'une interface graphique qui le fait pour toi.

tu trouveras dès infos ici également : http://www.asp-php.net/tutorial/asp-php/index.php?page=2

Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle
Messages postés
46
Date d'inscription
samedi 1 novembre 2003
Statut
Membre
Dernière intervention
16 avril 2008

Merci pour toutes tes infos,
Je t'explique en 2 mots ce que j'ai fait. J'ai tout d'abord employé le programme power Designer pour modeler mes tables et faire les liens entre les différentes tables, ensuite j'ai transféré ce modele en modèle physique... ce qui m'a permis de générer ensuite automatiquement ma BD. Donc le code SQL est généré avec certitude par le programme (de toute facon je controle encore une fois, et j'ai l'habitude de bosser avec ces outils)... et donc dans phpMyAdmin, j'ai généré automatiquement la BD.. donc c'est qqch de relativement sur. Mais automatiquement quand je fais des requetes d'insertion par exemple, tous les champs se remplissent sauf la clé primaire (que j'auto incrémente) et la clé étrangère qui elle reste constamment à zéro... comme faire pour la faire évoluer ? faut que je l'intègre dans la requete ? ou bien ca se fait au niveau de la BD ?
Merci pour ton aide
Alf
Messages postés
1251
Date d'inscription
mercredi 7 août 2002
Statut
Modérateur
Dernière intervention
10 avril 2013

Hello,

dans la logique si tu ajoutes un enregistrement et que l'un des champs pointe sur une clé d'une autre table, il lui faut la valeur de ctte clé.
Exemple : table ville avec
1 Toulon
2 Paris
3 Bruxelles
Si tu ajoutes un client qui habite paris, dans le champs ville du client tu aura la valeur 3.

Est-ce claire?

Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle
Messages postés
1251
Date d'inscription
mercredi 7 août 2002
Statut
Modérateur
Dernière intervention
10 avril 2013

oups la valeur 2 et non 3 :)
Messages postés
46
Date d'inscription
samedi 1 novembre 2003
Statut
Membre
Dernière intervention
16 avril 2008

Nickel.. on y arrive gentillement, merci encore pour ton aide.
Donc quand le client rentre la ville de paris par exemple.. comment dire que le 3 correspond à paris, dans ta requete ? il doit tout d'abord aller tester dans la table ville.. à quoi correspond paris ? et revenir dans la table client pour ajouter le no 3 ?
Merci
Messages postés
1251
Date d'inscription
mercredi 7 août 2002
Statut
Modérateur
Dernière intervention
10 avril 2013

Cela dépend de la façon dont il va rentrer la ville de Paris, si tu lui présente une liste de valeur de toutes les villes que t'as en stock :o) avec en arrière plan la clé pour chacune de ces villes, il te suffira de récupérer la clé, sinon comme tu dis tu devras faire une requete sur ta table ville vérifier si elle existe et agir en circonstance.

Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle
Messages postés
46
Date d'inscription
samedi 1 novembre 2003
Statut
Membre
Dernière intervention
16 avril 2008

Merci !!!
Ta réponse me convient très bien.
Et tu aurais pas par hasard un exemple de requete déja faite ?
Salutations
Alf