Bases des bases de données

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 ?

  1. AEn deuxième forme normale mais pas en troisième forme normale
  2. BEn première forme normale mais pas en deuxième forme normale
  3. CEn troisième forme normale
Afficher la réponse et l'explication

Réponse : A. En deuxième forme normale mais pas en troisième forme normale

Chaque colonne contient une valeur unique, sans répétition ; la table est donc en première forme normale. Comme la clé primaire est la seule colonne NumEmploye, aucune dépendance fonctionnelle partielle envers une partie de la clé n'est possible ; la table est donc aussi en deuxième forme normale. Cependant, NomService est déterminé par l'intermédiaire de CodeService, qui n'est pas la clé primaire, selon NumEmploye → CodeService → NomService ; cette dépendance fonctionnelle transitive fait que la table n'est pas en troisième forme normale. En l'état, le nom du service est répété dans la ligne de chaque employé du même service, et renommer un service oblige à réécrire de nombreuses lignes. Séparer une table Service(CodeService, NomService) et ne garder que CodeService dans la table Employe donne la troisième forme normale. La colonne CodeService de la table Employe devient alors une clé étrangère qui fait référence à la table Service.

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

Autres questions sur Bases des bases de données

  1. 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 ?
  2. 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 ?
  3. 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 ?
  4. 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 ?
  5. 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 ?