Aller au contenu principal

#Slides : Bases de données et SQL

#Partie 1 — Modèle et algèbre

  1. Pourquoi le modèle relationnel : base de données et SGBD, LDD et LMD, ce qu'un SGBD doit assurer, Codd (1970), histoire de SQL de SEQUEL (1974) à SQL:2016.
  2. Modélisation : relation, attribut, domaine, tuple, degré, cardinalité, schéma et instance ; clé candidate, clé primaire, clé étrangère ; les sept propriétés d'une relation ; intégrité d'entité et intégrité référentielle ; CASCADE, SET NULL, SET DEFAULT, NO ACTION.
  3. Passage du modèle E-A au relationnel : les trois règles, le tableau de décision par cardinalité, les associations porteuses d'attributs.
  4. Algèbre relationnelle : langage procédural, fermeture, les cinq opérations fondamentales (sélection, projection, produit cartésien, union, différence) ; compatibilité envers l'union ; jointure thêta, équijointure, jointure naturelle, jointures externes, semi-jointure ; division et sa formule en trois étapes ; règles de réécriture.

#Partie 2 — SQL

  1. SELECT : ordre logique d'évaluation (FROMWHEREGROUP BYHAVING → sous-requête → SELECTORDER BYLIMIT) ; les cinq familles de conditions de recherche ; NULL et les agrégats ; SARGability ; pagination par curseur.
  2. JOIN : INNER, LEFT, RIGHT, FULL ; semi et anti-jointures ; les définitions algébriques correspondantes ; cardinalités attendues ; piège du prédicat de la table droite dans WHERE contre ON ; CTE.
  3. Agrégations : GROUP BY et HAVING ; pourquoi un agrégat ne peut pas vivre dans WHERE ; NULL et agrégats ; fonctions de fenêtre (rank, row_number, cumuls, moyennes mobiles) ; ROLLUP et CUBE.
  4. Le jeu de données officiel du cours : Etudiant, UE, EtudiantUE, Adresse, Enseignant, avec ses tuples et ses clés.

#Partie 3 — Conception et fiabilité

  1. Normalisation : dépendance fonctionnelle et dépendance fonctionnelle complète ; 1NF, 2NF, 3NF et BCNF dans leurs définitions officielles ; dépendance partielle contre dépendance transitive ; anomalies d'insertion, de mise à jour et de suppression ; décomposition sans perte et préservation des DF.
  2. Index : B-Tree, moteurs InnoDB et MyISAM, SARGability, index composites (égalité, plage, tri), index couvrants, index sur clé étrangère, quand ne pas indexer.
  3. Plans d'exécution : lire EXPLAIN QUERY PLAN, vocabulaire des nœuds, estimation de cardinalité, session avant/index/après.

#Partie 4 — Concurrence

  1. Transactions : ACID (Haerder et Reuter, 1983), validation et avortement, journalisation.
  2. Contrôle de concurrence : mise à jour perdue, dépendance non validée, analyse incohérente ; planification, planification sérielle, non sérielle, sérialisable ; sérialisation des conflits.
  3. Graphe de précédence : les trois règles de construction, le théorème du cycle, planification sérielle équivalente.
  4. Verrouillage : verrous partagés et exclusifs, table de compatibilité, verrouillage en deux phases (V2P) ; estampillage et méthodes optimistes.
  5. Interblocage : graphe des attentes, théorème de Holt (1972), choix de la victime, famine.
  6. Niveaux d'isolation : lecture sale, lecture non répétable, fantômes, write-skew ; MVCC ; transactions courtes, reprises bornées, idempotence.

#Partie 5 — Synthèse et épreuves

  1. Annales corrigées : CC 2015 (compagnie maritime), CC 2020 (hôtels), CC 2012 (Apple Store), CC 2013 (CarTrack et Armazon), CT 2016 (Zoo, graphe d'attente, questions de cours), TD 9 et TD 10.
  2. Synthèse : démarche complète, du schéma à la requête mesurée ; ce que les épreuves testent et dans quel ordre de fréquence.