DUT en Statistique et Informatique Décisionnelle, Université de la Côte d'Azur

Cours de Bases de données avancées 2018/19

Enseignant: prof. Malchiodi (Università degli Studi di Milano)

TP: gestion des bases de données

  1. Acceder à mySQL en tant que usager root (ou usager avec suffisantes privilèges).
  2. Créer une base de données superheroes.
  3. Créer un usager superheroadmin qui a tous les privilèges sur la base superheroes et doit pouvoir créer des nouveaux usagers.
  4. Quitter mySQL et se réconnecter en tant que usager superheroadmin.
  5. Selectionner la base superheroes.
  6. Créer une table heroes avec les colonnes suivantes:
    • ID (entier qui fera office de clé primaire),
    • Name (chaîne de caractères),
    • Identity (chaîne de caractères),
    • Birth_place (chaîne de caractères),
    • Publisher (chaîne de caractères),
    • Height (nombre à virgule flottante),
    • Weight (nombre à virgule flottante),
    • Gender (chaîne de caractères),
    • First_appearance (entier),
    • Eye_color (chaîne de caractères),
    • Hair_color (chaîne de caractères),
    • Strength (chaîne de caractères),
    • Intelligence (chaîne de caractères).
  7. Créer un usager heroreader qui n’a que les privilèges de lecture sur cette table et qui ne peut pas créer autres usagers.
  8. Créer un usager herowriter qui a les privilèges de lecture et d’écriture sur cette table et qui peut créer autres usagers.
  9. Ajouter un index portant sur la colonne ID.
  10. Ajouter une contrainte qui ensure que les colonnes Strength, Height, Weight ne contiennent jamais une valeur négative.
  11. S’assurer aussi que les colonnes Name, Identity et Publisher contiennent toujours une valeur.
  12. Se connecter en tant que l’usager herowriter et insérer les heros suivants (les valeurs de chaque colonne sont séparés en utilisant un point-virgule, et des valeurs manquantes sont indiquées avec deux point-virgules sans rien entre eux):
    • Wonder Woman; Diana Prince; Themyscira; DC Comics; 183.13; 74.74; F; 1941; Blue; Black; 100; high
    • Wolverine; Logan; Alberta, Canada; Marvel Comics; 160.70; 135.21; M; ; Blue; Black; 35; good
    • Spider-Man; Peter Parker; New York, New York; Marvel Comics; 178.28; 74.25; M; ; Hazel; Brown; 55; high
    • Professor X; Charles Francis Xavier; New York, New York; Marvel Comics; 183.74; 86.89; M; 1963; Blue; No Hair; 10; high
  13. Exécuter une SELECT et vérifier que les héros insérés soient effectivement stockés dans la BD.
  14. Essayer de modifier un héro en ne pas respectant les contraintes et vérifier ce qu’il se passe. N’y a-t-il pas quelque chose qui ne cloche pas?
  15. Essayer aussi de violer un des autres contraintes sur les données (duplicité, colonnes NOT NULL) et vérifier ce qu’il se passe.
  16. Se connecter en tant que l’usager heroreader et exécuter une cluase SELECT qui trouve tous les héros ayant les yeux bleus (“blue” en anglais).
  17. Vérifier que l’usager heroreader ne peut pas ni écrire sur la table heroes, ni en modifier la structure, ni créer autres usagers.
  18. Se connecter en tant que l’usager superheroadmin et enlever à l’usager herowriter le privilège de créer autres usagers.
  19. Ajouter aussi une table Episode avec la structure suivante:
    • ID (entier faisante office de clé primaire),
    • Nom_episode (chaîne de caractères).
  20. Ajouter une table Episodes_Heros avec la structure suivante:
    • ID_episode (entier faisant office de clé primaire),
    • ID_heros (entier).
    L’idée est celle de considérer un épisode et, pour chaque héro qui y participe, ajouter une ligne a cette table qui lie l’ID de l’épisode à celui du héro.
  21. En utilisant les jointures, determiner une clause SELECT qui trouve tous les noms des héros qui ont participé à un épisode spécifique. Écrire aussi une clause SELECT qui trouve les noms de tous les épisodes auxquels un spécifique héro a participé.
  22. Quelles commandes utiliserez-vous pour supprimer les usager et la base crées?