Aller au contenu

Chapitre 2 - Partie 3 : Bases de données relationnelles et SGBD


1. Qu'est-ce qu'une base de données relationnelle ?

Section intitulée « 1. Qu'est-ce qu'une base de données relationnelle ? »

Une base de données relationnelle est un ensemble structuré de données organisées selon le modèle relationnel :

  • les données sont réparties dans des relations (tables) ;
  • les relations sont liées entre elles par des clés étrangères ;
  • le tout respecte les contraintes d'intégrité (domaine, entité, référence).

Les bases de données relationnelles sont omniprésentes :

ContexteDonnées gérées
Site e-commerceClients, produits, commandes, paiements
Réseau socialUtilisateurs, publications, commentaires, relations d'amitié
HôpitalPatients, médecins, rendez-vous, prescriptions
LycéeÉlèves, professeurs, classes, notes, emplois du temps
BanqueComptes, clients, transactions, virements

La construction d'une base de données suit un processus en étapes :

  1. Analyse des besoins : quelles informations faut-il stocker ?
  2. Conception du schéma : quelles relations, quels attributs, quelles clés ?
  3. Création : mise en place du schéma dans un SGBD ;
  4. Peuplement : insertion des données ;
  5. Exploitation : requêtes, mises à jour, maintenance.

2. Le système de gestion de bases de données (SGBD)

Section intitulée « 2. Le système de gestion de bases de données (SGBD) »

Un SGBD (Système de Gestion de Bases de Données) est un logiciel qui permet de créer, gérer et interroger une base de données. C'est l'intermédiaire entre les utilisateurs (ou les programmes) et les données stockées.

┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Utilisateur │ │ Application │ │ Utilisateur │
│ 1 │ │ Web │ │ 2 │
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
│ │ │
└───────────────────┼───────────────────┘
│
┌──────▼──────┐
│ SGBD │
│ (moteur) │
└──────┬──────┘
│
┌──────▼──────┐
│ Fichiers │
│ sur disque │
└─────────────┘
SGBDTypeUtilisation typique
SQLiteEmbarqué (fichier unique)Applications mobiles, petits projets, enseignement
MySQL / MariaDBClient-serveurSites Web (WordPress, etc.)
PostgreSQLClient-serveurApplications exigeantes, données géographiques
Oracle DatabaseClient-serveurGrandes entreprises, banques
Microsoft SQL ServerClient-serveurEnvironnements Windows, entreprises

Les données sont stockées sur le disque dur (mémoire de masse) et survivent à l'arrêt du programme ou de la machine. Contrairement aux variables en mémoire vive, les données d'une base sont pérennes.

Le SGBD gère automatiquement :

  • l'écriture des données sur le disque ;
  • la récupération après une panne (mécanismes de journalisation) ;
  • les sauvegardes et restaurations.

Plusieurs utilisateurs ou programmes peuvent accéder simultanément à la même base de données. Le SGBD garantit que les opérations ne se perturbent pas mutuellement.

Transaction : une séquence d'opérations qui forme un tout indivisible. Soit toutes les opérations réussissent, soit aucune n'est appliquée (principe du tout ou rien).

Le SGBD optimise automatiquement les requêtes pour les exécuter le plus rapidement possible, même sur de très gros volumes de données :

  • utilisation d'index (structures de données accélérant la recherche, similaires à l'index d'un livre) ;
  • optimiseur de requêtes qui choisit la meilleure stratégie d'exécution ;
  • mise en cache des données fréquemment consultées.

Le SGBD contrôle qui a le droit de faire quoi sur les données :

  • Authentification : vérification de l'identité de l'utilisateur (login / mot de passe) ;
  • Autorisation : droits d'accès différenciés (lecture seule, lecture-écriture, administration) ;
  • Audit : journalisation des opérations effectuées pour traçabilité.
RôleDroits typiques
AdministrateurCréer/supprimer des tables, gérer les utilisateurs
ProfesseurLire et modifier les notes de ses élèves
ÉlèveLire ses propres notes uniquement
Application WebLire et écrire certaines tables via un compte dédié

import sqlite3
connexion = sqlite3.connect("lycee.db")
curseur = connexion.cursor()
curseur.execute("""
CREATE TABLE IF NOT EXISTS Eleves (
id INTEGER PRIMARY KEY,
nom TEXT NOT NULL,
prenom TEXT NOT NULL,
classe TEXT,
date_naissance TEXT
)
""")
connexion.commit()
connexion.close()
connexion = sqlite3.connect("lycee.db")
curseur = connexion.cursor()
curseur.execute("""
INSERT INTO Eleves (nom, prenom, classe, date_naissance)
VALUES ('Dupont', 'Alice', 'T3', '2008-03-15')
""")
eleves = [
('Martin', 'Bob', 'T1', '2008-07-22'),
('Durand', 'Clara', 'T3', '2007-12-01'),
('Petit', 'David', 'T2', '2008-01-30')
]
curseur.executemany("""
INSERT INTO Eleves (nom, prenom, classe, date_naissance)
VALUES (?, ?, ?, ?)
""", eleves)
connexion.commit()
connexion.close()
connexion = sqlite3.connect("lycee.db")
curseur = connexion.cursor()
curseur.execute("SELECT nom, prenom FROM Eleves WHERE classe = 'T3'")
resultats = curseur.fetchall()
for ligne in resultats:
print(ligne)
# ('Dupont', 'Alice')
# ('Durand', 'Clara')
connexion.close()

Les bases de données contiennent souvent des données personnelles (nom, adresse, données de santé, etc.). Leur utilisation est encadrée par la loi :

  • Le RGPD (Règlement Général sur la Protection des Données, 2018) impose en Europe :

    • le consentement de la personne pour la collecte de ses données ;
    • le droit d'accès, de rectification et de suppression ;
    • la minimisation : ne collecter que les données strictement nécessaires ;
    • la sécurisation : protéger les données contre les accès non autorisés.
  • La CNIL (Commission Nationale de l'Informatique et des Libertés) veille au respect de ces règles en France.


ConceptDescription
Base de données relationnelleEnsemble de relations liées par des clés, respectant le modèle relationnel
SGBDLogiciel gérant la base : SQLite, MySQL, PostgreSQL, etc.
PersistanceLes données survivent à l'arrêt du programme
Accès concurrentsPlusieurs utilisateurs simultanés sans conflit
EfficacitéOptimisation des requêtes, index, cache
SécurisationContrôle des droits d'accès (authentification, autorisation)
RGPDCadre juridique européen de protection des données personnelles