Cours de Bases de Données Merise

COURS DE BASES DE DONNEES
© Luc Bouganim
Méthode MERISE : Niveau Logique
• Réponse à la question : QUI ? QUAND ? OU ?
– Description du système, – Description indépendante de la indépendamment du logiciel SGBD machine
– Passage ‘automatique’ au modèle – Structuration en procédure relationnel
Modèle Logique de Données Modèle Logique de Traitements
MLD MLT
Validation et Optimisation du MLD par rapport aux traitements
– Qu’est ce qu’on va gérer comme données, comment sont elles organisées | – Qu’est ce qu’on va réaliser comme traitement |
• Réponse à la question : QUOI ?
– La définition sémantique des données permet l’appréhension complète des informations | – La reconnaissance des traitements fondamentaux met en évidence les objectifs du système |
Méthode MERISE : Niveau Physique
• Réponse à la question : COMMENT ?, AVEC QUOI
– Description interne des données en – Description de l’architecture des fonction du logiciel SGBD traitements
Méthode MERISE : Niveau Conceptuel |
– Définition des contraintes, – Spécifications détaillées de la structures d’accés, etc.. programmation (Algorithmes)
Notre démarche
1/ Définir l’application (~MCT)
– Que veut-on faire exactement
– Définir les sorties
2/ Définir les données (~MCD) – quelles sont les données nécessaires ?
– Comment organiser les données ?
3/ Définir les requêtes nécessaires pour l’application (~MLT)
4/ Validation
– Est ce que la structure choisie permet de répondre aux requêtes ? retour en 1/ ou 2/
5/ Définir le MLD, vérifier 4/ puis définir le MPD
Définitions
• Entité : ‘Objet’ pourvue d’une existence propre
– Client, Fournisseur, Produit sont des entités.
• Association :Relation entre entités, dépourvue d’existence propre.
– ‘Enseigne’ est une association entre l’entité Prof et l’entité Cours
• Propriété : Plus petit élément d’information caractérisant partiellement une entité ou une association.
– Nom, Code, Quantité, etc... sont des propriétés
• Occurrence : Valeur d’une propriété, d’une entité ou d’une association
– ‘Toto’ est une occurrence de la propriété Nom
– ‘Dupont’ ‘louis’ ‘23 rue Mirbel’ est une occurrence de l’entité Prof
Exemple : Profs et cours... Exemple : Profs et cours... |
– ‘Dupont’ ‘2h’ ‘Math’ est une occurrence de l’association Enseigne
Cardinalités
• Nombre minimum et maximum d’occurrences d’une association pour une occurrence d’entité
• Elles sont indiqués sur chaque arc
Profs 0,1 Cours Profs Enseigne NomCoursCours
NomPrénom NbreHeuresEnseigne 0,1 NomCours NomPrénom 0,1 NbreHeures 1,3 Description
Description
Adresse Adresse
NomProfs 0,n Cours Profs Enseigne 1,1 NomCoursCours
Prénom NbreHeuresEnseigne 1,n NomCoursDescription NomPrénom 1,n NbreHeures Description
Adresse Adresse
Identifiant
• Pour une entité, c’est une (ou plusieurs) propriété(s) qui définissent chaque occurrence de l’entité
– Permet de s’assurer que c’est une entité (et non une association). • exemples : prof, enseigne, ...
– Plusieurs identifiants peuvent co-exister.
• exemples : nom du prof, n° de sécu, code...
• Pour une association, l’identifiant n’existe pas vraiment.
• On défini l’ ‘‘identifiant’’ d’une association, comme la concaténation des identifiants des entités associées.
• exemple : pour enseigne : nom du prof, nom du cours.
Notre problème : Gérer les notes des étudiants
• Détailler le problème : Que veut dire gérer les notes – Que veut on faire ?
• établir les bulletins semestriels ?
• établir des bulletins provisoires ?
• établir des moyennes ?
• Faire des statistiques sur plusieurs années ?
• Evaluer les notes en fonction des profs...
• Premier brouillon des données à gérer...
– Notes, étudiants, Cours...
Comment produire le MCD ?
• ‘‘Enoncer le réel’’ avec des phrases.
• Exemple pour la gestion de rendez vous (hôpital)
– Les patients ont des rendez vous avec des médecins
• Un patient peut avoir plusieurs RDV (voire aucun)
• Un médecin reçoit plusieurs patients (voire aucun)
Patient 0,n a un rdv 0,n Médecin
– Un médecin exerce dans une salle
• Un médecin n’exerce que dans une seule salle
• Une salle peut être partagée par plusieurs médecins
Médecin 1,1 Exerce 1,n Salle
Patient 0,n a un rdv 0,n Médecin 1,1 Exerce 1,n Salle
Pour connaître la salle, pour un rendez vous, on passe par le médecin....
Et si maintenant le médecin peut exercer dans plusieurs salles ?
Patient 0,n a un rdv 0,n Médecin 1,n Exerce 1,n Salle Comment connaître la salle d’un rendez vous ??
OU
Où s'arrêter ??
– Un étudiant obtient des notes à des cours
– Un étudiant habite dans une ville
– Un étudiant a eu un bac d’un certain type
– Les étudiants sont regroupés en sous groupes
– Les sous groupes sont regroupés en groupes
– Les groupes sont regroupés en promotions
• Ne faire des entités que si elles ont une utilité
– il y a plus d’une propriétés dans l’entité
– les entités sont liées à d’autres entités
• Dépend de l’objectif de la base de données et de l’application
Verification du modèle : (1) Identifiant
• Une occurrence d’entité peut être identifié (sans ambiguité) grâce à l’occurrence d’une propriété....c.a.d il existe un identifiant
• Il faut vérifier que cet identifiant a bien été choisi
– nom et prénom de l’étudiant peut être l’identifiant de l’étudiant, mais ça peut ne pas être suffisant....
Remarque importante
– il ne faut pas concevoir le MCD en observant les données telles qu’elles sont - par exemple l’IUT tel qu’il est.
– il faut concevoir le MCD pour le cas général (qui est le cas restreint de l’application qu’on se fixe) - l’IUT tel qu’il peut être.... et tel que l’on se prpose de le gérer....
(2) Propriété répétitive ou sans signification
• Pour une occurrence d’entité, il ne peut y avoir qu’une occurrence de chaque propriété de l’entité
– exemple: Cours ne peut être une propriété de Prof, puisqu’un prof enseigne plusieurs cours...
– Remarque : Si un prof ne peut enseigner qu’un seul cours, cours peut être une propriété de prof
• Une propriété ne peut être sans signification pour une partie des entités
– exemple : si un prof ne peut enseigner qu’un seul cours, mais qu’on a choisi de créer une entité ‘personnel’ et non ‘prof’, on ne stockera pas le cours dans l’entité ‘personnel’ car il serait sans signification pour une secrétaire...
– contre exemple : Téléphone et Fax pour un étudiant...
(3) Dépendance pleine des entités
• Les propiétés d’une association doivent dépendre de la totalité des entités associées. Si certaines propriétés ne dépendent que d’un sous ensemble des entités, on devra
– les rattacher à une des entités
– créer une nouvelle association associant ce sous ensemble
• Exemple:
1/ Un prof enseigne toujours dans la même salle
2/ La salle dépend du prof et du cours
(4) Respect des règles de gestion
• Il faut vérifier que le MCD correspond bien au ‘réel’, c’est à dire aux règles fixées (celles que l’application doit respecter)
• par exemple, à l’IUT:
– un prof enseigne plusieurs courss (Mme Maadani)
– une matière est enseignée par plusieurs profs (info/anglais)
– les notes peuvent être données par n’importe quel prof ou par plusieurs profs enseignant une matière... (info par exemple)
Les formes normales
• Les formes normales sont des règles que l’on doit suivre pour éviter d’avoir des redondances dans notre base de données.
– La redondance entraîne une perte de place
– des risques d’incohérences
– des difficultés de mise à jour
• Il existe 5 formes normales, de plus en plus complexes, de moins en moins utiles...
• Nous verrons les 3 premières (déjà bien compliquées)
– On peut redoubler une fois....
– etc...
Première forme normale
• Toute propriété doit être élémentaire.
– Sinon, on introduit une complexité de traitement
• Propriétés élémentaires : Age, Salaire, N° de rue
• Propriétés non-élémentaires : Adresse (complete), N°SS
• Attention, la notion d’élémentaire dépend de l’application.
– L’adresse peut devenir élémentaire si elle est toujours manipulé comme tel (on ne cherchera jamais a faire un tri par ville)
• «Il n’est pas génant d’éclater des propriétés qui devrait être groupés, mais on ne peut grouper des propriétés qui devrait être éclatées»
Deuxième forme normale
• Toute propriété doit dépendre pleinement de l’identifiant (et non d’une partie de celui-ci)
– sinon on introduit des redondances.
• Exemple: l’association ‘‘enseigne’’ possède comme identifiant nomprof, nomcours, nomgroupe
1/ la salle ne dépend que du prof donc d’une partie de l’identifiant 2/ la salle ne dépend que du prof et du cours....
• Cette règle rejoint la règle 2 de vérification...
Troisième forme normale
• Pas de dépendance transitive..
• Une propriété ne peut dépendre d’une autre propriété qui ne soit pas l’identifiant.
• Exemple :
– Etudiant(nom, adresse, ville, pays)
– Le pays dépend de la ville or l’identifiant d’étudiant est le nom.
|
| ||||||||||||||||||||||||||||||||||||
|
Passage au niveau logique
• Le modèle conceptuel est un compromis entre la flexibilité de la langue courante et la rigueur nécessaire d’un traitement informatisé.
• Le niveau logique est une étape de plus vers cette informatisation – Utilisation du formalisme du modèle relationnel :
• Tables (ou relations)
• attributs
• domaine
• clefs
• contrainte d’intégrité référentielles (relations entre tables)
– Simplification du schéma de la base
• Des règles trop strictes entraîne des schémas trop complexes• On ‘‘tolère’’ un peu de redondances ou quelques valeurs nulles....
– Rajout de méthodes d’accés (index)
• pour accélerer les traitements
Propriétés, Entités
• Régle 1 : Chaque propriété devient un attribut.
• Règle 2 : Chaque entité devient une table et son identifiant devient sa clef primaire
• Règle 3 : Une association liant plus de deux entités devient une table dont la clef primaire est l’ensemble des clefs des entités associées
• Règle 4 : Une association liant deux entités peut :
– être ‘‘absorbé ’’ par l’une ou l’autre des entité – devenir une table.
Cas 1
NomProfs 1,1 Cours • Un prof enseigne un et un seul cours
Adresse NbreHeuresEnseigne 1,1NomCoursDescription • Un cours est enseigné par un et un
Prénom seul prof
Nom | Prénom | Adresse | NomCours | Description | NbreHeures |
Bouganim | Luc | Paris | Info | Informatique | 44 |
Crenn | Isabelle | Paris | Math | Mathématiques | 78 |
Rousseau | Martine | Versailles | Droit | Droit | 26 |
Solution 1
Cas 2
NomProfs 1,1 Cours • Un prof enseigne un et un seul cours
Adresse NbreHeuresEnseigne 0,1NomCoursDescription • Un cours est enseigné par un prof
Prénom ou n’est pas enseigné
Nom | Prénom | Adresse | NomCours | Description | NbreHeures |
Bouganim | Luc | Paris | Info | Informatique | 44 |
Crenn | Isabelle | Paris | Math | Mathématiques | 78 |
Droit | Droit |
Solution 1
Cas 3
NomProfs 0,1 Cours • Un prof enseigne un cours ou aucun
Adresse NbreHeuresEnseigne 1,1NomCoursDescription • Un cours est enseigné par un et
Prénom un seul prof
Nom | Prénom | Adresse | NomCours | Description | NbreHeures |
Bouganim | Luc | Paris | Info | Informatique | 44 |
Crenn | Isabelle | Paris | Math | Mathématiques | 78 |
Rousseau | Martine | Versailles |
Solution 1
Solution 2
|
|
Solution 2
|
|
Cas 4
NomAdresseProfs 0,1 NbreHeuresEnseigne 0,1NomCoursDescriptionCours •• Un prof enseigne un cours ou Un cours est enseigné par un prof aucun
Prénom ou n’est pas enseigné
Nom | Prénom | Adresse | NomCours | Description | NbreHeures |
Bouganim | Luc | Paris | Info | Informatique | 44 |
Crenn | Isabelle | Paris | Droit | Droit |
Solution 1
|
Solution 2
Nom | Prénom | Adresse |
Bouganim | Luc | Paris |
Crenn | Isabelle | Paris |
NomCours Description
Info Informatique Droit Droit
Cas 5
NomProfs 1,1 Cours • Un prof enseigne un et un seul cours
Adresse NbreHeuresEnseigne 1,nNomCoursDescription • Un cours est enseigné par un ou Prénom plusieurs profs
Nom | Prénom | Adresse | NomCours | Description | NbreHeures |
Bouganim | Luc | Paris | Info | Informatique | 20 |
Crenn | Isabelle | Paris | Info | Informatique | 24 |
Rousseau | Martine | Versailles | Droit | Droit | 26 |
Solution 1
Solution 2
Cas 6
NomProfs 1,n Cours • Un prof enseigne un ou plusieurs cours
Adresse NbreHeuresEnseigne 1,1NomCoursDescription • Un cours est enseigné par un et un
Prénom seul prof
Nom | Prénom | Adresse | NomCours | Description | NbreHeures |
Bouganim | Luc | Paris | Info | Informatique | 20 |
Crenn | Isabelle | Paris | Math | Mathématique | 48 |
Crenn | Isabelle | Paris | Droit | Droit | 26 |
Solution 1
Cas 7 Cas 8
NomProfs 1,n Cours • Un prof enseigne un ou plusieurs cours Adresse NbreHeuresEnseigne 1,nNomCoursDescription • Un cours est enseigné par un ou Prénom plusieurs profs Solution 1 |
Solution 2
Passage au modèle relationnel - Conclusion
• Objectifs
– Ne pas créer de tables inutiles
– Ne pas dégrader le modèle conceptuel (pas de propriété répétitive ni sans signification)
• Méthode
– Si possible, passer les propriétés de l’association dans l’une ou l’autre des entités mais:
• Si la cardinalité minimum est 0, on ne peut le faire car, pour certaines entités, il y aurait des valeurs nulles (ex. un prof ne donnant pas de cours)
• Si la cardinalité maximum est n, on ne peut le faire car il y aurait des attributs répétitif (ex. un prof donnant plusieurs cours)
– Sinon, créer une table pour l’association contenant
• les clefs des entités associées
• les propriétés de l’association
Passage au niveau physique
• Instructions pour la création de la base de données dans le langage du système cible
– Pour ACCESS, cela est souvent fait via l’interface (cf TP) de création/modification de tables (voire avec les assistants)
– Il est cependant possible d’utiliser la partie «Langage de Description de Données» (LDD) de SQL
CREATE TABLE Client ( Prénom TEXT,
Nom TEXT,
NSS INTEGER CONSTRAINT Clef PRIMARY KEY)
• L’avantage du LDD est qu’il est standard
• Choix physiques d’organisation, d’optimisation....
Première modélisation ‘restreinte’
• Gérer les notes des étudiants veut dire:– Hypothèses :
• On a une base de données pour chaque promo et pour chaque semestre
– Données :
• Etudiants (nom, prénom, groupe)
• Matières (nom, pôle, coefficient)
• Notes (pour un étudiant et une matière : DS1, DS2, Participation, Examen)
– Traitements :
• Moyenne par matière pour chaque étudiant
• Moyenne par pôle pour chaque étudiant
• Moyenne générale pour chaque étudiant
• Jury de passage (ou de DUT)
• Moyenne par groupe, par matière.
Modèle entité-association
Etudiant a obtenu Cours N°0,n DS1 0,nNomCours
Nom DS2 Pôle
Prénom ParticipationExamen Coefficient Groupe
Critiques
• Le schéma est simple, il répond au problème
• On a un minimum de données
• On ne peut pas faire de suivi sur une promo
• On ne peut pas faire de suivi par prof
• Pas de statistiques sur plusieurs années
• Problème de gestion: on aura 4 fois les mêmes programmes
En relationnel Notes | Modélisation ‘complète’ • Gérer les notes des étudiants veut dire: – Hypothèses : |
N° | NomCours | DS1 | DS2 | Participation | Examen |
001 | Info | 13 | 12 | 14 | 9 |
001 | Math | 17 | 18 | 12 | |
001 | Anglais | 13 | 9 | 11 | 11 |
002 | Info | 8 | 11 | 13 | 13 |
002 | Math | 5 | 13 | 15 | 17 |
003 | Math | 18 | 12 | 9 | 12 |
004 | Info | 12 | 14 | 10 | 16 |
004 | Math | 13 | 8 | 13 | 8 |
004 | Anglais | 4 | 13 | 11 | 5 |
Etudiant | • Comment modéliser qu’un prof enseigne à un groupe de TP ? – Données : |
N° | Nom | Prénom | Groupe |
001 | Carey | Jim | 2.1.1 |
002 | Dalton | Joe | 2.1.1 |
003 | L’éventreur | Jack | 2.1.2 |
004 | Lewis | Jerry | 2.1.2 |
005 | Elton | John | 2.1.2 |
NomCours | Pôle | Coefficient |
Info | Gestion | 2 |
Math | Gestion | 2 |
Anglais | Langues | 4 |
• Une base de données pour l’IUT (pour plusieurs années)
• On veut gérer les profs pour faire des stats par profs, par promos, etc...
– Problèmes :
• Gestion des redoublement, de la situation (actuelle) d’un étudiant
• Cohabitation de notes sur plusieurs années, des profs, des étudiants ??
• Les matières sont enseignés par plusieurs profs, qui met les notes ??
Cours • Etudiants, Matières, Notes
Nom | Prénom | Adresse |
Bouganim | Luc | Paris |
Crenn | Isabelle | Paris |
Rousseau | Martine | Versailles |
1 | 1996 | 2 |
2 | 1997 | 1 |
3 | 1997 | 2 |
• TypeDeNotes, Periodes, Profs, Groupes, etc...
Modèle entité-association | En relationnel | |
Notes | Cours |
N_etu | NomCours | TypeNote | Période | Note |
001 | Info | DS1 | 2 | 13 |
001 | Info | DS2 | 2 | 12 |
001 | Info | Part | 2 | 14 |
001 | Info | Exam | 2 | 9 |
001 | Math | DS1 | 2 | 17 |
001 | Math | Part | 2 | 18 |
001 | Math | Exam | 2 | 12 |
002 | Info | DS1 | 2 | 13 |
002 | Info | DS2 | 2 | 11 |
Info | Gestion | 2 |
Math | Gestion | 2 |
Anglais | Langues | 4 |
N_etu | Nom | Prénom |
001 | Carey | Jim |
002 | Dalton | Joe |
003 | L’éventreur | Jack |
004 | Lewis | Jerry |
005 | Elton | John |
Bouganim | Info | 1.2.1 | 1 | 20 |
Crenn | Math | 2.1.1 | 3 | 17 |
Bouganim | Info | 2.1.1 | 3 | 20 |
Bouganim | Info | 2.1.2 | 3 | 20 |
Crenn | Math | 1.2.1 | 2 | 10 |
1 | 1 | 1.2.1 |
1 | 2 | 2.1.1 |
1 | 3 | 2.1.1 |
2 | 1 | 1.1.1 |
2 | 2 | 2.1.1 |
TypeNote | Coefficient |
DS1 | 1 |
DS2 | 1 |
Part | 1 |
Exam | 3 |
EtudiantNomCours Pôle