Semaine 9 : BDD et modélisation - SimplonSt-Gaudens/programme-web-dev-promo-2 GitHub Wiki
Semaine 9
Objectifs
- Savoir modéliser une base de données de plusieurs façons
- Créer et modifier une base de données
- Récupérer des données
Lundi
Correction des exos
La veille de la semaine
- Lundi : SQL
- Mardi : IIFE
- Mercredi : ESS
- Jeudi : Les jointures en SQL
- Lundi : Procédures stockées avec MySQL
Modèle Entité/Association (=MCD)
- Propriété
- Entité
- Relation
Ressources
Exercice : cinéma (tchi tcha)
En vue de la mise en place d'un logiciel de réservation de places de cinéma, modélisez en trinômes la base de données attendue grâce au modèle entité-association.
Le client attend que vous leur présentiez ce que vous avez fait demain matin. Vous avez 5 min chrono pour y réfléchir puis 5 min chrono pour poser des questions.
Après, le client repart et vous vous débrouillez!
On commence quand vous voulez/pouvez.
Rendu papier.
BONUS
Le client s'interroge sur la possibilité de mettre en place un système de carte de fidélité.
MCD, MLD, WTF?
En très résumé :
- MCD (Modèle conceptuel de données) = diagramme Entité/Association
- MLD (Modèle logique de données) = Merise.
Pour passer de l'un à l'autre
Concrètement, c'est bien de connaître le MLD et de savoir l'obtenir à partir du MCD. Ca peut même être posé en question lors de la certif. Mais dans la pratique vous aurez surtout besoin du MCD et d'UML.
Mardi
Kata
Input : une année. Output : l'année est-elle bissextile?
La méthode Merise
Le but c'est d'apprendre le concept et non pas de faire une thèse.
Le système d'information :
Contient des données et les traitements nécessaires pour assimiler et stocker les informations entrantes et produire les informations sortantes. Dans les systèmes d'information nous retrouvons généralement les traitements suivants :
- Consultation des données
- Calculs des données
- Ajout de données
- suppression des données
- Modification des données
- Recherche des données
Exemple: Le propriétaire d'une vidéothèque reçoit une livraison de nouvelles cassettes vidéo. Pour chaque cassette vidéo, il lit le titre, le producteur et la durée et sauvegarde ces informations dans la base de données de la vidéothèque. Il a donc utilisé un traitement d'ajout de données afin de transformer les informations entrantes (titre, producteur, durée) en données.
La représentation informatique des données :
En bref pour reprendre ce que nous a présenté Geoffrey :
Les données d'un système d'information peuvent être stockées et manipulées à l'aide d'un outil informatique spécialisé dans ce domaine. Actuellement les Systèmes de Gestion de Bases de Données (SGBD, exemples : à vous de voir les existants encore aujourd'hui. Oracle et d'autres...) constituent le type de logiciel le mieux adapté pour informatiser la plupart des systèmes d'information. Sachant que les tables représentent la base de stockage d'une base de données, on peut représenter n'importe quel système d'information par un ensemble de tables dont chacune contient un certain nombre de champs de données. Un système de gestion de bases de données (SGBD) est un logiciel qui nous permet de créer, de modifier et d'exploiter des bases de données. Ce système constitue donc notre interface pour accéder aux données.
Utilisateur -----------> SGBD----------->Données (BD)
La méthode d'analyse MERISE
MERISE est une méthode d'analyse qui permet d'établir une représentation claire et précise du système d'information. Elle est définie en trois parties :
-
Le niveau conceptuel : Il décrit l'ensemble des données du système d'information, sans tenir compte de l'implémentation informatique de ces données. Il indique la signification des données, représenté par un formalisme qui s’appelle : Modèle conceptuel des données (MCD)
-
Le niveau logique : Il se base sur le modèle conceptuel des données, en prenant en compte l'implémentation du système d'information par un SGBD. Ce niveau introduit la notion de tables logiques, et établit la première étape vers la constitution des tables sur un SGBD. Il est représenté par un formalisme qui s’appelle : Modèle logique des données (MLD)
-
Le niveau physique : Il fait référence au modèle logique des données. C’est à partir de ce niveau que l’on pourra créer la base de données. Il est représenté par un formalisme qui s’appelle : Modèle physique des données (MPD)
Ces 3 étapes sont nécessaires pour traduire un système d'information en une base de données :
Analyse -----> MCD -----> MLD -----> MPD ------> BD
Modèle conceptuel de données :
Le modèle conceptuel de données (MCD) fait référence à tous les objets du système d'information et aux relations entre les objets. Le formalisme utilisé est connu sous le nom de "Schéma Entité-Relation". Il se base autour de 3 concepts principaux, les entités, les relations et les propriétés.
Entités
Une entité permet de modéliser un ensemble d'objets concrets ou abstraits de caractéristiques comparables. Une entité est caractérisée par son nom et ses propriétés. Nom de l'entité : CLIENT
Propriété
Une propriété est une donnée élémentaire d'une entité. Nom, Prénom, Adresse, Code postal, Ville. Pour faire référence à chaque occurrence d'une entité, l'entité doit être munie d'un identifiant. L'identifiant est composé d'une ou de plusieurs propriétés de l'entité. A chaque valeur de l'identifiant doit correspondre une et une seule occurrence de l'entité. Par exemple, il est nécessaire d'ajouter un code client dans l'entité CLIENT car les propriétés existantes ne sont pas nécessairement uniques (ex Nom du client). Le code client permet donc l'unicité du client. La ou les propriétés qui constituent l'identifiant sont soulignées.
Relation :
Une relation décrit un lien entre deux ou plusieurs entités. Chaque relation possède un nom qui est généralement constitué par un verbe à l'infinitif. Chaque relation a obligatoirement un identifiant, qui est composé par les identifiants des entités auxquelles elle est liée. L'occurence d'une relation est représentée par les occurrences des entités liées à la relation. (Occurrence : CLIENT 1, CLIENT 2... Chacun de ces clients représente une occurrence de l'entité CLIENT). Ce lien est relié par le biais de traits appelés : cardinalités.
Cardinalités
Une cardinalité est définie comme ceci : minimum, maximum. Les cardinalités les plus répandues sont les suivantes : 0,N ; 1,N ; 0,1 ; 1,1. On peut toutefois tomber sur des règles de gestion imposantes cardinalités avec des valeurs particulières, mais cela reste assez exceptionnel et la présence de ces cardinalités imposera l'implantation de traitements supplémentaires. La cardinalité minimale exprime le nombre de fois minimum où une occurrence d'une entité participe à une relation. Cette cardinalité est généralement 0 ou 1.
- Cardinalité minimale = 0 : Certaines occurrences de l'entité ne participent pas à la relation
- Cardinalité minimale = 1 : Chaque occurrence de l'entité participe au moins une fois à la relation La cardinalité maximale exprime le nombre de fois maximum où une occurrence d'une entité participe à une relation. Cette cardinalité vaut souvent 1 ou n, avec n indiquant une valeur >1 mais pas connue.
- Cardinalité maximale = 1 : Chaque occurrence de l'entité participe au plus une seule fois à la relation.
- Cardinalité maximale = n : Chaque occurrence de l'entité peut participer plusieurs fois à la relation.
Modèle logique de données (MLD)
Le modèle logique de données se base sur un modèle conceptuel des données. Il est composé de tables logique reliées entre elles par des flèches.
Passage du MCD au MLD
-
Entité : L'entité est transformée en table. Les propriétés de l'entités deviennent les attributs de la table. L'identifiant de l'entité devient la clé primaire de la table.
-
Clé primaire : attribut unique
-
Relation avec cardinalitées (x,n) et (x,1) ou x = 0 ou 1 On copie la clé primaire de la table dont la cardinalité est (x,n) dans la table dont la cardinalité est (x,1). L’attribut est appelé clé étrangère. Les deux tables sont liées par une flèche qui pointe de la table à clé étrangère vers la table qui contient la clé primaire correspondante.
-
Clé étrangère : La clé étrangère représente un champ (ou des champs) qui pointe vers la clé primaire d’une autre table. L’objectif de la clé étrangère est d’assurer l’intégrité référentielle des données. En d’autres mots, seules les valeurs devant apparaître dans la base de données sont permises.
-
Relation avec cardinalitées (x,n) et (x,n) ou x = 0 ou 1 Il y a création d’une table supplémentaire ayant comme clé primaire une clé composée des identifiants des 2 entités. Lorsque la relation contient des propriétés, celles-ci deviennent attributs de la table supplémentaire.
Modèle physique de données (MPD)
Le modèle physique de données se base sur un modèle logique de données. Il est composé de tables physiques. Chaque table logique du MLD correspondra à une table physique du MPD.
- Passage du MLD au MPD Les attributs de la table logique deviennent les champs de la table physique. Pour chaque champ on indiquera un nom, son type et sa longueur.
Quelques liens :
Exercice : cinéma (suite)
Avec les mêmes trinômes, reprenez l'exercice d'hier : modélisez l'application avec Merise. Présentation jeudi matin. Rendu papier.
Mercredi
UML
Christopher vous l'a déjà présenté alors c'est bon. Non? Tant pis, c'est reparti!
En bref
- Unified Modeling Language
- Langage de modélisation.
- Objectif : uniformiser les méthodes, être compréhensible par tous.
Les diagrammes
UML permet de réaliser plusieurs types de diagrammes. Concrètement, on en utilise surtout quatre :
- Diagramme de classes
- Diagramme de cas d'utilisation
- Diagramme de séquence
- Diagramme d'activité
Diagramme de classes
(très proche de la modélisation entité/association) -> modèle objet/BDD
Diagramme de cas d'utilisation
(qui peut faire quoi?) -> user stories
Diagramme de séquence
Interactions entre les différents systèmes
Diagramme d'activité
Enchaînement des écrans
Note : le diagramme d'activité peut se substituer au diagramme de séquence.
Ressources
- Tuto OC
- Diagrammes de classes
- Encore du diagramme de classes
- Cas d'utilisation et diagramme de classe (What else?)
- Cours en ligne
- Développez.com
- Cours en ligne qui pique les yeux
- Analyse et conception avec UML
Indispensable!
Exercice : cinéma (suite)
Avec les mêmes trinômes, reprenez l'exercice d'hier : modélisez l'application avec UML (diagramme de classes + cas d'utilisation et plus si affinités). Présentation jeudi matin. Rendu papier.
Révisions
Jeudi
Bases de données (SQL)
Jusque-là, pour stocker des données, vous utilisiez JSON, XML et localstorage. Voici enfin un outil vraiment fait pour ça : les bases de données!
En résumé, une base de données est généralement propre à une application. Dedans, vous trouverez des tables. Chaque table correspond grosso-modo à un type d'objet. Dans chaque table vous trouverez
- des colonnes qui correspondent chacune à une propriété de cet objet.
- des lignes qui correspondent chacune à un objet.
Pour que ce ne soit pas trop le bordel, chaque ligne a une clé qui permet de retrouver facilement un objet. Pour manipuler une base de données, on utilise un langage spécifique : SQL ou l'un de ses dérivés. Il en existe d'autres mais ce sont les plus utilisés.
Attention, impossible de revenir en arrière une fois la requête SQL lancée et vous risquez de souvent vous planter au début.
Ressources
- Prez SQL + JS
- Comprendre les bases de données
- Requêtes SQL en bref
- Intro aux BDD
- On reprend tout
- Développez.com
- OC
- Introduction aux bases de données
- Le même avec SQL
- En vidéo et en français (et en bien habillé)
- Langage SQL
- Tout MySQL
- Tuto MySQL
- Un autre tuto MySQL
- Construire une requête
Cheat sheet
Apprendre en jouant
Outils
Exercice : cinéma (suite et fin)
Avec les mêmes trinômes, reprenez l'exercice d'hier et d'avant-hier. Cette fois, vous avez jusqu'à dimanche minuit, le temps de bien tout digérer.
Grâce à vos nouveaux super-pouvoirs de SQL, créez la base de données pour le logiciel du cinéma.
On attend de vous les requêtes de création de la base de données.
Mais aussi les requêtes suivantes :
- Comment récupérer la liste des clients?
- Comment récupérer la liste des films?
- Comment récupérer la liste des clients qui ont vu un film donné?
- Comment récupérer la liste des clients qui ont vu un film cette semaine?
- Comment savoir si une salle est pleine?