24-NSIJ1G11-3

  1. Une base de données relationnelle permet par exemple d'assurer la cohérence des données (en évitant les doublons ou incohérences) et leur sécurité (en contrôlant les accès et en protégeant contre les pertes ou modifications non autorisées).

  2. Un attribut peut être utilisé comme clé primaire s'il permet d'identifier de manière unique chaque enregistrement de la relation.

  3. Dans la relation Reservation, la clé étrangère id_client fait référence à la clé primaire id_client de la relation Client et permet d'indiquer quel client a effectué la réservation.

    De même, la clé étrangère id_emplacement fait référence à la clé primaire id_emplacement de la relation Emplacement et précise quel emplacement a été réservé.

  4. Le schéma relationnel de la relation Emplacement :

    Emplacement(id_emplacement: INT, nom: TEXT, localisation: TEXT, tarif_journalier: FLOAT)

  5. id_emplacement nom localisation
    1 myrtille A4
    4 mandarine B1
    6 melon A2
  6. SELECT nom, prenom
    FROM Client
    WHERE ville = 'Strasbourg';
    
  7. INSERT INTO Client
    VALUES (42, 'CODD', 'Edgar', '28 rue des Capucines', 'Lyon', 'France', '0555555555')
    
  8. SELECT Client.nom,
           Client.prenom,
           Reservation.nombre_personne,
           Reservation.date_arrivee,
           Reservation.date_depart,
           Emplacement.tarif_journalier
    FROM Client
    JOIN Reservation ON Reservation.id_client = Client.id_client
    JOIN Emplacement ON Emplacement.id_emplacement = Reservation.id_emplacement
    WHERE Reservation.id_reservation = 18;
    
  9. Le paramètre self est une référence de l'objet sur lequel on applique la méthode.

  10. client01 = Client('CODD', 'Edgar', '28 rue des Capucines', 'Lyon', 'France', '0555555555')
    
  11. def montant_a_regler(triplet):
        client, reservation, emplacement = triplet
        return emplacement.tarif_journalier * reservation.nb_jours() \
            + reservation.nombre_personne * 2.20 * reservation.nb_jours()
    
  12. La variable annee stocke une année sous forme de chaîne de caractères. Or, lors de la comparaison 2018 <= annee <= 2024, on tente de comparer cette chaîne à des entiers, ce qui n'est pas autorisé en Python, d'où l'erreur.

  13. Il suffit de convertir annee en entier avant d'effectuer la comparaison :

    2018 <= int(annee) <= 2024
    
  14. La fonction se complète à partir de la ligne 28 comme :

    if mois not in calendrier:
        return False
    if len(numero) != 3 or not que_des_chiffres(numero):
        return False