Aller au contenu
Apprendre.
  • M1 · toutes les matières15 matières : Préparation de données, API & sécurité, CI/CD, Docker, Merise, Dataviz, KNIME, ML appliqué : projet LoL, SQL & UML, SQL avancé, Machine Learning, Git, IA frugale & responsable, Qualité des données, MathématiquesAnnée
  • M2 · toutes les matières4 matières : Deep Learning, AI Act, Comex & Fundraising, Gouvernance & DataMeshAnnée
  • Deep LearningM2 · 4 modules · Réseaux de neurones, CNN, texte, modèles génératifs.Matière
  • Préparation de donnéesM1 · 3 modules · Nettoyer, transformer et fusionner des données avec Python.Matière
  • API & sécuritéM1 · 2 modules · Consommer, concevoir et sécuriser des API.Matière
  • CI/CDM1 · 1 module · Intégration et livraison continues.Matière
  • DockerM1 · 3 modules · Conteneurs, images, volumes, réseaux, Compose.Matière
  • MeriseM1 · 2 modules · Modéliser une base : MCD, MLD, MPD.Matière
  • DatavizM1 · 2 modules · Visualiser pour comprendre et décider.Matière
  • KNIMEM1 · 1 module · Explorer et nettoyer des données en workflow.Matière
  • ML appliqué : projet LoLM1 · 2 modules · Du besoin métier au POC de vision par ordinateur.Matière
  • SQL & UMLM1 · 3 modules · Modèles UML et requêtes SQL.Matière
  • SQL avancéM1 · 3 modules · Jointures, fenêtres, CTE, optimisation.Matière
  • Machine LearningM1 · 3 modules · Régression, classification, segmentation, projet.Matière

↑↓ naviguer↵ ouvre le résultat en surbrillanceesc fermer

Partie 1 · Modéliser

Construire un MCD pas à pas : le forum

Le cours déroule un exemple complet : un forum de discussion. La méthode se retient comme une recette en six étapes.

  1. Identifier les entités : Forum, Rubrique, Site, Message, Auteur, Profil. (Pourquoi Site ? À une rubrique correspond un ensemble de sites ; un attribut ne peut pas contenir une liste, donc cette entité doit exister.)
  2. Lister les propriétés de chaque entité (ex. Message : titre, contenu, date_publication, est_initiateur).
  3. Identifier chaque entité de manière unique : un numéro, la clé primaire.
  4. Chercher les associations dans le discours du commanditaire (« être composé de »…). Ici 6 : Composé_de (Forum–Rubrique), Poster (Message–Rubrique), Documenter (Rubrique–Site), Réponse (réflexive sur Message), Écrire (Auteur–Message), Concerner (Auteur–Profil).
  5. Fixer les cardinalités.
  6. Normaliser (entités, noms, identifiants, attributs, associations, cardinalités).
Forumnuméro Composé_de Rubriquenuméro Poster Messagenuméro Écrire Auteurnuméro 1..*1..10..*1..11..10..*

Extrait du MCD (schéma partiel dessiné pour ce site, cardinalités du cours).

Choisir la relation la plus directe

Un message est posté dans une rubrique et une rubrique fait partie d'un forum : on ne crée pas d'association Message–Forum, elle se déduit de Composé_de et Poster. De même, pas d'association Profil–Message : elle se déduit de Concerner et Écrire. Ce serait de la redondance.

AssociationCardinalités (cours)Famille
Composé_deun forum a plusieurs rubriques (au moins une) ; une rubrique n'est que dans un forumCIF
Posterune rubrique a 0 à plusieurs messages ; un message est dans une et une seule rubriqueCIF
Documenterun site documente plusieurs rubriques (au moins une) ; une rubrique est documentée par plusieurs sites (m,n)CIM
Réponse (réflexive)un message répond à au plus un autre ; il peut en avoir plusieurs en réponseCIF
Écrireun auteur écrit 0 à plusieurs messages ; un message n'a qu'un auteurCIF
Concernerun auteur a un seul profil ; un profil mène à plusieurs auteursCIF

Conséquence directe (exemple ajouté, déduit des règles CIF/CIM) : une seule association du forum devient une table, Documenter(#NumRubrique, #NumSite) ; les cinq autres deviennent des clés étrangères (par ex. Message(…, #NumRubrique, #NumAuteur, #NumMessageParent)).

Vérifie que tu as compris

Pourquoi Site est-il une entité et pas un attribut de Rubrique ?

Normalisation : l'exemple des attributs

  • est_initiateur (Message) ne sert à rien : on la supprime.
  • date_premier_message et date_dernier_message (Auteur) peuvent se retrouver via date_publication des messages, mais il faut évaluer le coût de calcul : la première n'est mise à jour qu'une fois (autant la stocker), la seconde change souvent (autant la recalculer au besoin, sauf si le besoin est très fréquent).
  • Le nom d'attribut adresse est ambigu entre Site et Forum : ne rien faire (pour jointure), renommer, ou créer une association Forum–Site.

Vérifie que tu as compris

Que fait-on de date_dernier_message (mise à jour très fréquente) ?