Votre équipe a pour mission de développer la base de données d’un logiciel permettant de gérer les dépenses entre amis.
Vous allez donc devoir réfléchir à la manière de créer une base de données relationnelle pour ce type de logiciel. Attention, les besoins exprimés concernent le logiciel. Vous devez uniquement réfléchir à la gestion des données de l’application.
Dans le cadre de cette étude de cas, vous aurez à livrer :
Les notebooks devront être agréables à lire :
Avertissement
Vous devez créer vos tables dans un espace spécifique de la base de données, que l’on appelle schéma afin de permettre aux enseignants de corriger de multiples projets avec potentiellement des tables qui ont le même nom.
Pour cela, vous devez créer un schéma avant la création des tables avec la commande :
%%sql
CREATE schema login
où login
est le plus court des identifiants des membres du groupe.
Pour créer et interroger les tables (dans toutes les requêtes SQL) vous devrez préfixer de votre identifiant le nom des tables. Par exemple : login.MESSAGE
.
L’objectif est de réaliser d’un logiciel de gestion des dépenses entre amis. Le besoin est divisé en plusieurs modules, avec un module de base qui est obligatoire pour permettre de valider une compétence au niveau Atteint. Le module optionnel est proposé aux étudiants désirant valider les compétences au-delà des attentes.
Afin de simplifier la première version du prototype, les fonctionnalités suivantes ne seront pas traitées :
Le module de base doit permettre de gérer un compte, ses membres et leurs dépenses. Chaque dépense est effectuée par un seul et unique membre et doit être remboursée en parts égales par un ou plusieurs membres. Une dépense peut être associée à une unique catégorie. La liste des catégories est définie à l’avance sans possibilité de modification dans cette première version du logiciel. Un compte est créé par un membre initial.
Le module de gestion des commentaires doit permettre d’associer des commentaires à une dépense donnée. N’importe quel membre du compte peut réagir à un commentaire par l’intermédiaire d’un smiley. N’importe quel membre du compte doit pouvoir regarder un smiley pour identifier quels autres membres l’ont utilisé.
Le travail est à réaliser en binômes. Un seul monôme est autorisé par groupe de TD.
Tous les fichiers devront être réunis dans une archive nommée de la manière suivante nomX_nomY.zip
(nomX étant le 1er nom du binôme par ordre alphabétique) et déposée sur Moodle avant le le dimanche 14 avril 2024 à 23h59.
Exercice 1
Proposez une modélisation conceptuelle de la base de données répondant aux besoins exprimés en justifiant et argumentant les choix qui pourraient être ambigus. Vous proposerez :
schema_conceptuel
. L’image fournie doit être orientée dans le bon sens de lecture.schema_conceptuel_argumentation.pdf
.Exercice 2
Proposez une dérivation en schéma logique du schéma conceptuel que vous avez proposé. Vous proposerez :
schema_logique
. L’image fournie doit être orientée dans le bon sens de lecture.schema_logique_argumentation.pdf
.Tous les fichiers devront être réunis dans une archive nommée de la manière suivante nomX_nomY.zip
(nomX étant le 1er nom du binôme par ordre alphabétique) et déposée sur Moodle avant le dimanche 21 avril 2024 23h59.
Exercices 1 & 2
Joignez à votre livrable final les schémas (conceptuel et logique) revus et corrigés.
Exercice 3
Créez un notebook nommé creation.ipynb
dans lequel vous allez écrire le script nécessaire pour :
CASCADE
du DROP
)Respectez l’ordre indiqué précédemment en commençant par les destructions de tables.
Peupler votre base de données consiste à la remplir en simulant de l’activité. Vous êtes libres d’ajouter les informations que vous souhaitez afin de faire en sorte que vos requêtes retourne des résultats illmustrant leur bon fonctionnement.
Exercice 4
Créez un notebook nommé test.ipynb
contenant 3 requêtes prouvant que vous avez géré correctement les contraintes d’intégrité. Vous devez écrire les requêtes SQL nécessaires pour :
Pensez à ajouter des explications pour expliquer la nature des contraintes que vous testez. Si vous avez ajouté d’autres types de contraintes (unicité ou non-nullité par exemple), vous êtes encouragés à les tester de façon à valoriser votre travail (et tenter d’avoir une évaluation “Au-delà des attentes”).
Exercice 5
Créez un notebook nommé query.ipynb
contenant des requêtes pour afficher les informations suivantes :
1
.1
.1
qui doivent rembourser une dépense de la catégorie Cadeaux
.1
a avancé l’argent.1
.1
, n’ayant jamais eu à rembourser une dépense associée à ce même compte.Attention ! Vous devez avoir peuplé correctement la base de données, ce n’est pas au correcteur d’insérer de nouvelles données pour tester vos requêtes.
Avertissement
Pour les requêtes SQL utilisez la documentation suivante et aucune autre : https://docs.postgresql.fr/10/index.html (il s’agit de la bonne version pour la base de données installée sur JupyterHub)