Comprendre et lire une base

15 minutes de SQL

Comprendre tables, clés et schémas

Thème : Comprendre et lire une base

Niveau : ECG2

Année : Maths appliquées

Objectif : Comprendre le vocabulaire du modèle relationnel : relation, attribut, domaine, clé primaire, clé étrangère, et savoir lire un schéma simple.

Le modèle relationnel : les idées essentielles

Une base de données relationnelle organise l’information sous forme de tables (aussi appelées relations). Une table contient des lignes (enregistrements) et des colonnes (attributs).

  • Relation / table : une table regroupe des données de même nature. Par exemple, ETUDIANTS peut contenir une ligne par étudiant.
  • Attribut : une colonne décrit une caractéristique des lignes. Par exemple, nom ou classe peuvent être des attributs de ETUDIANTS.
  • Domaine : un attribut admet un certain type de valeurs. On utilisera typiquement INTEGER pour des entiers, TEXT pour du texte (et, si besoin, des types comme DATE, FLOAT, VARCHAR mais la manipulation de ces types ne fait pas partie du programme).
  • Clé primaire (PRIMARY KEY) : attribut (ou groupe d’attributs) qui identifie de façon unique chaque ligne. Concrètement, deux lignes différentes ne peuvent pas avoir la même valeur de clé primaire.
  • Clé étrangère (FOREIGN KEY) : attribut qui référence la clé primaire d’une autre table. C’est la façon standard de relier deux tables entre elles.

On décrit souvent une table par son nom et la liste de ses attributs : nom_table(attribut_1, attribut_2, ...). Quand on manipule plusieurs tables (et qu’elles peuvent avoir des attributs portant le même nom), on désigne un attribut de façon non ambiguë en écrivant nom_table.attribut, par exemple ETUDIANTS.nom ou NOTES.id.


Exemple de schéma

On considère deux tables :

ETUDIANTS(id, nom, classe)
NOTES(id, id_etudiant, matiere, note)
  • La table ETUDIANTS décrit les étudiants, et la table NOTES enregistre des notes : une ligne de NOTES correspond à une note dans une matière, associée à un étudiant.
  • Clés primaires : dans la table ETUDIANTS, la clé primaire est id (plusieurs étudiants peuvent avoir le même nom ou être dans la même classe, donc on impose un identifiant unique id par étudiant). De même, dans la table NOTES, la clé primaire est id (plusieurs notes peuvent porter sur la même matiere, ou avoir la même valeur note, donc on impose un identifiant unique id par note).
  • Le champ NOTES.id_etudiant est une clé étrangère qui pointe vers ETUDIANTS.id. Autrement dit, une note est toujours rattachée à un étudiant existant.

À retenir

  • Une base relationnelle organise les données en tables structurées par des attributs.
  • La clé primaire garantit l’unicité des lignes dans une table.
  • Une clé étrangère permet de relier deux tables en référant la clé primaire de l’une dans l’autre.
  • Le schéma d’une base décrit les tables, leurs attributs et les liens qui les connectent.

Exemples commentés

Exemple 1

Pour sa gestion courante, un commerce dispose d’une base de données boutique structurée de la façon suivante :

clients(id_client, nom, ville)
commandes(id_commande, id_client, date_commande)
produits(id_produit, nom, categorie, prix)
lignes_commande(id_commande, id_produit, quantite)
  • Chaque table possède une clé primaire qui identifie de manière unique ses lignes : clients.id_client, commandes.id_commande, produits.id_produit. Par exemple, plusieurs clients peuvent avoir le même nom ou habiter la même ville, mais chacun possède un identifiant unique id_client.
  • La table lignes_commande modélise le contenu d’une commande : une ligne correspond à un produit présent dans une commande, avec une certaine quantite. Elle joue un rôle d’intermédiaire entre commandes et produits.
  • Les clés étrangères permettent de relier les tables entre elles : commandes.id_client référence clients.id_client ; lignes_commande.id_commande référence commandes.id_commande ; lignes_commande.id_produit référence produits.id_produit. Ainsi, une commande est toujours associée à un client existant, et une ligne de commande correspond toujours à un produit existant.
Exemple 2

Une librairie en ligne dispose d’une base de données biblio organisée de la manière suivante :

livres(isbn, titre, auteur, annee, prix)
clients(id_client, nom, ville)
ventes(id_vente, id_client, isbn, date_vente, quantite)
  • Chaque table possède une clé primaire qui identifie de manière unique ses lignes : livres.isbn, clients.id_client, ventes.id_vente. Par exemple, plusieurs livres peuvent avoir le même titre ou le même auteur, mais l’isbn est un identifiant unique attribué à chaque ouvrage.
  • La table ventes enregistre les transactions : une ligne correspond à l’achat d’un livre par un client à une certaine date_vente, en une certaine quantite.
  • Les clés étrangères relient les tables entre elles : ventes.id_client référence clients.id_client ; ventes.isbn référence livres.isbn. Ainsi, une vente concerne toujours un client existant et un livre répertorié dans la base.
error: Ce contenu est protégé !