name: inverse layout: true class: center, middle, inverse --- # Base de données ## Inès de Courchelle ## 2024-2025  --- layout: false # À propos de l'UE ## Objectifs - Présenter les concepts des bases de données relationnelles - Fournir des compétences en modélisation, conception et manipulation de données - Utiliser MySQL ## Thèmes détaillés - Présentation des bases de données et le modèle Entité-Association - Du modèle conceptuel de données (MCD) à une base de données relationnelle - Normalisation - Langage de définition de données (LDD) - Langage de manipulation de données (LMD) - Transactions --- ## Les séances 1. MCD 2. MLD + Dépendance Fonctionnelle 3. Normalisation + LDD 4. Langage de manipulation de données (LMD) 5. Les requêtes partie 1 6. Les requêtes partie 2

--- ## Positionnement des enseignements de BD dans le curcus - ING1 - Développement web - Java - ING2 - JEE - ING3 - MongoDB - IA .pull-left[
] .pull-right[
] --- name: inverse layout: true class: center, middle, inverse --- # Base de données - CM 1 ## Inès de Courchelle ## 2024-2025  --- layout: false # La BD dans les fichiers
- Comment définir l’organisation du fichier ? - Comment traiter la donnée récupérée ? - Comment explorer le fichier ? - Comment mettre à jour une donnée ? - ...
--- # Objectifs des BDs
- Acceder simultanément à la donnée par différents programmes et/ou utilisateurs - Organiser des données conforme à un système d’information - Diminuer la redondance - Assurer la pérénité des données --- # Les Modèles ## Les différents modèles de BDs - Le modèle hierarchique - Le modèle réseau - Le modèle objet - NoSql - Le modèle relationnel
--- # Les différents modèles de BDs ## Le modèle hierarchique - Enregistrements dans une structure arborescente - Chaque enregistrement n’a qu’un seul possesseur
--- # Les différents modèles de BDs ## Le modèle réseau - Extension du modèle hierarchique afin de permettre plusieurs liaisons - Schéma devient très vite complexe, à la fois pour l’utilisateur du modèle et pour le programme
--- # Les différents modèles de BDs ## Le modèle objet - descendre dans les structures plus précises - Schéma devient très vite complexe à modéliser
--- # Les différents modèles de BDs ## NoSql - Information est distribuée - Schéma non défini
--- # Les différents modèles de BDs ## Le modèle relationnel
--- # SGBD ## Définition - Système de Gestion de Bases de Données - Structure de la base (schema) - Données de la base (le contenu) - Mise à jour (ajout suppression modification Consultation) - Sécurité et confidentialité ## Niveaux abstractions ANSI/SPARC en 1975 .pull-left[ - **Niveau physique :** Définition de la méthode de stockage - **Niveau logique :** Description de l’information au sein de laBD (MCD et MLD) - **Niveau externe :** vision des utilisateurs ] .pull-right[
] --- # Historique - **Années 50-60** Architecture mono-machine - Les applications et les données sont stockées sur le même ordinateur - **Années 70-80** - Application client - SGBD sur une machine dédiées - **Années 90** Architecture 3-tier (voir n tier) - Un client demande des applications sur le réseau - Les applications font des requêtes http - Les SGBD et données externalisés sur des serveurs - **Cloud**
--- # Cycle de vie de logiciel ## Définition - Diviser pour mieux régner (modélisation des activités, activités successives) - Représenter l’analyse logiciel sous forme graphique et logique - Quel est le rapport avec la BD ? ## Démarche de réalisation 1. Étude préalable 2. Étude détaillée 3. Réalisation 4. Mise en oeuvre livraison --- # Démarche de réalisation ## 1. Étude préalable - Analyser le fonctionnement de l’organisation et diagnostic général de l’existant - Recenser les critiques et des besoins des utilisateurs (sans considération technique) point de vue métier - Dialoguer avec le client l’aider à formaliser le problème à résoudre - Étude de la faisabilité des automatisations - Écriture un cahier des charges
--- # Démarche de réalisation ## 2. Étude détaillée - Élaborer une solution conceptuelle, indépendante de tout moyen informatique - Écriture de documents précis spécifiants les fonctionnalités attendues
--- # Démarche de réalisation ## 3. **Réalisation** - Programmer le système informatique - Réaliser les Tests unitaires et intégrations
--- # Démarche de réalisation ## 4. Mise en oeuvre livraison - Démarrage du système (après validation des clients) - Formation des utilisateurs - Conduite au changement - Exploitation et maintenance du système
--- # Différents cycle de vie logicielle - Cascade - V - iteratif - ...

--- # Cycle de vie en cascade
## Analyse - Analyse de l’existant et définitions des besoins du système d’information et du logiciel - Élaboration d’un cahier des charges --- # Cycle de vie en cascade
## Conception - Modélisation du système d’information et du logiciel - Élaboration d’un cahier des charges --- # Cycle de vie en cascade
## Réalisation - Programmation - Mise en place des algorithmes --- # Cycle de vie en cascade
## Tests - Vérification et validation du logiciel - Vérification et validation du système d’information --- # Cycle de vie en cascade
## Exploitation et maintenance - Utilisation du logiciel une fois installé - Correction des erreurs - Amélioration des fonctionnalités existantes - Ajout de fonctionalités --- # Cycle de vie en cascade
## Utilisation de ce modèle - Projet de courte durée - Peu de participant - Phase de programmation courte --- # Cycle de vie en V
--- # Cycle de vie iteratif
--- # Ce que le client veut VS ce que le client a
--- # ?? ## Quel rapport avec la BDD ? - On va attendre un peu avant de coder - On va d’abord faire de la modélisation **Si vous passez du temps sur l’analyse et la modélisation la programmation n’est qu’une formalité !!**
--- # Le modèle entité-association ## MCD - **M**odèle **C**onceptuel des **D**onnées (MCD) - Représentation graphique et structurée des informations mémorisées par un SI ## Le vocabulaire - Entités - Attributs (ou propriétés) - Identifiants (ou clefs) - Associations - Cardinalités
--- # MCD ## Entités - Objet idendifiable et nommable du problème - un acteur : client, fournisseur, vendeur ... - un objet : produit, document, message, ... - un flux : livraison, commande, transport, ... ## Représentation officiel (c’est pas moi qui l’invente !) - Cadre avec une entête - Nom de l’entité commence toujours par une majuscule
--- # Attributs ## Objectifs - Associer à l’entité à laquelle il appartient - Qualifier l’entité à laquelle il appartient (notion de généricité) - Annoter avec une minuscule - Représentater l'attribut toujours dans l'entité à laquelle il appartient ## Illustration
--- # Clés ## Définition - Propriété dont la valeur est unique à tout le MCD - Propriété qui caractérise l'entité à laquelle il l'appartient ## Exemple - Entité Personne : le numéro de sécurité social - Entité Produit : code barre - ... ## Attention - Le client n'exprime pas forcement ce besoin - À vous de le questionner pour savoir qu'est ce qui rend unique une entité - À vous, parfois, d'extrapoler et de trouver s'est identifiant unique --- # Clés ## Dans notre cas
## Mais comment ? #### Comment différencier les deux personnes
--- # Clés ## Dans notre cas
## Mais comment ? #### Le numéro de téléphone ?
*Mauvaise idée s'ils changent ?* --- # Clés ## Dans notre cas
## Mais comment ? #### Ajouter une clé unique par entité
--- # Clés ## Représentation d'une Clé
.underR[Attention la clé est toujours soulignée] --- # Associations ## Lier les entités
--- # Associations ## Problème ! #### Je souhaite rajouter la date du match
--- # Associations ## Problème ! .underR[Mais comment faire ?]
--- # Associations ## Associations Porteuses #### FAUX .underR[La date dépend à la fois de l'équipe et du match]
--- # Associations ## Associations Porteuses #### Vrai
**Attention je n'invente rien c'est le formalise** --- # Validité du système ## MAIS ... - Un match est joué entre 2 équipes - Comment faire apparaître cette information ?
## 2 solutions - Double association - Association réflexive --- # Double association 1/4 Deux associations entre deux classes porteusent d'une information différente
--- # Double association 2/4 ## Où mettre la date ?
--- # Double association 4/4 ## Du coup ! *Mettre la date à un et unique endroit pour ne pas avoir à dupliquer l'information !*
- .underR[C'est toujours faux !] - .underR[On revient au point de départ !] --- # Association Reflexive ## Solution
--- # Reflexive VS Double ## Reflexive - Toutes les informations de l'entité << Match >> doivent être dans l'association porteuse - *Limites* à utiliser lorsque l'entité a très peu d'attributs
--- # Reflexive VS Double ## Reflexive - Toutes les informations de l'entité << Match >> doivent être dans l'association porteuse - *Limites* à utiliser lorsque l'entité a très peu d'attributs ## Double - Toutes les associations reliants les deux entités doivent être différentes - *Limites* à utiliser pour des MCD avec peu d'association (surcharge le schéma) --- # Cardinalités 1/2 - Combien de fois au minimum et maximum **l'entité A** peut être en relation avec **l'entité B** ? - Combien de fois au minimum et maximum **l'entité B** peut être en relation avec **l'entité A** ?
--- # Cardinalités 2/2
--- # Mini conclusion ## La démarche pour construire le MCD - Recherche de données dans des documents/interviews - Besoins exprimés par un client - Les données peuvent être éparpillées dans le discours/texte - Regroupement des données de types attributs - Identification des données de types entités - Si des données sont isolées il faut construire des entités suppl(mentaires --- # Dictionnaire des données ## Objectifs - Identifier les objets d'un besoin (entités) - Caractèriser ces objets (attributs) - Lier les objets entre eux (cardinalités) - Eviter la redondance d'information (associations) - Éliminer l'incohérence d'information (MCD) ## Exemple | Nom | Définition | Type | Exemple | | ------------ | ------------ | ------------ | ------------ | | id | Identifiant unique pour une personne | integer | 0707 | | nom | Nom d'une personne | varchar | Ronaldo | | prenom | prénom d'une personne | varchar | Cristiano | | ... | ... | ... | ... | --- # Attention ## Vous êtes libre - Mise en garde - Il n'y a pas de règles - C'est de l'organisation de la données - Un besoin a plusieurs solutions de modélisation
