{"id":25925204,"url":"https://github.com/studoo-app/sql-td8-sio2","last_synced_at":"2025-09-08T00:32:47.660Z","repository":{"id":279221989,"uuid":"937728533","full_name":"studoo-app/SQL-TD8-SIO2","owner":"studoo-app","description":"SQL - Audit et Evolutions de bases de données","archived":false,"fork":false,"pushed_at":"2025-02-25T10:34:57.000Z","size":14,"stargazers_count":0,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-09T03:52:39.502Z","etag":null,"topics":["2024-2025","sio2","sql"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/studoo-app.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-02-23T18:57:29.000Z","updated_at":"2025-02-24T11:40:21.000Z","dependencies_parsed_at":"2025-03-03T18:38:28.856Z","dependency_job_id":null,"html_url":"https://github.com/studoo-app/SQL-TD8-SIO2","commit_stats":null,"previous_names":["studoo-app/sql-td8-sio2"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/studoo-app/SQL-TD8-SIO2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/studoo-app%2FSQL-TD8-SIO2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/studoo-app%2FSQL-TD8-SIO2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/studoo-app%2FSQL-TD8-SIO2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/studoo-app%2FSQL-TD8-SIO2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/studoo-app","download_url":"https://codeload.github.com/studoo-app/SQL-TD8-SIO2/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/studoo-app%2FSQL-TD8-SIO2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274117160,"owners_count":25225100,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-07T02:00:09.463Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["2024-2025","sio2","sql"],"created_at":"2025-03-03T18:35:43.525Z","updated_at":"2025-09-08T00:32:47.601Z","avatar_url":"https://github.com/studoo-app.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"![separe](https://github.com/studoo-app/.github/blob/main/profile/studoo-banner-logo.png)\n# TD 8 SQL - Audit et evolution d'une base de données\n[![Version](https://img.shields.io/badge/Version-2025-blue)]()\n\n\n#### **Contexte et objectifs pédagogiques**\n\nVous êtes amené à créer et à maintenir la base de données d’une médiathèque. Au fil du temps, de nouvelles exigences apparaissent, nécessitant à la fois des optimisations de la structure initiale et la mise en place de nouvelles logiques métier.\n\nVotre travail s’articulera en deux grandes parties :\n\n1. **Correction / optimisation de la base** en proposant les améliorations structurelles adéquates.\n2. **Implémentation de nouvelles logiques** nécessitant une modification de la structure de la base.\n\nL’objectif est de comprendre et d’appliquer les principes de conception d’une base de données relationnelle, d’en améliorer la structure au besoin (normalisation, clés étrangères, index, etc.) et d’implémenter de nouvelles fonctionnalités métier.\n\n---\n\n### **Description de la base de données**\n\nLa base de données de la médiathèque est composée de trois tables principales :\n\n```mermaid\nerDiagram\n    LIVRE {\n        INT idLivre PK\n        VARCHAR(100) titre\n        VARCHAR(100) auteur\n        DATE datePublication\n        VARCHAR(50) genre\n        INT nombreExemplaires\n    }\n\n    ADHERENT {\n        INT idAdherent PK\n        VARCHAR(50) nom\n        VARCHAR(50) prenom\n        DATE dateInscription\n        VARCHAR(20) telephone\n    }\n\n    EMPRUNT {\n        INT idEmprunt PK\n        INT idLivre\n        INT idAdherent\n        DATE dateEmprunt\n        DATE dateRetour\n    }\n\n    LIVRE ||--|{ EMPRUNT : \"contient\"\n    ADHERENT ||--|{ EMPRUNT : \"effectue\"\n\n```\n---\n\n### **Partie 1 : Correction / Optimisation de la base**\n\nÀ ce stade, la base fonctionne mais **n’est pas optimisée**. On vous demande de :\n\n1. **Analyser la structure existante** et de lister **les points perfectibles** (ex. : redondances, absence de liens formels entre tables, etc.).\n2. **Appliquer ou proposer des optimisations** :\n    - Normalisation (par ex. mise en place d’une table `Auteur` si nécessaire, séparation d’entités, etc.).\n    - Mise en place de **clés étrangères** et des contraintes d’intégrité associées.\n    - Création d’**index** pour améliorer la performance des requêtes fréquentes.\n3. **Adapter la base** : modifiez, ajoutez ou supprimez les champs ou tables nécessaires à l’optimisation (par ex. transformer la colonne `auteur` en clé étrangère pointant vers une table `Auteur`).\n\nVous documenterez chaque changement en **expliquant** pourquoi il est utile.\n\n---\n\n### **Partie 2 : Implémentation de nouvelles logiques**\n\nSuite à des retours d’utilisateurs et à des évolutions de la politique de prêt, de **nouvelles règles** doivent être mises en place :\n\n1. **Gestion des quotas d’emprunt :**  \n   Un adhérent ne peut pas emprunter plus de 3 livres en même temps.\n\n2. **Gestion des retards :**  \n   À chaque fois qu’un adhérent dépasse les 15 jours d’emprunt, on souhaite enregistrer un « incident de retard » associé à l’adhérent et au livre concerné.\n\n\nPour prendre en compte ces règles, il est nécessaire de :\n\n1. **Ajouter / modifier des tables** afin de stocker les informations de quotas et d’incidents de retard (création éventuelle d’une table `Retard` ou `Incident`).\n2. **Mettre en place des contraintes et/ou des triggers** pour faire respecter automatiquement les règles de quota ou calculer la date limite d’emprunt.\n3. **Écrire les scripts SQL** permettant d’implémenter ces nouvelles logiques (ajout de champs, de tables, de triggers, etc.).\n\nEnfin, réalisez les **tests** nécessaires pour vérifier que :\n\n- Un adhérent ne peut pas avoir plus de 3 emprunts actifs (l’insertion d’un 4ème emprunt doit échouer ou être empêchée).\n- Un incident de retard est bien créé en cas de dépassement des 15 jours d’emprunt.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstudoo-app%2Fsql-td8-sio2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstudoo-app%2Fsql-td8-sio2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstudoo-app%2Fsql-td8-sio2/lists"}