RDBMS - SGBDR

Un article de Fantomas-2
Publié le 30/07/2025
Dans la section #NoLIFE
Article public d'intéret général
63 visiteurs
0 points
aucun participants
0 point POUR
0 point CONTRE
 
Conforme ou séditieux?

Je devrais expliquer les relations des tables dans une base de données relationnelle à quelqu’un qui a fait une application Access sans relation entre les tables. J’ai demandé à Gemini de me faire une brève explication... Est-ce compréhensible ? Sachant de quoi cela parle, c’est compréhensible pour moi et c’est plutôt bien résumé. Quelqu’un qui ne connaît pas, est-ce compréhensible pour lui ? Dites-moi.

I want an explanation of the links between tables in RDBMS with some exemples.

In a Relational Database Management System (RDBMS), tables are linked together to represent relationships between different pieces of data. These links are crucial for maintaining data integrity, avoiding redundancy, and enabling efficient querying of related information. The primary way tables are linked is through the use of keys.

Here’s a breakdown of the key concepts and examples:

Key Concepts:

  1. Primary Key (PK):

    • A column or a set of columns that uniquely identifies each row in a table.
    • No two rows can have the same primary key value.
    • Cannot contain NULL values (must always have a value).
    • Every table should have a primary key.
  2. Foreign Key (FK):

    • A column or a set of columns in one table that refers to the primary key in another table.
    • It establishes a link or relationship between the two tables.
    • The foreign key’s values must match values in the primary key of the referenced table, or they can be NULL (if allowed by the table definition).
    • The table containing the foreign key is often called the "child table," and the table containing the primary key it references is the "parent table."
  3. Relationships: The links between tables based on primary and foreign keys define different types of relationships:

    • One-to-One (1:1):

      • Each record in Table A is linked to at most one record in Table B, and vice-versa.
      • Less common, often indicates that information could be in a single table, but might be used for specific security or performance reasons, or to split very wide tables.
      • Implemented by making the primary key of one table a foreign key (and also unique) in the other.
    • One-to-Many (1:M):

      • Each record in Table A can be linked to many records in Table B, but each record in Table B is linked to only one record in Table A.
      • This is the most common type of relationship.
      • Implemented by placing the primary key of the "one" side table as a foreign key in the "many" side table.
    • Many-to-Many (M:N):

      • Each record in Table A can be linked to many records in Table B, and each record in Table B can be linked to many records in Table A.
      • Cannot be directly implemented with just primary and foreign keys between the two tables.
      • Requires an associative table (also known as a junction table, linking table, or bridge table). This associative table contains foreign keys from both tables, and its primary key is often a composite key made up of these foreign keys.

Examples:

Let’s imagine a database for an online bookstore.

Example 1: One-to-Many Relationship (1:M)

  • Scenario: One author can write many books, but each book is written by only one author (for simplicity in this example).

  • Tables:

    • Authors Table:

      author_id (PK) first_name last_name
      1 Stephen King
      2 J.K. Rowling
      3 Agatha Christie
    • Books Table:

      book_id (PK) title publication_year author_id (FK)
      101 The Shining 1977 1
      102 It 1986 1
      103 Harry Potter and the Sorcerer’s Stone 1997 2
      104 Murder on the Orient Express 1934 3
  • Link: The author_id column in the Books table is a foreign key that references the author_id (primary key) in the Authors table.

  • Explanation:

    • book_id 101 (The Shining) is linked to author_id 1 (Stephen King).
    • book_id 103 (Harry Potter...) is linked to author_id 2 (J.K. Rowling).
    • This setup correctly models that Stephen King (author_id 1) has written multiple books in the Books table.

Example 2: Many-to-Many Relationship (M:N)

  • Scenario: A book can have multiple genres, and a genre can be applied to multiple books.

  • Tables:

    • Books Table: (Same as above)

      book_id (PK) title publication_year author_id (FK)
      101 The Shining 1977 1
      102 It 1986 1
      103 Harry Potter and the Sorcerer’s Stone 1997 2
      104 Murder on the Orient Express 1934 3
    • Genres Table:

      genre_id (PK) genre_name
      1 Horror
      2 Fantasy
      3 Mystery
      4 Thriller
    • BookGenres (Associative/Junction) Table:

      book_id (FK) genre_id (FK)
      101 1
      101 4
      102 1
      103 2
      104 3
  • Links:

    • book_id in BookGenres is a foreign key referencing book_id in Books.
    • genre_id in BookGenres is a foreign key referencing genre_id in Genres.
    • The combination of (book_id, genre_id) often forms the composite primary key for the BookGenres table, ensuring uniqueness for each book-genre pairing.
  • Explanation:

    • The Shining (book_id 101) is linked to Horror (genre_id 1) and Thriller (genre_id 4) via entries in the BookGenres table.
    • Horror (genre_id 1) is linked to The Shining (book_id 101) and It (book_id 102) via entries in the BookGenres table.
    • This associative table allows a book to have multiple genres and a genre to be assigned to multiple books.

Example 3: One-to-One Relationship (1:1) - Less Common

  • Scenario: Each author has detailed biographical information that is often not needed with their basic author data, or perhaps sensitive information.

  • Tables:

    • Authors Table: (Same as above)

      author_id (PK) first_name last_name
      1 Stephen King
      2 J.K. Rowling
      3 Agatha Christie
    • AuthorBiographies Table:

      author_id (PK, FK) date_of_birth nationality short_bio
      1 1947-09-21 American Famous horror novelist...
      2 1965-07-31 British Creator of the Harry Potter series...
      3 1890-09-15 British Renowned for her detective novels...
  • Link: The author_id column in the AuthorBiographies table serves as both its primary key and a foreign key referencing the author_id in the Authors table. Because it’s a primary key in AuthorBiographies, it ensures uniqueness (one author_id in Authors maps to at most one author_id in AuthorBiographies).

  • Explanation: Each author in the Authors table has exactly one corresponding entry in the AuthorBiographies table, providing additional details.

Benefits of Linking Tables:

  • Data Integrity: Foreign keys enforce referential integrity, ensuring that relationships between tables remain consistent. For example, you can’t delete an author if there are still books linked to them (unless specific cascading rules are set).
  • Reduced Redundancy: Instead of repeating author names and details for every book they write, the author’s information is stored once in the Authors table, and only their author_id is repeated in the Books table. This saves storage space and reduces the chance of inconsistencies.
  • Improved Data Organization: Data is logically separated into distinct entities, making the database easier to understand, manage, and scale.
  • Efficient Querying: RDBMS allows you to "join" linked tables to retrieve combined information. For instance, you can easily query to get a list of all books written by Stephen King, or all genres associated with "The Shining."

Understanding these links is fundamental to designing, implementing, and querying relational databases effectively.

=======================================================================================

The same explanation in french.

Voici une explication des liens entre les tables dans un SGBD (Système de Gestion de Bases de Données relationnelles), avec des exemples.


Qu’est-ce qu’un lien entre les tables ?

Dans un SGBD, les tables sont reliées entre elles pour représenter les relations entre différentes informations. Ces liens sont essentiels pour maintenir l’intégrité des données, éviter la redondance et permettre une interrogation efficace des informations connexes. La principale méthode de liaison entre les tables est l’utilisation des clés.


Concepts Clés :

  1. Clé Primaire (PK - Primary Key) :

    • C’est une colonne ou un ensemble de colonnes qui identifie de manière unique chaque ligne d’une table.
    • Aucune valeur de clé primaire ne peut être dupliquée.
    • Elle ne peut pas contenir de valeurs NULL (elle doit toujours avoir une valeur).
    • Chaque table devrait idéalement avoir une clé primaire.
  2. Clé Étrangère (FK - Foreign Key) :

    • C’est une colonne ou un ensemble de colonnes dans une table qui fait référence à la clé primaire d’une autre table.
    • Elle établit un lien ou une relation entre les deux tables.
    • Les valeurs de la clé étrangère doivent correspondre aux valeurs de la clé primaire de la table référencée, ou elles peuvent être NULL (si cela est autorisé par la définition de la table).
    • La table contenant la clé étrangère est souvent appelée la "table enfant", et la table contenant la clé primaire référencée est la "table parente".
  3. Types de Relations : Les liens entre les tables, basés sur les clés primaires et étrangères, définissent différents types de relations :

    • Un-à-Un (1:1) :

      • Chaque enregistrement de la Table A est lié à un seul enregistrement (au maximum) de la Table B, et vice-versa.
      • Moins courant, cela peut indiquer que les informations pourraient être dans une seule table, mais peut être utilisé pour des raisons de sécurité, de performance spécifiques, ou pour diviser des tables très larges.
      • Implémenté en faisant de la clé primaire d’une table une clé étrangère (et aussi unique) dans l’autre.
    • Un-à-Plusieurs (1:M) :

      • Chaque enregistrement de la Table A peut être lié à plusieurs enregistrements de la Table B, mais chaque enregistrement de la Table B est lié à un seul enregistrement de la Table A.
      • C’est le type de relation le plus courant.
      • Implémenté en plaçant la clé primaire de la table côté "un" comme clé étrangère dans la table côté "plusieurs".
    • Plusieurs-à-Plusieurs (M:N) :

      • Chaque enregistrement de la Table A peut être lié à plusieurs enregistrements de la Table B, et chaque enregistrement de la Table B peut être lié à plusieurs enregistrements de la Table A.
      • Ne peut pas être directement implémenté avec seulement des clés primaires et étrangères entre les deux tables.
      • Nécessite une table associative (également appelée table de jonction ou table de liaison). Cette table associative contient les clés étrangères des deux tables, et sa clé primaire est souvent une clé composée de ces clés étrangères.

Exemples :

Imaginons une base de données pour une librairie en ligne.

Exemple 1 : Relation Un-à-Plusieurs (1:M)

  • Scénario : Un auteur peut écrire plusieurs livres, mais chaque livre n’est écrit que par un seul auteur (pour simplifier cet exemple).

  • Tables :

    • Table Auteurs :

      auteur_id (PK) prenom nom
      1 Stephen King
      2 J.K. Rowling
      3 Agatha Christie
    • Table Livres :

      livre_id (PK) titre annee_publication auteur_id (FK)
      101 The Shining 1977 1
      102 Ça 1986 1
      103 Harry Potter à l’école des sorciers 1997 2
      104 Le Crime de l’Orient-Express 1934 3
  • Lien : La colonne auteur_id dans la table Livres est une clé étrangère qui fait référence à auteur_id (clé primaire) dans la table Auteurs.

  • Explication :

    • livre_id 101 (The Shining) est lié à auteur_id 1 (Stephen King).
    • livre_id 103 (Harry Potter...) est lié à auteur_id 2 (J.K. Rowling).
    • Cette configuration modélise correctement le fait que Stephen King (auteur_id 1) a écrit plusieurs livres dans la table Livres.

Exemple 2 : Relation Plusieurs-à-Plusieurs (M:N)

  • Scénario : Un livre peut appartenir à plusieurs genres, et un genre peut être appliqué à plusieurs livres.

  • Tables :

    • Table Livres : (Identique à l’exemple précédent)

      livre_id (PK) titre annee_publication auteur_id (FK)
      101 The Shining 1977 1
      102 Ça 1986 1
      103 Harry Potter à l’école des sorciers 1997 2
      104 Le Crime de l’Orient-Express 1934 3
    • Table Genres :

      genre_id (PK) nom_genre
      1 Horreur
      2 Fantaisie
      3 Mystère
      4 Thriller
    • Table LivreGenres (Associative/Jonction) :

      livre_id (FK) genre_id (FK)
      101 1
      101 4
      102 1
      103 2
      104 3
  • Liens :

    • livre_id dans LivreGenres est une clé étrangère référençant livre_id dans Livres.
    • genre_id dans LivreGenres est une clé étrangère référençant genre_id dans Genres.
    • La combinaison (livre_id, genre_id) forme souvent la clé primaire composite pour la table LivreGenres, garantissant l’unicité pour chaque paire livre-genre.
  • Explication :

    • The Shining (livre_id 101) est lié aux genres Horreur (genre_id 1) et Thriller (genre_id 4) via les entrées dans la table LivreGenres.
    • Le genre Horreur (genre_id 1) est lié à The Shining (livre_id 101) et à Ça (livre_id 102) via les entrées dans la table LivreGenres.
    • Cette table associative permet à un livre d’avoir plusieurs genres et à un genre d’être attribué à plusieurs livres.

Exemple 3 : Relation Un-à-Un (1:1) - Moins Courante

  • Scénario : Chaque auteur possède des informations biographiques détaillées qui ne sont pas toujours nécessaires avec leurs données d’auteur de base, ou peut-être des informations sensibles.

  • Tables :

    • Table Auteurs : (Identique à l’exemple précédent)

      auteur_id (PK) prenom nom
      1 Stephen King
      2 J.K. Rowling
      3 Agatha Christie
    • Table BiographiesAuteurs :

      auteur_id (PK, FK) date_naissance nationalite courte_bio
      1 1947-09-21 Américaine Célèbre romancier d’horreur...
      2 1965-07-31 Britannique Créatrice de la série Harry Potter...
      3 1890-09-15 Britannique Reconnue pour ses romans policiers...
  • Lien : La colonne auteur_id dans la table BiographiesAuteurs sert à la fois de clé primaire et de clé étrangère, référençant auteur_id dans la table Auteurs. Étant une clé primaire dans BiographiesAuteurs, elle assure l’unicité (un auteur_id dans Auteurs correspond à au plus un auteur_id dans BiographiesAuteurs).

  • Explication : Chaque auteur de la table Auteurs a exactement une entrée correspondante dans la table BiographiesAuteurs, fournissant des détails supplémentaires.


Avantages de l’établissement de liens entre les tables :

  • Intégrité des données : Les clés étrangères garantissent l’intégrité référentielle, assurant que les relations entre les tables restent cohérentes. Par exemple, vous ne pouvez pas supprimer un auteur s’il existe encore des livres liés à lui (sauf si des règles de cascade spécifiques sont définies).
  • Réduction de la redondance : Au lieu de répéter les noms et les détails des auteurs pour chaque livre qu’ils écrivent, les informations de l’auteur sont stockées une seule fois dans la table Auteurs, et seul leur auteur_id est répété dans la table Livres. Cela économise de l’espace de stockage et réduit les risques d’incohérences.
  • Organisation des données améliorée : Les données sont logiquement séparées en entités distinctes, ce qui rend la base de données plus facile à comprendre, à gérer et à faire évoluer.
  • Interrogation efficace : Les SGBD vous permettent de "joindre" des tables liées pour récupérer des informations combinées. Par exemple, vous pouvez facilement interroger pour obtenir une liste de tous les livres écrits par Stephen King, ou de tous les genres associés à "The Shining".

Comprendre ces liens est fondamental pour concevoir, implémenter et interroger efficacement les bases de données relationnelles.


Avez-vous d’autres questions sur la modélisation des bases de données ou les types de relations ?

4 commentaires
Chose
()
C'est clair et j'ajouterai que le plus important une fois qu'on a les tables c'est de ne pas oublier d'avoir les chaises assorties !
Chose
()
SELECT odeur FROM age;

Bon, j'ai compris.
Mais je bosse dedans aussi, pas sur que cela t'aide ^^'
un fureteur
()
Avoir des chaises assorties m'aide plus effectivement que quelqu'un qui est dans le domaine. 😋
LeDétective
()
Salut !
Un peu difficile à comprendre au début (surtout que j'ai lu toute la partie en anglais avant de voir qu'il y avait la traduction plus bas :D) mais avec les exemples fournis ça devient plus clair.
Ca reste complexe, je comprendrai sans doute ça mieux de bon matin, qu'après une longue journée de travail :D
(Vous n'avez pas (encore) les droits nécessaires pour répondre à cet article)
© 2003-2025 PaRaNo • Les CGU • Réseau Social Discret • Jour/Nuit