Carnets de voyages

[45 minutes]

Soit la relation suivante, donnée avec une couverture minimale de ses DFE :

CTRL+C pour copier, CTRL+V pour coller
1
CarnetDeVoyage (numAuteur:integer, nomAuteur:string, prenomAuteur:string, numVille:integer, nomVille:string, nomPays:string, description:string)
CarnetDeVoyage (numAuteur:integer, nomAuteur:string, prenomAuteur:string, numVille:integer, nomVille:string, nomPays:string, description:string)
  • numAuteur → nomAuteur

  • numAuteur → prenomAuteur

  • numVille → nomVille

  • numVille → nomPays

  • numAuteur, numVille → description

Question

Rappeler la définition formelle d'une clé.

Énoncez la ou les clés existantes.

Pour chaque clé, énoncer les DF qui prouvent que c'est une clé et explicitez les axiomes d'Armstrong utilisés pour établir ces DF.

Dites en quelle forme normale est la relation (montrez pourquoi).

Question

Proposez un schéma normalisé en 3NF, sans perte, en faisant apparaître les clés.

Question

Rétro-concevez le modèle UML qui aurait permis d'arriver directement à ce résultat normalisé.

Question

Écrivez le code SQL permettant de créer ce schéma normalisé dans une base de données standard.

Question

De nouvelles informations doivent être ajoutées à la base, afin de connaître les distances entre les villes. Ces nouvelles spécifications sont présentées sous la forme d'un package complémentaire. Effectuez le passage au relationnel de ce schéma (n'ajoutez que ce qui est nouveau). Expliquez ce que permet la clé #nom de trajet.

Modèle des distances

Question

Écrivez le code SQL permettant d'implémenter le package distances.

Puis, donnez tous les droits sur l'ensemble du schéma à un utilisateur Admin, et les droits en lecture sur l'ensemble du schéma à tous les utilisateurs de la base.