You are on page 1of 4

Bases de donnes L2

Vlos en libre-service

Le projet seffectue par groupe de 2 personnes. Vous pouvez contacter vos encadrants aux adresses :

Benjamin Farinier : benjamin.farinier@cea.fr


Peter Habermehl : peter.habermehl@irif.fr
Yassine Hamoudi : hamoudi@irif.fr
Samy Jaziri : samy.jaziri@ens-cachan.fr
Cristina Sirangelo : cristina@irif.fr

Les rgles anti-plagiat de luniversit sappliquent votre travail et toute utilisation dlments ext-
rieurs devra tre explicitement voque et source. Vous pouvez discuter des diffrents aspects du projet
avec les autres groupes, mais toute copie partielle ou totale de code entre plusieurs groupes est interdite.

Rendu 1 : Modlisation conceptuelle


Date : Dimanche 5 novembre 23h59.
Format : Schma entits-associations au format PDF dpos sur Moodle.
Consignes : Ralisez le modle conceptuel de donnes (schma entits-associations) de
votre base de donnes. Vous prsenterez ce modle pour validation pendant la
sance de TP de la semaine du 6 novembre (pr-soutenance). Il est recommand
dattendre que votre modle soit valid avant de dbuter limplmentation.

Rendu 2 : Code
Date : Mi-dcembre priori (date communique ultrieurement).
Format : Une unique archive contenant lensemble de vos fichiers de code et un fichier
README.txt expliquant brivement quoi correspond chaque fichier, dpose
sur Moodle. Pour crer une archive MonArchive.tar partir dun dossier
MonCode utilisez la commande Linux : tar cvf MonArchive.tar MonCode
Consignes : Implmentez dans PostgreSQL votre base de donnes et les requtes permet-
tant de lutiliser, en utilisant la modlisation effectue pour le Rendu 1 et les
consignes dtailles partir de la page 2.

Rendu 2bis : Rapport


Date : En mme temps que le Rendu 2.
Format : Rapport entre 4 et 8 pages au format PDF dpos sur Moodle. Vous pouvez
utiliser https://www.freepdfconvert.com/fr pour convertir en PDF.
Consignes : Vous inclurez votre modle entits-associations et un schma relationnel de
vos tables. Vous expliquerez les choix qui ont motiv votre modlisation, et
les limitations de votre modle. Vous dcrirez galement les requtes que vous
avez choisies dimplmenter, et les choix que vous avez faits pour le calcul de
lindice prdictif de remplissage (voir Section 4).

Rendu 3 : Soutenance
Date : Jeudi 21/12 et vendredi 22/12.
Format : Prsentation orale par tous les membres du groupe.
Consignes : Vous dbuterez votre soutenance par une prsentation de votre travail.
Nous vous poserons ensuite des questions sur vos choix de modlisation, les
contraintes dintgrit utilises, les points forts et les points faibles de votre
approche, le fonctionnement de vos requtes, etc.

1
Dans ce projet, vous allez raliser une base de donnes pour un systme de location de vlos en libre-
service (de style Vlib). Les consignes de rendu ont t donnes la page prcdente (veillez indiquer
vos noms et prnoms dans le nom des documents dposs sur Moodle). Voici la description du sujet :

1 Des vlos en libre-service...


Le systme parisien de location de vlos en libre-service Vlib sapprte changer dexploitant. Le
rseau a t confi Smoovengo jusquen 2033, en remplacement de JCDecaux. Dans les prochaines
semaines, lensemble des vlos et stations existantes seront progressivement retirs pour faire place au
nouveau systme. Dans ce projet, nous vous proposons de crer la nouvelle base de donnes qui pourrait
tre utilise pour ladministration du futur Vlib.
Un systme de location de vlos en libre-service se compose de plusieurs stations fixes, parpilles
dans toute la ville, o est attach un nombre variable de vlos (suivant lendroit les stations peuvent
tres trs grandes ou trs petites). Les utilisateurs disposent dun abonnement (plusieurs formules sont
disponibles) qui leur permet de retirer un vlo automatiquement puis de le dposer dans la station de
leur choix ( condition quune place soit disponible). La facturation dpend du temps dutilisation du
vlo. Par exemple, les 30 premires minutes de location dun vlo peuvent tre gratuites, puis chaque
quart dheure supplmentaire factur 2 euros. Le futur systme de Smoovengo inclura galement 30% de
vlos assistance lectrique, en plus des vlos mcaniques habituels.
Plusieurs services sont proposs aux utilisateurs pour consulter leur historique (trajets effectus,
temps de dplacement en Vlib dans le mois, crdit dpens, abonnement en cours...) et encourager les
dplacements en vlo. Par exemple, 15 minutes bonus de location gratuite 1 sont attribues chaque fois
quun vlo est dpos dans une station Vlib+ (ce sont des stations difficiles daccs, souvent en hauteur
ou dans des endroits isols).
La gestion des vlos dfectueux constitue galement un point central du systme. Des agents Vlib
contrlent rgulirement les vlos et les acheminent si ncessaire dans des centres de rparation. La
possibilit de signaler soi-mme une panne ntait pas possible dans le systme actuel (bien que certains
utilisateurs aient pris lhabitude de retourner la selle du vlo pour signaler un problme), mais serait
fortement souhaitable pour le futur Vlib.

Concevez une base de donnes qui permette de grer la location de vlos en libre-service. Vous pou-
vez vous inspirer des systmes existants (comme Vlib dcrit prcdemment) ou ajouter vos propres
fonctionnalits. Regardez au pralable les requtes que vous serez amens implmenter (Section 3)
pour savoir quelles informations seront indispensables dans votre base. Vous commencerez par raliser le
modle conceptuel de donnes (schma entits-associations) pour le Rendu 1, puis vous pourrez passer
limplmentation dans PostgreSQL pour le Rendu 2. Utilisez les diffrents outils tudis en cours et
en TP (cls primaires/trangres, contraintes dintgrit, types adapts ...). Expliquez dans le rapport
(Rendu 2bis) et lors de la soutenance (Rendu 3) comment vous avez conu cette base de donnes, les
choix que vous avez effectus, les avantages, limites et amliorations possibles de votre systme, etc.

1. http://blog.velib.paris.fr/blog/2012/03/19/les-stations-bonus-de-la-plus-frequentee-a-la-plus-ardue/

2
Aide lutilisation de PostgreSQL
En plus de vos cours et TPs, vous tes encourags consulter la documentation en franais de
PostgreSQL disponible ici :

https://docs.postgresql.fr/10/
Les sections I. Tutoriel (https://docs.postgresql.fr/10/tutorial.html) et II. Langage
SQL (https://docs.postgresql.fr/10/sql.html) sont les plus intressantes. Il y est expliqu
comment compter, calculer un maximum, ajouter des contraintes lors de la cration dune table
(empcher un attribut dtre ngatif par exemple), faire des oprations mathmatiques, etc.

Vous pouvez galement consulter les fichiers Installation et commandes basiques pour
PostgreSQL et Quelques fonctionnalits PostgreSQL disponibles sur Moodle :
https://moodlesupd.script.univ-paris-diderot.fr/course/view.php?id=3673
Vous y trouverez notamment de laide sur la cration de requtes interactives (ce qui peut utile
pour la prsentation orale) et la manipulation des dates.

2 Peuplez vos tables


Maintenant que vos tables sont cres, vous pouvez les remplir avec les informations adaptes (vlos,
utilisateurs, stations...). Insrez au moins une centaine de tuples au total dans votre base de donnes.
Vous pouvez par exemple crire dans votre langage de programmation prfr (Java, Python, ...) une
boucle for qui affiche des tuples gnrs automatiquement (avec la syntaxe attendue par PostgreSQL),
et les recopier ensuite dans votre code PostgreSQL.
Vous pouvez aussi utiliser directement les structures de contrle intgres PostgreSQL :
https://docs.postgresql.fr/8.3/plpgsql-control-structures.html
Les plus courageux peuvent rcuprer les donnes relles du systme Vlib disponibles sur les sites
https://www.data.gouv.fr et https://developer.jcdecaux.com/#/home. Voici par exemples la liste
des stations Vlib :

https://www.data.gouv.fr/fr/datasets/velib-paris-et-communes-limitrophes/

3 Effectuez des requtes


Il est maintenant temps dutiliser votre base de donnes pour grer au quotidien la location des vlos.
Pour cela, commencez par implmenter obligatoirement les 12 requtes suivantes (vous pouvez utiliser
au besoin des oprateurs trouvs dans la documentation en ligne de PostgreSQL) :

Difficult F
1. les vlos disponibles dans une station donne
2. tous les vlos en cours de location
3. le nombre de vlos en rparation
4. tous les trajets effectus par un utilisateur donn
5. le nombre de places encore disponibles dans chaque centre de rparation
6. les vlos pour lesquels une panne contenant le mot frein a t signale par un utilisateur

Difficult FF
1. les utilisateurs nayant jamais emprunt de vlo lectrique
2. les stations compltement vides ou compltement pleines

3
3. le plus long trajet effectu ce mois-ci par un utilisateur donn
4. les vlos qui nont t emprunts par personne au cours de la dernire semaine
5. le vlo qui a t le plus emprunt depuis le dbut
6. les vlos lectriques nayant jamais t emprunts par quelquun qui a dj emprunt un vlo manuel

Implmentez ensuite au minimum 2 requtes au choix parmi les 6 suivantes :

Difficult FFF
1. la dure moyenne des trajets selon les tranches dge des utilisateurs
2. les vlos qui ont reu plus de trois signalements de pannes par des utilisateurs diffrents
3. le classement des utilisateurs selon le nombre de fois o ils ont t les derniers a utiliser un vlo
juste avant quune panne ne soit signale par lutilisateur suivant
4. les 100 vlos qui ne sont pas passs depuis le plus longtemps dans un atelier de rparation
5. les 10 stations o il y a eu le moins demprunts au cours du dernier mois
6. le rapport nombre de rparations / temps total dutilisation pour chaque vlo

Enfin, crez et implmentez 3 requtes supplmentaires de votre choix qui vous semblent pertinentes et
sont suffisamment complexes. Utilisez des jointures entre plusieurs tables, des requtes imbriques, des
conditions EXISTS ou IN, des oprateurs GROUP BY, HAVING, etc.
Expliquez dans le rapport (Rendu 2bis) quelles sont les difficults que vous avez pu rencontrer lors
de limplmentation de toutes vos requtes et comment vous les avez surmontes. Dtaillez galement les
3 requtes que vous avez choisies prcdemment. Enfin, trouvez une requte qui vous semble difficile (ou
impossible) effectuer dans votre modle, et suggrer une modification de votre modlisation initiale qui
faciliterait limplmentation de cette requte.

4 Un indice prdictif de remplissage


Si vous utilisez le systme Vlib, vous avez dj d rencontrer des stations qui nont plus de place
disponible pour dposer un vlo, ou qui sont linverse compltement vides. Pour palier ces problmes
dquilibrage, des agents de rgulation interviennent 2 jour et nuit pour dplacer par camion les vlos
entres les diffrentes stations de Paris. Ils sont assists dans leur travail par des algorithmes prdictifs qui
prennent en compte de nombreux paramtres (jour de la semaine, historique des remplissages, mto...)
pour anticiper sur quelles stations intervenir en priorit. Certaines entreprises se sont mme spcialises
dans ce domaine 3 et vous indiquent vos chances de trouver un vlo ou une place dans la station de votre
choix un moment donn de la journe.
Modifiez votre base de donnes pour proposer votre tour un indice prdictif de remplissage pour
chaque station. Vous calculerez cet indice selon la mthode et les critres de votre choix. Utilisez-le
ensuite pour concevoir des requtes qui aideront rguler la rpartition des vlos. Par exemple, proposez
une requte pour rcuprer les 10 stations avec lindice le plus petit (stations remplir en priorit) et
les 10 avec lindice le plus grand (stations vider en priorit). Expliquez dans le rapport (Rendu 2bis) le
fonctionnement de votre indice et les raisons qui vous ont guides dans votre choix. Dtaillez ses points
forts, ses limites et comment lamliorer.

2. http://blog.velib.paris.fr/blog/2008/04/09/entretien-avec-les-responsables-de-la-regulation-velib/
comment-page-1/
3. http://blog.velib.paris.fr/blog/2014/11/28/prevoir-a-12h-la-disponibilite-des-velos/

You might also like