CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

foreign key - references

porsnak
porsnak
Niveau 10
21 août 2004 à 14:58:53

:salut:

Je ne comprends pas le principe des références vers des champs d´une autre table dans MySQL.

Par exemple, qu´est-ce que ça fait d´avoir un champs d´une table X pointé vers une table Y ? Ou bien pointé vers un autre champs J de ce cette table Y ? Je ne capte pas la façon d´utiliser cette technique.

J´ai cherché sur plusieurs manuels mais je n´ai pas compris ce que je cherche.

Merci de m´aiguiller, pourquoi pas par un exemple clair.

Yoda_Software
Yoda_Software
Niveau 30
21 août 2004 à 15:43:43

Si tu donnais un exemple de champs d´une table X pointé vers une table Y ( ou bien pointé vers un autre champs J de ce cette table Y), parce que moi je n´ai rien compris à ta question !

porsnak
porsnak
Niveau 10
21 août 2004 à 16:06:30

oki :)
Ce sont des tables ´génériques´, je ne parle pas d´une en particulier. Là par exemple, je prends celles d´un manuel :

CREATE TABLE Livres
( titre VARCHAR ( 50) NOT NULL,
idAuteur VARCHAR ( 30),
idEditeur VARCHAR ( 30),
date INT,
prix FLOAT,
stock INT,
PRIMARY KEY ( titre),
FOREIGN KEY ( idAuteur) REFERENCES Auteurs,
FOREIGN KEY ( idEditeur) REFERENCES Editeurs
)

CREATE TABLE Auteurs
( id INT AUTO_INCREMENT NOT NULL,
nom VARCHAR ( 20) NOT NULL,
prénom VARCHAR ( 20),
naissance VARCHAR ( 6) NOT NULL,
mort VARCHAR ( 6),
PRIMARY KEY ( id),
UNIQUE ( nom, prénom)
)

CREATE TABLE Editeurs
( id INT AUTO_INCREMENT NOT NULL,
nom VARCHAR ( 30) NOT NULL,
adresse VARCHAR ( 50) NOT NULL,
téléphone INT ( 10) NOT NULL,
PRIMARY KEY ( id),
UNIQUE nom
)

Voilà. Ma question est toute bête : comment exploiter ça ? ( par ´ça´ j´entends les champs idAuteur et idEditeur de la table livre).

Yoda_Software
Yoda_Software
Niveau 30
21 août 2004 à 16:26:50

Ah ! Ok !

En fait, l´utilisation des champs idAuteur et idEditeur permet de lier les tables comme s´il n´y en avait qu´une, mais en supprimant la redondance de données.

Par exemple tu peux faire :

SELECT l.titre, a.nom, a.prenom, e.nom, l.date, l.prix, l.stock
FROM livre AS l, auteur AS a, editeurs AS e
WHERE l.idAuteur=a.id
AND l.idEditeur=e.id
ORDER BY l.titre;

electron_libre
electron_libre
Niveau 10
21 août 2004 à 16:49:42

pas sur que ca l´aide bcp à comprendre l´interet, bon je vais essayer de me lancer

dans ton cas, tu as des livres, que tu veut mettre dans une base de données, donc dans un 1er temps tu cherches ce qui caracterise un livre, ici :
l´auteur
l´editeur
la date ( de parution surement)
le prix ( ca doit surement concerne une boutique en ligne)
le stock ( pareil)

de meme un auteur est caracterisé par son nom, son prenom . .. et il est pas impossible qu´un auteur ai ecrit plusieur livre, donc pour chaque livre, si tu avait une seul table, tu devrais renseigner autant de fois le nom de l´auteur et son prenom . ..
outre le fait que c chiant de faire plusieurs fois la meme chose, et qu´en cas de modification, tu doivent le faire plusierus fois aussi . .. il y a un probleme d´espace informatique à prendre en compte

donc en fait on renseigne 1 fois les infos d´un auteur dans une table, et pour chaque livre, au lieu de donnée toute les infos, on donne seulement le n° d´identifiant unique de l´auteur ( idauteur), grace à cette valeur ca nous permet de retrouver les données de l´auteur ( voir requete de yoda), il en est de meme pour l´editeur

donc les cles etrangeres ( foreign key) servent juste à faire les liens entre les tables

porsnak
porsnak
Niveau 10
21 août 2004 à 16:59:02

Ok, merci à tous les deux, je vais essayze pour voir si j´ai compris.

porsnak
porsnak
Niveau 10
21 août 2004 à 17:03:29

Non, en fait je ne comprends pas le pourquoi du comment de ta requête, Yoda... Qu´est-ce qu´elle est censée faire ?

Yoda_Software
Yoda_Software
Niveau 30
21 août 2004 à 17:12:50

Pour chaque livre qui se trouve dans la table livre, elle affiche :
- son titre
- le nom et le prénom de l´auteur
- le nom de l´éditeur
- la date de parution
- son prix
- la quantité en stock

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment