Aller au contenu

Bases de données relationnelles

Questions de cours

Deux relations modélisent la flotte de voitures d'un réseau de location de voitures.

  • Agence

    ida ville département
    1 Paris 75
    2 Lyon 69
    3 Marseille 13
    4 Aubagne 13

  • Voiture

    idv marque modèle km couleur ida
    1 Renault Clio 12000 Rouge 2
    2 Peugeot 205 22000 Noir 3
    3 Toyota Yaris 33000 Noir 3
    4 Toyota Yaris 65000 Verte 1

  • Combien la relation Voiture comporte-t-elle d'attributs ?

  • Que vaut son cardinal ?
  • Quel est le domaine de l'attribut ida dans la relation Voiture ?
  • Quelle est la clé primaire de la relation Agence ?
  • Quelle est la clé primaire de la relation Voiture ?
  • Quelle est la clé étrangère de la relation Voiture ?
  • Quel est le schéma relationnel de la relation Agence ?
  • Quel est le schéma relationnel de la relation Voiture ?

Modélisation redondante

Dans la table "Médailles" ci-dessous, on suppose que des sports différents ne peuvent pas avoir le même nom.

Année Sport Épreuve Sexe Sportif Médaille
2020 Natation 50m libre H C. Dressel Or
2020 Natation 50m libre H F. Manaudou Argent
2020 Natation 100m dos F K. Mckeown Or
2020 Natation 100m dos F K. Masse Argent
2016 Natation 100m dos F K. Masse Bronze
2016 Natation 100m dos F F. Yanhui Bronze
  1. Quels attributs peut-on choisir comme clé primaire ? Justifier votre réponse.
    • Ce n'est pas possible.
    • Année
    • (Année, Sportif, Épreuve)
    • (Année, Épreuve, Médaille)
  2. Quel est le résultat de l'ordre UPDATE Médailles SET Sportif = 'F. Manaudou' WHERE Année = 2020 AND Médaille = 'Or' ?
    1. Quelles sont les informations qui apparaissent plusieurs fois dans cette table ?
    2. On souhaite éviter les informations redondantes. On décompose pour cela la relation Médaille en trois relations : Sport, Sportif et Médaille.
      1. Donner les attributs de ces relations (on ajoutera un attribut id si nécessaire) .
      2. Pour chacune des relations, expliquer quel attribut joue le rôle de clé primaire, quels attributs jouent le rôle de clé étrangère (s'il y en a).
      3. En déduire le schéma relationnel complet de cette base de données.

Tour de france

On donne ci-dessous les relations constituant la base de données Tour de France 2020.

img

En utilisant les données de l'énoncé, répondre aux questions suivantes :

  1. Donner le schéma relationnel des relations Équipe et Étape.

    1. Quels sont les attributs de la relation Coureur ?
    2. Quel attribut peut jouer le rôle de clé primaire pour cette relation ?
    3. Quelle contrainte utilisateur est-il raisonnable d'imposer à l'attribut "dossard" ?
    4. En déduire le schéma relationnel de la relation Coureur.
    1. Expliquer pourquoi l'attribut dossard ne peut pas être choisi comme clé primaire de la relation Temps.
    2. Y a-t-il des clés étrangères dans la relation Temps ? Si oui, préciser lesquelles.
    3. En déduire le schéma relationnel de la relation Temps. On choisira comme clé primaire le coupe (dossard, numéroEtape).
  2. En déduire une représentation sous forme de diagramme synthétisant la composition des différentes tables ainsi que les relations entre elles.
    1. Quel est le nom de l'équipe à laquelle appartient Nicolas EDET ?
    2. Quel temps a réalisé Guillaume MARTIN sur l'étape Sisteron / Orcières-Merlette ?
    3. Quelle est la vitesse moyenne de Julian ALAPHILIPPE lors de l'étape Gap-Privas ?
    4. À l'arrivée à Privas, qui est arrivé en premier entre Primož ROGLIČ et Simone CONSONNI ?
    5. Quels sont les numéros de dossard des coureurs de l'équipe "Cofidis, Solutions Crédit" ?
    1. Écrire un ordre SQL permettant d'ajouter la coureuse Anaïs Baya à l'équipe Astana Pro Team.

    2. Expliquer pourquoi l'ordre SQL ci-dessous soulève une erreur.

      1
      2
      DELETE FROM Coureur
      WHERE dossard = 41 ;
      
    3. Expliquer comment faire pour supprimer ALAPHILIPPE Julian de la relation Coureur.

Type bac

Un site permet à ses membres de proposer à la location du matériel et de louer du matériel. Ceci permet de mutualiser du matériel entre membres et au propriétaire de rentabiliser cet achat. Le temps d'utilisation du matériel s'en trouve ainsi augmenté et le nombre d'appareils diminué.

Le modèle relationnel est donné par le schéma ci-dessous. La table Membre contient les informations de chaque utilisateur du site (nom, prénom et code postal). La table Objet décrit le type d'objet à la location ainsi que son tarif de location journalier.

La table Reservation répertorie toutes les réservations effectuées par les membres du site avec notamment leur date de début et de fin de location. La table Possede permet de lier les tables Membre et Objet.

img

Conventions utilisées pour le schéma :

  • Les clés primaires et étrangères sont mises en gras ;
  • un symbole de clé identifie une clé primaire ;
  • une ligne entre deux attributs indique qu’ils doivent partager les mêmes valeurs et qu’ils sont reliés de la manière suivante : le côté avec un trait indique la clé primaire et le côté avec une pate d'oie indique la clé étrangère.

On donne ci-dessous le contenu de ces tables à un instant donné.

img

    1. Donner les noms et prénoms du (des) personne(s) dont le code postal est 69003.
    2. Donner les noms et prénoms du (des) personne(s) qui proposent à la location un appareil à raclette.
    3. Donner le prénom et le nom du membre qui ne propose pas d’objet à la location.
    1. Écrire une requête SQL permettant d'ajouter sans erreur Wendie Renard habitant à Villeurbanne (code postal 69100) dans la table Membre.
    2. Écrire une requête permettant de modifier le tarif de location d’un nettoyeur à haute pression pour le passer à 15 € par jour au lieu de 20 € par jour.
    3. Écrire la ou les requêtes permettant à Wendie Renard de proposer à la location son enceinte au tarif de 5 euros la journée.
    1. Expliquer la limitation importante d’utilisation du service offert par le site si l'on utilisait le couple de clés étrangères (idobjet, idmembre) en tant que clé primaire de la relation Reservation.

    2. Expliquer quelle erreur survient lorsque l'on exécute l'ordre

      1
      INSERT INTO Membre VALUES (1, "Luther King", "Martin"); 
      
    3. L'ordre suivant produit-il un erreur ? Justifier.

      1
      INSERT INTO Membre VALUES (10, "Ali", "Mohamed");   
      
    4. Mohamed Ali décide de ne plus être membre du site. Il faut donc le supprimer de la table Membre à l'aide de la requête :

      1
      2
      DELETE FROM Membre
      WHERE nom = "Ali" AND prenom ="Mohamed";
      

      Expliquer pourquoi cette requête produit une erreur. 5. Proposer une suite de requêtes utilisant le mot clé DELETE, précédant la requête ci-dessus pour supprimer correctement Mohamed Ali de la base de données.