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 :
- Analyse des besoins : quelles informations faut-il stocker ?
- Conception du schéma : quelles relations, quels attributs, quelles clés ?
- Création : mise en place du schéma dans un SGBD ;
- Peuplement : insertion des données ;
- 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 |