Bases des bases de données
Apprenez les bases de données avec des QCM : tables et clés des bases relationnelles, recherches, agrégations, jointures et sous-requêtes SQL, normalisation et diagrammes E-R, transactions et propriétés ACID, problèmes d'accès concurrent et niveaux d'isolation, verrous et interblocages, reprise après panne, index et NoSQL.
Bases des bases de données : points clés
Des stocks d'une boutique en ligne aux comptes bancaires, la plupart des systèmes d'information confient leurs données à une base de données. Une base de données relationnelle conserve les données sous forme de tables, relie les tables par des clés primaires et des clés étrangères, et extrait ou met à jour les données nécessaires au moyen d'un langage appelé SQL.
Ce thème couvre les recherches avec l'instruction SQL SELECT, l'agrégation avec GROUP BY et HAVING, les jointures internes et externes et les sous-requêtes, en comptant les résultats sur de petites tables d'exemple. Il aborde aussi la normalisation et les diagrammes E-R pour découper correctement les tables, les propriétés ACID des transactions, les problèmes d'accès concurrent comme les mises à jour perdues et les lectures sales, ainsi que les niveaux d'isolation qui les évitent, les verrous et les interblocages, la reprise après panne à l'aide des journaux, le fonctionnement des index et les principes du NoSQL, ce qui aide à préparer la partie bases de données des examens de certification informatique.
Toutes les questions sur Bases des bases de données (40)
- Dans la terminologie des bases de données relationnelles, quel terme correspond à une ligne d'une table (relation) ?
- Dans une table d'une base de données relationnelle, quelle condition la colonne (ou l'ensemble de colonnes) désignée comme clé primaire doit-elle remplir ?
- Dans une table des employés Employe(NumEmploye, Email, Nom, Service), NumEmploye et Email sont tous deux différents pour chaque employé et jamais NULL. Nom et Service peuvent être identiques à ceux d'autres employés. Quelle proposition énumère toutes les clés candidates de cette table ?
- Une table d'inscriptions Inscription(NumEtudiant, NumCours, Note) enregistre quel étudiant a suivi quel cours et avec quelle note. Un étudiant suit plusieurs cours, et un cours est suivi par plusieurs étudiants. Si un même étudiant ne s'inscrit jamais 2 fois au même cours, quelle clé primaire convient à cette table ?
- La clé primaire d'une table des clients Client(IdClient, Nom) est IdClient, et la colonne IdClient d'une table des commandes Commande(IdCommande, IdClient) est définie comme clé étrangère faisant référence à IdClient de la table Client. La table Client ne contient que les lignes dont IdClient vaut 'C1' et 'C2'. Que se passe-t-il si l'on exécute INSERT INTO Commande VALUES ('O9', 'C5') dans cet état ?
- Les instructions SQL se répartissent en langage de définition de données (DDL), langage de manipulation de données (DML) et langage de contrôle de données (DCL). Laquelle relève du DDL ?
- Une table Produit contient 5 lignes (Nom, Prix) : (Stylo, 120), (Cahier, 250), (Gomme, 80), (Classeur, 300), (Règle, 150). Quelle proposition donne, dans l'ordre, les lignes renvoyées par SELECT Nom FROM Produit WHERE Prix >= 150 ORDER BY Prix DESC ?
- La colonne Service d'une table Employe contient, de la première ligne à la dernière, Commercial, Développement, Commercial, Administration, Développement, Commercial (6 lignes au total). Combien de lignes renvoie SELECT DISTINCT Service FROM Employe ?
- Quel est le résultat de l'exécution en SQL de DELETE FROM Employe sans clause WHERE ?
- La colonne Points d'une table Examen contient 4 valeurs : 80, NULL, 70, 90 (NULL signifie que la personne n'a pas passé l'examen). Quel est le résultat de SELECT AVG(Points) FROM Examen ?
- La colonne Points d'une table Resultat contient 6 valeurs : 50, NULL, 70, NULL, 90, 30. Quelle proposition donne, dans l'ordre, le résultat de SELECT COUNT(*), COUNT(Points), AVG(Points) FROM Resultat ?
- À partir d'une table Employe(NumEmploye, Service, Salaire), on veut obtenir les services dont le salaire moyen est supérieur ou égal à 300, ainsi que ce salaire moyen. Quelle instruction SQL est correcte ?
- Une table Vente(Magasin, Montant) contient 7 lignes : (A, 500), (A, 700), (B, 300), (B, 400), (C, 1200), (D, 200), (D, 900). Combien de lignes renvoie SELECT Magasin, SUM(Montant) FROM Vente GROUP BY Magasin HAVING SUM(Montant) >= 1000 ?
- Une table Employe(Nom, Service, Salaire) contient 8 lignes ; les salaires par service sont : Commercial 320, 280, 350 ; Développement 400, 310 ; Administration 260, 300 ; Planification 330. Combien de lignes renvoie SELECT Service, COUNT(*) FROM Employe WHERE Salaire >= 300 GROUP BY Service HAVING COUNT(*) >= 2 ?
- Une table Employe(NumEmploye, Nom, IdService) contient 4 lignes dont les valeurs IdService sont, dans l'ordre, 10, 20, 10 et NULL. Une table Service(IdService, NomService) contient 3 lignes dont IdService vaut 10, 20 et 30. Combien de lignes renvoie SELECT Employe.Nom, Service.NomService FROM Employe INNER JOIN Service ON Employe.IdService = Service.IdService ?
- Une table Employe(NumEmploye, Nom, IdService) contient 5 lignes dont les valeurs IdService sont, dans l'ordre, 10, 20, 10, NULL et NULL. Une table Service(IdService, NomService) contient 3 lignes dont IdService vaut 10, 20 et 30. Combien de lignes renvoie SELECT Service.NomService, Employe.Nom FROM Service LEFT OUTER JOIN Employe ON Service.IdService = Employe.IdService ?
- La colonne x de la table R contient 4 lignes de valeurs 1, 1, 2, 3, et la colonne x de la table S contient 4 lignes de valeurs 1, 1, 2, 4. Combien de lignes renvoie SELECT * FROM R INNER JOIN S ON R.x = S.x ?
- Une table Client(IdClient, Nom) contient 4 lignes : (C1, Aoki), (C2, Inoue), (C3, Ueda), (C4, Eto). Une table Commande(IdCommande, IdClient, Montant) contient 5 lignes : (O1, C1, 3000), (O2, C2, 8000), (O3, C1, 6000), (O4, C3, 2000), (O5, C2, 9000). Combien de lignes renvoie SELECT Nom FROM Client WHERE IdClient IN (SELECT IdClient FROM Commande WHERE Montant > 5000) ?
- À partir d'une table Client(IdClient, Nom) et d'une table Commande(IdCommande, IdClient, Montant), on veut obtenir le nom des clients qui n'ont jamais passé de commande. Quelle instruction SQL est correcte ?
- Quelle proposition décrit correctement une vue (view) dans une base de données relationnelle ?
- Quel est le but principal de la normalisation des tables d'une base de données relationnelle ?
- La clé primaire d'une table Commande(NumCommande, NumArticle, Quantite, NumClient, NomClient) est {NumCommande, NumArticle}, et ses dépendances fonctionnelles sont {NumCommande, NumArticle} → Quantite, NumCommande → NumClient et NumClient → NomClient. Quel est le résultat correct de la normalisation de cette table jusqu'à la troisième forme normale (3NF) ?
- La clé primaire d'une table Employe(NumEmploye, Nom, CodeService, NomService) est NumEmploye, et chaque colonne contient une seule valeur. Les dépendances fonctionnelles sont NumEmploye → Nom, NumEmploye → CodeService et CodeService → NomService. Quelle proposition indique correctement la forme normale de cette table ?
- Dans une base de données utilisée surtout pour la lecture et l'agrégation, des tables issues de la normalisation sont parfois délibérément fusionnées en une seule, de sorte que les mêmes données sont stockées en double (dénormalisation). Quelle combinaison associe correctement un avantage et un inconvénient de cette conception ?
- Dans un diagramme E-R, il existe une relation plusieurs-à-plusieurs entre étudiants et cours : un étudiant suit plusieurs cours, et un cours est suivi par plusieurs étudiants. Quelle est la manière appropriée de mettre en œuvre cette relation avec des tables d'une base de données relationnelle ?
- Sur une table Compte, on démarre une transaction et l'on exécute un UPDATE qui retire 300 du solde du compte A et un UPDATE qui ajoute 300 au solde du compte B. On exécute ensuite ROLLBACK au lieu de COMMIT. Qu'advient-il de la table Compte ?
- Parmi les propriétés ACID qu'une transaction doit posséder, laquelle garantit qu'un virement qui débite le compte A et crédite le compte B est soit effectué entièrement, soit pas du tout, même si une panne survient en cours de route ?
- La quantité en stock d'un produit dans une table Stock vaut 10. La transaction T1 lit la quantité en stock et réécrit cette valeur moins 3, et T2 lit la quantité en stock et réécrit cette valeur moins 5. Si elles s'exécutent sans poser de verrou, dans l'ordre lecture de T1, lecture de T2, écriture de T1, écriture de T2, quelle est la quantité en stock finale ?
- Parmi les problèmes qui surviennent lorsque des transactions s'exécutent simultanément, quelle description d'une lecture sale (dirty read) est correcte ?
- La transaction T1 a exécuté SELECT COUNT(*) FROM Commande WHERE Montant >= 1000 et a obtenu 8. Juste après, T2 a inséré une ligne de commande d'un montant de 2000 et l'a validée. Lorsque T1 a exécuté de nouveau la même instruction SELECT, elle a obtenu 9. De quel phénomène s'agit-il ?
- Parmi les niveaux d'isolation définis par la norme SQL, quelle combinaison indique correctement les phénomènes qui peuvent se produire avec READ COMMITTED ?
- La transaction T1 détient un verrou partagé sur une ligne et la lit. Sur la même ligne, T2 demande un verrou partagé et T3 un verrou exclusif. Quelle affirmation est correcte pour la période qui précède la libération du verrou par T1 ?
- Quelle proposition décrit correctement le verrouillage à deux phases (2PL), utilisé pour le contrôle de concurrence des transactions ?
- La transaction T1 a posé un verrou exclusif sur la ligne A puis demandé un verrou sur la ligne B, tandis que T2 a posé un verrou exclusif sur la ligne B puis demandé un verrou sur la ligne A ; aucune ne peut donc progresser. Que fait généralement un SGBD lorsqu'il détecte cette situation ?
- Lors de la mise à jour des données, de nombreux SGBD enregistrent les modifications dans un journal (log) et écrivent ce journal sur un support de stockage non volatil avant la base de données elle-même (WAL : journalisation à écriture anticipée, write-ahead logging). Quelle est la principale raison de cette approche ?
- On considère les transactions T1 à T5 ; un point de contrôle (checkpoint) a été pris une fois avant qu'une panne ne survienne. T1 a démarré et a été validée avant le point de contrôle. T2 et T3 ont démarré avant le point de contrôle ; T2 a été validée après le point de contrôle mais avant la panne, et T3 n'était pas validée au moment de la panne. T4 et T5 ont démarré après le point de contrôle ; T4 a été validée avant la panne, et T5 ne l'était pas. Lors de la reprise après la panne, quelles transactions faut-il rejouer (rollforward) à l'aide du journal ?
- On a créé un index en arbre B+ sur la colonne NumMembre d'une table Membre de 1 million de lignes. Quelle combinaison associe correctement l'effet que l'on peut généralement attendre et son coût ?
- Pour une table Membre de 1 million de lignes, on envisage de créer un index en arbre B+ sur chacune des colonnes NumMembre (toutes différentes), Prefecture (47 valeurs) et Sexe (2 valeurs, réparties à peu près à moitié). Lors d'une recherche qui précise dans la clause WHERE la valeur d'une seule colonne, sur quelle colonne un index sera-t-il probablement le moins efficace ?
- Parmi les bases de données dites NoSQL, quelle description des caractéristiques d'une base clé-valeur est généralement correcte ?
- Quelle description du théorème CAP est appropriée pour une base de données distribuée qui conserve des copies des données sur plusieurs serveurs ?
Autres thèmes de Systèmes informatiques
- Arithmétique des ordinateurs IEEE 754, virgule fixe, erreur d'arrondi
- Probabilités, statistiques et files d'attente Dénombrement, lois de probabilité, estimation et tests, M/M/1
- ISA et assembleur RISC-V, modes d'adressage, conventions d'appel
- Compilateurs Analyse syntaxique, SSA, optimisation, registres
- Éditeurs de liens, chargeurs et exécutables ELF, symboles, relocalisation, liaison dynamique
- Système d'exploitation et matériel Interruptions, appels système, défauts de page
- Hiérarchie mémoire Cache, remplacement, trois types de défauts
- Multicœur et synchronisation MESI, instructions atomiques, barrières mémoire
- Programmation GPU Warps, mémoire partagée, coalescence, occupation
- Pile matérielle et logicielle de l'IA Inférence/entraînement, quantification, roofline
- Bases de l'apprentissage automatique Types d'apprentissage, métriques et réseaux de neurones
- Systèmes embarqués et firmware GPIO, UART/SPI/I2C, RTOS
- HDL et vérification Verilog, latches, machines à états, testbenches
- Interfaces d'E/S et bus PCIe, USB, SerDes, CXL
- Bases des réseaux informatiques TCP/IP, sous-réseaux, DNS, TLS
- Bases des technologies web HTTP, cookies, REST, CORS, cache
- Bases des communications sans fil Modulation, OFDM, MIMO et circuits RF
- Bases de la sécurité de l'information Cryptographie, authentification, attaques web
- Structures de données et algorithmes Complexité, recherche, tris, graphes
- Bases de la programmation (trace de pseudo-code) Pseudo-code, trace, tableaux et récursion
- Bases de la programmation en C Pointeurs, mémoire, comportement indéfini
- Développement logiciel et gestion de projet Processus, tests, délais et coûts
- Bases de la stratégie d'entreprise et de la comptabilité Comptabilité, seuil de rentabilité, stratégie, marketing
- Gestion des services et audit des systèmes d'information SLA, incidents et problèmes, audit et contrôle interne
- Architecture des systèmes et fiabilité Redondance, RAID, sauvegardes et cloud
- Analyse des performances Loi d'Amdahl, CPI, goulots d'étranglement
- Sécurité matérielle Canaux auxiliaires, secure boot, TEE, PUF
- Gestion de l'énergie DVFS, power gating, états de veille