Skip to content

Instantly share code, notes, and snippets.

@bastienapp
Created May 18, 2026 07:45
Show Gist options
  • Select an option

  • Save bastienapp/8c759200bd0f3bcf208e4f7e63ea02d9 to your computer and use it in GitHub Desktop.

Select an option

Save bastienapp/8c759200bd0f3bcf208e4f7e63ea02d9 to your computer and use it in GitHub Desktop.
Évaluation blanche 1

Évaluation blanche 1

Contexte du projet

1. Modélisation

Tu dois modéliser la base de données d'un site de vente de livres audio : ces derniers sont caractérisés par un ou plusieurs auteurs, un interprète, un titre, une durée et un prix. Un auteur a un nom, un prénom, une biographie, et il peut avoir écrit plusieurs livres. Un interprète a un nom, un prénom, et peut avoir prêté sa voix à plusieurs livres audio. Un livre audio peut être commandé par plusieurs utilisateurs. Un utilisateur possède une adresse email, un mot de passe, et peut commander plusieurs livres audio ; la date d'achat doit être enregistrée.

Réalise le MCD (et uniquement le MCD) de l'énoncé précédent, puis partage l'image de la modélisation.

2. Création de base de données

Crée la base de données SQL suivante à partir de ce diagramme :

Wizards

Tu peux choisir ton SGBDR (cependant, l'utilisation de PostgreSQL est recommandée).

Exporte un script SQL permettant de créer la base de données et les tables.

3. Requêtes

Réalise et partage un script SQL contenant les requêtes suivantes :

  • Sélectionne le titre des catégories.
  • Sélectionne le nom et la puissance des potions dont la puissance est égale à 4.
  • Sélectionne le nom des ingrédients dont le nom commence par "Angel".
  • Sélectionne le nom et la puissance des potions dont le nom contient le mot "Elixir" et dont la puissance est inférieure à 7.
  • Sélectionne le nom des potions par ordre alphabétique.
  • Sélectionne le nom, l'effet et la puissance des 10 potions les plus puissantes.
  • Sélectionne le nom des potions et le titre de leur catégorie correspondante.
  • Sélectionne le nom des potions, le nom de chacun de leurs ingrédients ainsi que leur quantité respective.
  • Sélectionne le nom des ingrédients qui ne sont dans aucune potion.
  • Sélectionne le nom des catégories avec le nombre de potions de chacune de ces catégories.
  • Sélectionne le nom des potions ayant une quantité d'ingrédients supérieure à 20 (il faut additionner les quantités de tous les ingrédients d'une potion).

4. Dépôt Git

Tu dois réaliser une API pour un site de musique.

Initialise un projet spring-music avec ton framework Spring Boot et les dépendances suivantes :

  • Spring Web
  • Spring Data JPA
  • H2 Database

Crée un dépôt Git contenant les fichiers du projet et lie-le à un dépôt distant.

Travaille en tenant compte des bonnes pratiques de Git : fais des commits réguliers et correctement nommés !

Cependant, tu ne dois travailler que sur la branche main.

Vérifie régulièrement que ton travail est bien présent sur ton dépôt distant !

5. Album

Dans un premier temps, il te sera demandé de créer un CRUD pour la partie album : un album doit avoir un identifiant auto-incrémenté, un titre (obligatoire, maximum 150 caractères), une description (optionnelle, au format texte), un lien vers une image (optionnel), la durée totale de l'album (optionnelle, par défaut 0) et l'année de sortie de l'album (au format "yyyy-MM-dd", obligatoire).

Les noms des propriétés sont les suivants (l'orthographe est importante !) :

  • albumId
  • title
  • description
  • image
  • duration
  • releaseDate

Les routes à créer sont les suivantes (l'orthographe est importante !) :

  • GET /albums : récupérer la liste complète des albums
  • GET /albums/{albumId} : récupérer un album par son identifiant
  • POST /albums : créer un nouvel album
  • PUT /albums/{albumId} : mettre à jour un album

6. Relations

Une fois ces premières routes fonctionnelles, il te sera demandé d'améliorer l'application : tu devras ajouter les pistes audio (track) des albums, un album pouvant posséder plusieurs pistes (avec, pour chacune, un nom et une position) et une piste n'appartenant qu'à un seul album.

Tu ajouteras également les artistes liés à l'album, qui possèdent un nom. Un artiste peut participer à plusieurs albums, et un album peut avoir plusieurs artistes.

Voici la modélisation de cet énoncé, merci d'en tenir compte pour le nommage des entités et de leurs propriétés.

Relations

Les routes à créer sont les suivantes :

  • GET /albums/title/{search} : récupérer les albums dont le titre est exactement le mot recherché
  • GET /albums/{albumId}/tracks : récupérer la liste des pistes d'un album
  • GET /albums/artists/{search} : récupérer les albums dont un des artistes contient le nom recherché

Modalités pédagogiques

En autonomie, sur une journée.

Ne pas s'aider d'une intelligence artificielle.

Modalités d'évaluation

  • La modélisation est accessible à partir d'un lien public.
  • Les scripts s'exécutent sans erreurs.
  • Le projet est hébergé sur un dépôt distant.
  • Les routes sont fonctionnelles.

Livrables

  • Le lien vers le MCD.
  • Un script permettant d'initialiser la base de données et ses tables.
  • Un script contenant les requêtes.
  • Lien vers un dépôt distant.

Critères de performance

.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment