Bases des bases de données

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 ?

  1. ACréer une nouvelle table Inscription contenant NumEtudiant et NumCours comme clés étrangères
  2. BAjouter une colonne NumCours à la table Etudiant
  3. CAjouter une colonne NumEtudiant à la table Cours
Afficher la réponse et l'explication

Réponse : A. Créer une nouvelle table Inscription contenant NumEtudiant et NumCours comme clés étrangères

Un diagramme E-R représente les objets gérés dans une base de données (entités) et les relations entre eux (associations), et chaque relation a une multiplicité (cardinalité), comme un-à-un, un-à-plusieurs ou plusieurs-à-plusieurs. Une relation un-à-plusieurs peut être représentée en donnant à la table du côté « plusieurs » la clé primaire du côté « un » comme clé étrangère (par exemple, en ajoutant une colonne CodeService à la table Employe). Une relation plusieurs-à-plusieurs, en revanche, ne peut pas être représentée en ajoutant une colonne à l'une des tables, car on n'enregistrerait qu'un cours par étudiant (ou qu'un étudiant par cours). On place donc entre elles une table Inscription (entité associative) contenant NumEtudiant et NumCours comme clés étrangères, ce qui décompose la relation en deux relations un-à-plusieurs : étudiant-inscription et cours-inscription. La clé primaire de la table Inscription est généralement la combinaison de NumEtudiant et NumCours.

S'entraîner sur ce thème Retour au thème

Autres questions sur Bases des bases de données

  1. 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 ?
  2. 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 ?
  3. 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 ?
  4. Parmi les problèmes qui surviennent lorsque des transactions s'exécutent simultanément, quelle description d'une lecture sale (dirty read) est correcte ?
  5. 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 ?