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

Class

Diagramme de cas d'utilisation

(qui peut faire quoi?) -> user stories

Pas class

Diagramme de séquence

Interactions entre les différents systèmes

Sequence

Diagramme d'activité

Enchaînement des écrans

Activite

Note : le diagramme d'activité peut se substituer au diagramme de séquence. Activite>Sequence

Ressources
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!

Magie magie

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.

oopsie

Ressources

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?

Randori

Raindrops

Vendredi