24-NSI0B-3

    • La variable a contient [10, 8, 9, 9, 8, 10, 6, 7, 8, 8].
    • La variable b contient 'Fondation'.
  1. def titre_livre(dico, id_livre):
        for i in range(len(dico['id'])):
            if dico['id'][i] == id_livre:
                return dico['titre'][i]
        return None
    
  2. def note_maxi(dico):
        if not dico['note']:  # s'il n'y a pas de notes
            return None
        maxi = dico['note'][0]
        for note in dico['note']:
            if note > maxi:
                maxi = note
        return maxi
    
  3. def livres_note(dico, n):
        return [dico['titre'][i] for i in range(len(dico['note'])) if dico['note'][i] == n]
    

    Ou plus simplement :

    def livres_note(dico, n):
        titres = []
        for i in range(len(dico['note'])):
            if dico['note'][i] == n:
                titres.append(dico['titre'][i])
        return titres
    
  4. def livre_note_maxi(dico):
        return livres_note(dico, note_maxi(dico))
    
  5. id est un attribut de la classe Livre et get_id une de ses méthodes.

  6. def get_note(self):
        return self.note
    
  7. b = Bibliotheque()
    b.ajout_livre(Livre(8, 'Blade Runner', 'K.Dick', 1968, 8))
    
  8. def titre_livre(self, id_livre):
        for livre in self.liste_livre:
            if livre.get_id() == id_livre:
                return livre.get_titre()
        return None
    
  9. Un auteur peut écrire plusieurs livres, ce n'est donc pas un attribut qui permet d'identifier de manière unique un livre, un enregistrement de la table, il ne peut donc pas être choisi comme clé primaire.

  10. titre
    Ubik
    Blade Runner
  11. SELECT titre
    FROM livres
    WHERE auteur = 'Asimov' AND ann_pub > 1950;
    
  12. UPDATE livres SET note = 10 WHERE titre = "Ubik";

  13. L'utilisation de deux tables distinctes (livres et auteurs) au lieu d'une seule permet d'éviter la redondance de données. Dans le cas où un auteur écrit plusieurs livres, ses informations (nom, prénom...) ne seront ainsi stockées qu'une seule fois dans la table auteurs.

  14. Dans la table livres, l'attribut id_auteur est une clé étrangère. Elle fait référence à la clé primaire id de la table auteurs et fait ainsi le lien entre les deux tables.

  15. SELECT DISTINCT auteurs.nom, auteurs.prenom
    FROM auteurs
    JOIN livres ON livres.id_auteur = auteurs.id
    WHERE livres.ann_pub > 1960;
    
  16. Cette requête renvoie le titre des livres dont les auteurs avaient moins de 30 ans au moment de leur publication.

  17. La réalisation de ce projet peut poser problème, car il s'agit de données personnelles et leur collecte, stockage et diffusion sont réglementés par la loi (protection de la vie privée, RGPD, etc.).