Aller au contenu

Partie 2 : Bases de données relationnelles et SGBD

Programme officiel (B.O.)

B.O. spécial n° 8 du 25 juillet 2019 - NSI Terminale

Contenus Capacités attendues Commentaires
Base de données relationnelle. Savoir distinguer la structure d'une base de données de son contenu. Repérer des anomalies dans le schéma d'une base de données. On privilégie la manipulation de données nombreuses et réalistes.
Système de gestion de bases de données relationnelles. Identifier les services rendus par un système de gestion de bases de données relationnelles : persistance des données, gestion des accès concurrents, efficacité de traitement des requêtes, sécurisation des accès. Il s'agit de comprendre le rôle et les enjeux des différents services sans en détailler le fonctionnement.

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

1.1 Définition

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).

1.2 Exemples concrets

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

Contexte Données gérées
Site e-commerce Clients, produits, commandes, paiements
Réseau social Utilisateurs, publications, commentaires, relations d'amitié
Hôpital Patients, médecins, rendez-vous, prescriptions
Lycée Élèves, professeurs, classes, notes, emplois du temps
Banque Comptes, clients, transactions, virements

1.3 De la conception à la réalisation

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)

2.1 Définition

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 │
                    └─────────────┘

2.2 Exemples de SGBD

SGBD Type Utilisation typique
SQLite Embarqué (fichier unique) Applications mobiles, petits projets, enseignement
MySQL / MariaDB Client-serveur Sites Web (WordPress, etc.)
PostgreSQL Client-serveur Applications exigeantes, données géographiques
Oracle Database Client-serveur Grandes entreprises, banques
Microsoft SQL Server Client-serveur Environnements Windows, entreprises

En pratique

En NSI, on utilise souvent SQLite car il ne nécessite aucune installation de serveur : la base de données est un simple fichier. Python inclut le module sqlite3 dans sa bibliothèque standard.


3. Les services rendus par un SGBD

3.1 Persistance des données

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.

3.2 Gestion des accès concurrents

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.

Exemple

Deux personnes réservent en même temps le dernier billet d'un concert. Sans gestion des accès concurrents, les deux pourraient obtenir le même billet. Le SGBD utilise des mécanismes de verrouillage et de transactions pour éviter ce type de conflit.

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).

3.3 Efficacité de traitement des requêtes

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.

Ordre de grandeur

Les grands SGBD gèrent des bases de données de l'ordre du pétaoctet (1 Po = 10¹⁵ octets, soit environ 1 million de Go). C'est par exemple le cas des bases de données de moteurs de recherche ou de réseaux sociaux.

3.4 Sécurisation des accès

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ôle Droits typiques
Administrateur Créer/supprimer des tables, gérer les utilisateurs
Professeur Lire et modifier les notes de ses élèves
Élève Lire ses propres notes uniquement
Application Web Lire et écrire certaines tables via un compte dédié

4. Utiliser SQLite avec Python

4.1 Créer une base et une table

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()

4.2 Insérer des données

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()

4.3 Interroger la base

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()

5. Usage responsable des données

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.

Responsabilité

Tout concepteur de base de données doit s'assurer que les données personnelles sont protégées, que leur utilisation est légitime et que les utilisateurs sont informés de leurs droits.


À retenir

Concept Description
Base de données relationnelle Ensemble de relations liées par des clés, respectant le modèle relationnel
SGBD Logiciel gérant la base : SQLite, MySQL, PostgreSQL, etc.
Persistance Les données survivent à l'arrêt du programme
Accès concurrents Plusieurs utilisateurs simultanés sans conflit
Efficacité Optimisation des requêtes, index, cache
Sécurisation Contrôle des droits d'accès (authentification, autorisation)
RGPD Cadre juridique européen de protection des données personnelles