Aller au contenu principal

Modélisation

Objectifs​

Comment structurer les données ?

Cours​

Modélisation

Base de données

Base de données

  • Base de données (BD) - Database (DB)

  • Donnée ?

    • Une information.

  • Base de données ?

    • Un ensemble organisé de données.

  • Exemples : Carnet d'adresses, annuaire téléphonique, catalogue de bibliothèque, …

Base de données

https://media.licdn.com/dms/image/v2/C5622AQHz-mwR6Oqh-w/feedshare-shrink_800/feedshare-shrink_800/0/1630247084357?e=2147483647&v=beta&t=hSSBf-HPJ-xQiht17nrqLNrKWWkVOoLO4oivLngYD_8

https://www.linkedin.com/feed/update/urn:li:activity:6837751869125873664/

Système de gestion de base de données

  • Système de gestion de base de données (SGBD) - Database Management System (DBMS)

  • Logiciel permettant de stocker, manipuler et interroger des données.

  • Exemples : MySQL, PostgreSQL, SQLite, MongoDB, …

Système de gestion de base de données

https://substack-post-media.s3.amazonaws.com/public/images/4d77ba70-b0ed-4f95-8192-d972b1186141_2871x1787.png

https://www.blog.datawithbaraa.com/p/what-is-sql

Types de SGBD

https://substack-post-media.s3.amazonaws.com/public/images/ecfa5155-b639-4ede-9ba7-c958ed2383ac_3094x1679.png

https://www.blog.datawithbaraa.com/p/what-is-sql

Base de données relationnelle

https://substack-post-media.s3.amazonaws.com/public/images/b79ae41d-0969-4dfe-ab65-cc974995ec79_3676x2034.png

https://www.blog.datawithbaraa.com/p/what-is-sql

Table relationnelle

https://upload.wikimedia.org/wikipedia/commons/f/fd/Table_relationnel.png

https://commons.wikimedia.org/wiki/File:Table_relationnel.png

Table relationnelle

https://info.blaisepascal.fr/wp-content/uploads/2020/10/Relation-Produits.png

https://info.blaisepascal.fr/cpge-bases-de-donnees-relationnelles/

Types

https://d8it4huxumps7.cloudfront.net/bites/wp-content/banners/2025/4/67f76ecde77b0_datatypes_in_sql.jpg

https://unstop.com/blog/sql-data-types

Types

https://testautomationu.applitools.com/course26/chapter8.1-img4.png

https://testautomationu.applitools.com/java-programming-course/chapter8a.html

Architecture Ansi/Sparc

https://upload.wikimedia.org/wikipedia/commons/5/5c/ANSI-SPARC_DB_model.jpg

https://commons.wikimedia.org/wiki/File:ANSI-SPARC_DB_model.jpg

Architecture Ansi/Sparc

Niveau

Utilisé par

Description

Analogie (restaurant)

Externe

Programmeur·euse de l'application

Vue partielle de la DB (selon les droits d'accès).

Client·e commande un plat selon la carte.

Conceptuel

DBA (Database administrator)

Vue complète de la DB.

Chef·fe de cuisine connaît tous les plats.

Interne

Programmeur·euse du DBMS

Stockage de l'information (fichiers).

Intendant·e gère les stocks de la cuisine.

  • Plusieurs applications peuvent avoir une vue différente d'une même base de données.

Modèle entité-association

  • Entity–relationship model (ER model)

  • Une représentation graphique d'une base de données relationnelle (modélisation conceptuelle).

Entité

Entité

id

nom

nom_de_scene

date_de_naissance

1

"Fanny Diercksen"

"Phanee de Pool"

1984-06-06

2

"Cécile Corbel"

 

1980-03-28

  • Entité : Artiste

    • Qui/Quoi ?

  • Clé primaire (Primary key, PK) : id

    • Comment l'identifier de manière unique ?

  • Attributs : nom, nom_de_scene, date_de_naissance

    • Quelles sont ses propriétés/caractéristiques ?

    • Obligatoire (nom, date_de_naissance) ou facultatif (nom_de_scene).

  • Limitations ?

    • Nom réel inconnu ? (ex. Daft Punk)

    • Date de naissance inconnue ?

Association

Association

https://d2slcw3kip6qmk.cloudfront.net/marketing/blog/2017Q3/er-diagram-symbols-and-notation/ERDCardinallity.png

https://www.lucidchart.com/blog/er-diagram-symbols-and-notation

One-to-One

  • Relation entre les entités Pays et Capitale

    • Chaque Pays a une seule Capitale.

    • Chaque Capitale est la capitale d'un seul Pays.

  • Peut être fusionné en une seule entité : Pays

    id

    nom

    capitale

    1

    "Suisse"

    "Berne"

    2

    "France"

    "Paris"

  • Clé étrangère unique dans une des deux entités : Capitale

    id

    nom

    pays_id

    42

    "Berne"

    1

    16

    "Paris"

    2

One-to-Many

id

titre

secondes

artiste_id

1

"Arrietty's Song"

206

2

2

"The Neglected Garden"

253

2

3

"Algorithme"

232

1

  • Exemple : Artiste joue Chanson.

  • Relation entre les entités Artiste et Chanson.

    • Chaque Artiste peut jouer plusieurs Chansons.

    • Chaque Chanson est jouée par un seul Artiste.

  • Clé étrangère (Foreign key, FK) : artiste_id dans Chanson.

    • Référence à la clé primaire de l'entité Artiste.

  • Zero-or-One-to-Many

    • Un·e artiste peut ne pas avoir de chanson.

One-to-Many

https://sqlmodel.tiangolo.com/img/databases/relationships.drawio.svg

https://sqlmodel.tiangolo.com/tutorial/many-to-many/

Many-to-Many

https://sqlmodel.tiangolo.com/img/tutorial/many-to-many/many-to-many.drawio.svg

https://sqlmodel.tiangolo.com/tutorial/many-to-many/

Many-to-Many

  • Si plusieurs artistes jouent la même chanson ?

  • Chaque Artiste peut jouer plusieurs Chansons.

  • Chaque Chanson peut être jouée par plusieurs Artistes.

  • Utilisation d'un table de liaison (ou table de jointure).

    • One-to-Many entre Artiste et la table de liaison Artiste_Chanson.

    • One-to-Many entre Chanson et la table de liaison Artiste_Chanson.

    • La table de liaison est composée de deux clés étrangères.

Exemples

  • Chaque classe peut être enseignée par un·e ou plusieurs enseignants.

  • Chaque enseignant·e peut avoir zéro, une ou plusieurs classes.

  • Chaque école a une ou plusieurs classes.

  • Chaque classe appartient à une école.

  • Chaque directeur·ice gère zéro ou une école.

  • Chaque école a un·e directeur·ice.

Récapitulatif

  • Entité

    • Objet du monde réel (table).

  • Association

    • Relation entre les entités (clé étrangère).

  • Attribut

    • Propriété d'une entité (colonne).

  • Clé primaire (PK)

    • Attribut unique identifiant un élément de l'entité.

  • Clé étrangère (FK)

    • Attribut faisant référence à une clé primaire d'une autre entité.

Notation

F pour passer en plein écran ou O pour afficher la vue d'ensemble.
Versions sans animation, plein écran, imprimable.

Exercices​

Banque​

Compléter le modèle entité-association suivant :

  • Chaque banque a un code SWIFT, un nom et une adresse.
  • Chaque client a un numéro de client, un nom, un prénom et optionnellement un numéro de téléphone.
  • Chaque compte a un numéro de compte, un solde et une date d'ouverture.
  • Chaque filiale a un numéro de filiale et une adresse.

Choisir et justifier les clés primaires ainsi que les cardinalités des relations.

plantuml

Solution

plantuml

  • Clés primaires :
    • Banque : code_swift
    • Client : numero_client
    • Compte : numero_compte
    • Filiale : numero_filiale
  • Cardinalités :
    • Chaque client peut avoir un ou plusieurs comptes (éventuellement aucun, mais difficile de nos jours).
    • Chaque compte appartient à un seul client (éventuellement plusieurs si compte joint).
    • Chaque banque peut avoir une ou plusieurs filiales (éventuellement aucune pour les néo-banques).
    • Chaque filiale appartient à une seule banque.
    • Chaque banque peut avoir zéro ou plusieurs comptes.
    • Chaque compte appartient à une seule banque.

Ajouter les clés étrangères (FK) dans le modèle précédent.

Solution

plantuml

Bibliothèque​

Dessiner le modèle entité-association suivant (ajouter des attributs pour les clés primaires si nécessaire) :

  • Modéliser la base de données d'une bibliothèque pour gérer les livres, les emprunts et les lecteurs :
    • Chaque livre a un titre, un auteur et un éditeur.
    • Chaque emprunt a une date de début, une date de fin et un statut (en cours, terminé, retardé).
    • Chaque lecteur a un nom, un prénom et une date de naissance (optionnel).
  • Ajouter les clés étrangères (FK) nécessaires.
Solution

plantuml

Quelle serait la relation entre les entités Livre et Lecteur si on n'avait pas besoin de garder l'historique des emprunts ?

Solution

plantuml

  • Chaque livre peut être emprunté par zéro ou plusieurs lecteurs.
  • Chaque lecteur peut emprunter zéro ou plusieurs livres.

Ajouter les clés étrangères (FK) nécessaires.

Solution

Pour une relation de type Many-to-Many (plusieurs à plusieurs), on doit ajouter une table intermédiaire (similaire à l'Emprunt) :

plantuml

Magasin​

Dessiner le modèle ER pour un magasin de produits divers :

  • Chaque produit a un nom, un prix et une quantité en stock.
  • Chaque commande a une date, des articles avec leur quantité et un client.
  • Chaque client a un nom, une adresse et un numéro de téléphone.

Justifier quels attributs sont obligatoires ou optionnels (la solution peut varier).

Solution

plantuml

Autres exercices​

Modélisation d'une base de données​

Individuellement ou par groupe de deux (indiquer avec qui), modéliser une base de données.

  • Choisir un domaine à modéliser, par exemple :
    • Application quiz (questions, réponses, scores, etc.)
    • Gestion des notes d'une école
    • Gestion des personnes (élèves, professeurs, personnel administratif) d'un établissement
    • Gestion d'une équipe de sport (joueurs, entraîneurs, matchs, etc.)
    • Application utilisée fréquemment (réseaux sociaux, e-commerce, streaming, etc.)
    • Jeu vidéo (personnages, objets, quêtes, etc.)
    • Autres idées
  • Décrire le domaine choisi en quelques phrases avec les fonctionnalités principales attendues.
  • Dessiner un modèle entité-association (ER) pour ce domaine.
    • Sur papier et le scanner.
    • Ou sur un outil de dessin (PlantUML, DrawDB, etc.).
  • Justifier les choix de modélisation (entités, attributs, relations, cardinalités, clés primaires, clés étrangères, etc.).

Références​

Autres cours​