J’ai conçu un schéma de base de données adapté aux besoins du projet, écrit des requêtes SQL pour manipuler et interroger les données, et utilisé MySQL Workbench pour visualiser et administrer la base. Ce travail m’a permis d’appliquer concrètement les notions théoriques vues en cours.
Cette expérience m’a permis de maîtriser les fondamentaux de la gestion de bases de données relationnelles, l’écriture de requêtes complexes, et l’utilisation d’outils professionnels pour l’administration et le suivi des données. J’ai également découvert l’importance de la structuration et de la normalisation pour garantir la cohérence et la performance.
Ces compétences ont été essentielles pour le projet de gestion de la collection de jeux, où nous avons amélioré et optimisé la base de données initiale. J’ai participé à la refonte du schéma et à l’optimisation des requêtes, ce qui a permis d’améliorer la performance et la fiabilité de l’application.
La conception du schéma a parfois été complexe, notamment pour modéliser des relations multiples et assurer la normalisation. J’ai travaillé en collaboration avec l’équipe pour revoir plusieurs versions et tester les performances, ce qui a permis d’aboutir à une base robuste et efficace.
J’ai travaillé sur la structuration des données et leur préparation pour la recommandation. Nous avons
organisé les contenus (catégories, durée, nombre de personnes, difficulté, tags…) puis transformé ces
informations en représentations exploitables (notamment vecteurs) afin de comparer les contenus au
profil
utilisateur.
Le profil était construit à partir des interactions (likes / dislikes) et l’ensemble des données était
stocké
en local, via une base de type NoSQL manipulée et structurée avec Hive.
Ce projet m’a appris à concevoir des données réellement exploitables par un système de recommandation :
choisir les bons attributs, normaliser/encoder (ex. one-hot), et maintenir la cohérence pour éviter des
biais
ou des incohérences dans les résultats.
J’ai aussi compris l’importance de garder une structure commune quand on a plusieurs approches de
recommandation, afin que l’application reste cohérente de bout en bout.
La difficulté a été de garder des données cohérentes alors que nous avions 3 algorithmes de
recommandation
(et donc des besoins un peu différents) et que, côté équipe, nous n’avions pas tous les mêmes goûts. Sans
une
structure commune, les résultats pouvaient varier de façon “bizarre” d’un algo à l’autre.
Pour stabiliser tout ça, nous avons uniformisé les attributs/tags, défini des règles claires (valeurs
attendues,
encodage), et ajouté des vérifications pour éviter les données manquantes ou incohérentes avant de lancer
la
recommandation.
J’ai contribué au chargement des données : import du fichier de points, stockage des coordonnées et
préparation des données pour le calcul (transformation en “germes”).
Les données étaient stockées dans un fichier JSON afin de pouvoir modifier ou ajouter des points
facilement sans changer le code, tout en gardant un format stable pour le traitement et l’affichage.
J’ai appris l’importance d’un format clair et stable (structure JSON) : la qualité des entrées et la
validation (cas limites, cohérence) sont essentielles pour éviter des comportements inattendus.
Le projet a aussi été enrichi par la comparaison de nos solutions avec des approches proposées par des
IA, ce qui m’a aidée à mieux comprendre les choix techniques possibles.
Une difficulté a été d’anticiper les formats et les cas “imparfaits” (fichiers mal formés, coordonnées
hors
plage, peu de points). Sans validation, l’interface pouvait échouer ou afficher un résultat incohérent.
Pour y faire face, nous avons stabilisé le format JSON, ajouté des vérifications et testé régulièrement
avec
des jeux de points variés avant de lancer la génération.