Cours : Bases de données relationnelles et SQL (IPT)
📌 1. Définitions & Cadre d’étude
Section titled “📌 1. Définitions & Cadre d’étude”Dans le cadre du programme d’Informatique de Tronc Commun (IPT) en MPSI, l’étude des bases de données relationnelles formalise le stockage, l’intégrité et l’interrogation de volumes structurés d’informations.
- Modèle relationnel : Une base de données relationnelle est un ensemble de relations (souvent appelées tables).
- Domaine et Attribut : Soit un ensemble de valeurs appelé domaine . Un attribut est une fonction ou un nom associé à un domaine .
- Schéma de relation : Un schéma de relation est un ensemble fini d’attributs .
- Tuple (ou enregistrement) : Un tuple sur un schéma est une application qui associe à chaque attribut de une valeur de son domaine. L’ensemble des tuples forme une instance de la relation.
- Clé primaire : Un sous-ensemble minimal d’attributs dont les valeurs identifient de manière unique chaque tuple d’une relation. Aucune valeur ne peut être nulle (
NULL). - Clé étrangère : Un attribut (ou un groupe d’attributs) dans une relation dont les valeurs doivent correspondre aux valeurs d’une clé primaire (ou candidate) d’une autre relation, garantissant ainsi l’intégrité référée.
- Langage SQL (Structured Query Language) : Langage normé permettant de définir (DDL), manipuler (DML) et interroger (DQL) les données.
📐 2. Théorèmes fondamentaux & Démonstrations clés
Section titled “📐 2. Théorèmes fondamentaux & Démonstrations clés”Opérateurs de l’algèbre relationnelle et correspondance SQL
Section titled “Opérateurs de l’algèbre relationnelle et correspondance SQL”L’interrogation des bases repose sur l’algèbre relationnelle, dont les requêtes SQL sont une transcription textuelle :
- Sélection () : Filtre les lignes (tuples) selon un prédicat .
- SQL équivalent :
SELECT * FROM R WHERE P;
- SQL équivalent :
- Projection () : Filtre les colonnes (attributs).
- SQL équivalent :
SELECT A1, A2 FROM R;
- SQL équivalent :
- Produit cartésien () et Jointure () : Combine les tuples de deux relations. La jointure naturelle ou conditionnelle associe des tuples selon un critère d’égalité entre clés.
- SQL équivalent :
SELECT * FROM R1 JOIN R2 ON R1.id = R2.id_r1;
- SQL équivalent :
Théorème d’expressivité (Codd)
Section titled “Théorème d’expressivité (Codd)”Le modèle relationnel garantit que les opérations de l’algèbre relationnelle (union, différence, produit cartésien, projection, sélection, renommage) sont équivalentes en terme de puissance d’expression aux requêtes conjonctives avec négation du calcul relationnel du premier ordre. En pratique, le SQL standard (sans récursion) implémente ce fragment.
💡 3. Méthodes de calcul & Algorithmes
Section titled “💡 3. Méthodes de calcul & Algorithmes”Structure générale d’une requête SQL d’interrogation (DQL)
Section titled “Structure générale d’une requête SQL d’interrogation (DQL)”Pour concevoir une requête complexe, on utilise la clause logique d’exécution :
Exemple type : Jointure et Agrégation
Section titled “Exemple type : Jointure et Agrégation”Soit une table Eleve(id_e, nom) et une table Note(id_e, matiere, valeur). Pour calculer la moyenne de chaque élève, l’algorithme SQL s’écrit :
SELECT e.nom, AVG(n.valeur) AS moyenneFROM Eleve eJOIN Note n ON e.id_e = n.id_eGROUP BY e.id_e, e.nom;- Principe algorithmique sous-jacent :
- Nested Loop Join ou Hash Join pour l’opération de jointure (
JOIN). - Tri ou hachage des données pour regrouper les lignes par identifiant (
GROUP BY). - Application de la fonction d’agrégation
AVGsur les groupes.
- Nested Loop Join ou Hash Join pour l’opération de jointure (
⚠️ 4. Pièges classiques aux Concours
Section titled “⚠️ 4. Pièges classiques aux Concours”- Mauvaise gestion des valeurs
NULL: Une valeurNULLreprésente une information manquante ou inconnue. Toute comparaison avecNULL(ex:WHERE x = NULL) évalue à \text{UNKNOWN} (et non \text{TRUE}). Il faut impérativement utiliserIS NULLouIS NOT NULL. - Oubli de la jointure dans le
WHERE(produit cartésien implicite) : ÉcrireSELECT * FROM A, B WHERE A.id = B.idest obsolète et source d’erreurs graves en cas d’oubli de la condition de jointure (générant un produit cartésien ). Préférer la syntaxe expliciteJOIN ... ON .... - Confusion entre
WHEREetHAVING:WHEREfiltre les lignes avant l’agrégation.HAVINGfiltre les groupes après l’agrégation (utilisation fréquente avecGROUP BYet des fonctions telles queSUM,COUNT,AVG).
- Duplication de lignes lors des projections :
En algèbre relationnelle, une relation est un ensemble (pas de doublons). En SQL, une requête
SELECTrenvoie un multiset (sac) par défaut. Il faut explicitement utiliserSELECT DISTINCTpour éliminer les doublons si l’énoncé l’exige.