Comprendre les relations 1-N et N-1 en PostgreSQL : guide pratique pour mieux interroger vos tables

WSO2 Micro Integrator File .Properties Conseil IT IS Nantes

📊 Comprendre les relations 1-N et N-1 en PostgreSQL : guide pratique pour mieux interroger vos tables

👉 Objectif de l’ article : vous apprendre Ă  identifier facilement les relations entre tables PostgreSQL — en particulier les relations un-Ă -plusieurs (1-N) et plusieurs-Ă -un (N-1) — Ă  l’aide de requĂȘtes SQL simples.

Que vous soyez développeur, analyste ou architecte, cette compréhension est essentielle pour modéliser vos données, écrire des jointures pertinentes et fiabiliser votre code.

Dans une base de donnĂ©es relationnelle, bien concevoir les relations entre les tables PostgreSQL est essentiel pour garantir la cohĂ©rence des donnĂ©es et la performance des requĂȘtes. Parmi les types de relations les plus courants en SQL, on retrouve les relations un-Ă -plusieurs (1-N) et plusieurs-Ă -un (N-1). Ces liens logiques structurent les interactions entre entitĂ©s dans un schĂ©ma de base de donnĂ©es.

👉 Dans cet article, nous allons vous montrer comment identifier ces relations entre les tables PostgreSQL en utilisant deux requĂȘtes SQL simples.

đŸ€– Marius, toujours dans la base, souffle :

« On ne touche pas Ă  une jointure sans connaĂźtre les relations entre les tables
 parole de DBA ! »

LMVI Conseil Conseil IT IS WSO2 Nantes et toute la France

Bonjour !

Je suis Jean-Marc HENRY, ingénieur ESI, consultant IT/IS pour les entreprises depuis plus de 35 ans, et fondateur de LMVI Conseil.

À travers ce blog, je vous propose d’explorer ensemble tous les 15 jours les grands ou petits (!) sujets de l’informatique.

Ici, on parlera de sujets qui me servent quotidiennement et qui me tiennent Ă  cƓur, comme le Nocode, l’IA, l’IT, l’IS ou l’architecture logicielle et un peu WSO2.

D’ailleurs, je ne suis pas seul Ă  rĂ©diger ces billets !

Je suis accompagnĂ© de mon assistant IA prĂ©nommĂ© Marius. C’est un bon pote d’Ollama et de ChatGPT (entre autres, car il a un sacrĂ© rĂ©seau !).

Il est assez secret et ne me dit pas tout sur la maniĂšre dont il m’aide Ă  Ă©crire mes articles. En revanche, je ne publie rien qui n’ait Ă©tĂ© validĂ© par des sources sĂ»res ou testĂ© !

C’est parti, on vous embarque !

1- 🔍 Identifier les relations 1-N dans les tables PostgreSQL

****

Vous souhaitez connaĂźtre toutes les tables qui dĂ©pendent d’une table spĂ©cifique (ici product) via une clĂ© Ă©trangĂšre ? C’est exactement ce que permet la premiĂšre requĂȘte.

đŸ€– Marius ajoute en coin de terminal* : *

« 1 produit, plusieurs commandes ? Classique. Voici comment le voir noir sur blanc. »

SELECT kcu.constraint_name AS fk_name, kcu.table_name AS foreign_table_name, kcu.column_name AS foreign_column_name, ccu.table_name AS referenced_table_name, ccu.column_name AS referenced_column_name FROM information_schema.key_column_usage AS kcu JOIN information_schema.constraint_column_usage AS ccu ON kcu.constraint_name = ccu.constraint_name WHERE ccu.table_name = ‘product’ AND kcu.table_name <> ccu.table_name;

🧠 À retenir

  • information_schema.key_column_usage : cette vue rĂ©pertorie les colonnes impliquĂ©es dans les contraintes de clĂ©s Ă©trangĂšres.

  • information_schema.constraint_column_usage : elle indique les colonnes qui sont rĂ©fĂ©rencĂ©es par ces contraintes.

  • JOIN : les deux vues sont reliĂ©es via le nom de la contrainte, ce qui permet d’associer chaque clĂ© Ă©trangĂšre Ă  sa colonne de rĂ©fĂ©rence.

  • WHERE : ce filtre cible uniquement les contraintes oĂč la table rĂ©fĂ©rencĂ©e est product, tout en excluant les cas d’auto-rĂ©fĂ©rence.

👉 RĂ©sultat attendu

La requĂȘte retourne toutes les tables qui possĂšdent une clĂ© Ă©trangĂšre pointant vers la table productdans une relation 1-N. Cela signifie que chaque ligne de la table product peut ĂȘtre associĂ©e Ă  aucune ou plusieurs lignes dans d’autres tables, via des clĂ©s Ă©trangĂšres.

2- 🔄 Trouver les relations N-1 : qui rĂ©fĂ©rence quoi dans PostgreSQL ?

****

Vous cherchez maintenant Ă  savoir quelles sont les clĂ©s Ă©trangĂšres prĂ©sentes dans la table product ? C’est-Ă -dire, dans quelles tables product va chercher ses rĂ©fĂ©rences (relation de type N-1) ? Voici la requĂȘte Ă  utiliser :

SELECT kcu.constraint_name AS fk_name, kcu.table_name AS foreign_table_name, kcu.column_name AS foreign_column_name, ccu.table_name AS referenced_table_name, ccu.column_name AS referenced_column_name FROM information_schema.key_column_usage AS kcu JOIN information_schema.constraint_column_usage AS ccu ON kcu.constraint_name = ccu.constraint_name WHERE kcu.table_name = ‘product’ AND kcu.table_name <> ccu.table_name;

💡 À comprendre

La requĂȘte retourne toutes les tables que product rĂ©fĂ©rence via les clĂ©s Ă©trangĂšres dĂ©clarĂ©es dans la table product. Cela indique que pour chaque enregistrement dans product, il existe un enregistrement correspondant dans la table rĂ©fĂ©rencĂ©e — typique d’une relation N-1.

On est ici dans le cadre d’une relation plusieurs-Ă -un (N-1) : plusieurs enregistrements de product peuvent rĂ©fĂ©rencer une mĂȘme ligne dans une table externe, via une clĂ© Ă©trangĂšre.

✅ Pourquoi ces requĂȘtes sont utiles ?

Repérer clairement les relations 1-N ou N-1 vous permet de :

  • Visualiser la structure relationnelle de votre base de donnĂ©es sans outil tiers

  • Éviter les erreurs de jointures SQL dans vos requĂȘtes complexes

  • Faciliter l’écriture de vues, de rapports ou de scripts d’export

  • Auditer l’intĂ©gritĂ© rĂ©fĂ©rentielle d’un modĂšle existant

Et surtout, dans un contexte de maintenance ou de documentation d’une base, ces requĂȘtes vous Ă©vitent de parcourir manuellement chaque table du schĂ©ma.

đŸ€– Marius valide* : *

« Rien de tel qu’un bon information_schema pour Ă©chapper aux diagrammes flous en PDF. »

🎯 Conclusion

Comprendre les relations entre les tables est essentiel pour naviguer efficacement dans une base de données relationnelle.

GrĂące aux requĂȘtes prĂ©sentĂ©es ici, vous pouvez :

  • Identifier rapidement les relations 1-N et N-1 de la table product

  • Mieux concevoir vos schĂ©mas de donnĂ©es

  • Optimiser vos requĂȘtes SQL

  • Faciliter la maintenance de votre base

🔁 Il vous suffit de remplacer product par le nom de la table de votre choix pour explorer les relations dans votre propre base de donnĂ©es.

đŸ€– Le mot de la fin de Marius

« Ces vues systÚme sont verbeuses, mais elles disent tout. Il suffit de leur poser les bonnes questions. »

** Vous utilisez une autre mĂ©thode ? Vous avez un retour d’expĂ©rience ou un piĂšge Ă  Ă©viter ?**

Partagez-le en commentaire ou contactez-moi via lmvi-conseil.fr. On aime bien les scripts qui marchent
 et les projets bien cùblés.

Bonne intĂ©gration Ă  tous !

Qui sommes-nous ?


LMVI-Conseil, fondĂ© en 2023 par Jean-Marc Henry, Consultant Seniot IT IS, est spĂ©cialisĂ© dans l’accompagnement des entreprises vers des solutions technologiques innovantes.

Avec prĂšs de trente-cinq ans d’expĂ©rience, nous combinons conseil stratĂ©gique et expertise technique pour rĂ©pondre Ă  vos dĂ©fis numĂ©riques.

Nous Contacter

Scroll to Top

Confidentialité · Conditions d'utilisation · Contact

© 2026 LMVI Conseil — SARL, SIREN 949 417 620 · contact@lmvi-conseil.fr