Un modèle conceptuel des données consiste à représenter une "partie" du monde, afin de pouvoir informatiser cette "partie" du monde sous forme de données.
A ce stade, on modélise les catégories d'éléments indépendants les uns des autres (il s'agit des types entités). Par exemple, nous aurons de type entités Personnes, des types entités Rôles, des types entités Matchs etc.
Ces types entités auront des caractéristiques (appelées attributs ou encore propriétés). Par exemple, un élément de Personnes aura un nom et une date de naissance comme attribut, un élément de Matchs aura une date et un lieu.
Très important: dans cette modélisation, AUCUN élément d'un type entité ne doit apparaitre dans un autre type entité. Par exemple, il n'y aura pas dans Matchs une référence à un joueur qui est un élément de Personnes. Nous lierons une personne à un match par la suite, grâce à ce que l'on appelle un type association.
Ces attributs ont un type (texte, nombre, date, etc.)
Les types entités et leurs attributs sont représentés par un rectangle, dont l'entête est le nom du type entité, en dessous duquel on liste les attributs.
Source: https://laurent-audibert.developpez.com/Cours-BD/images/fig3_3.png
Il y a 5 types entités:
Patients, Mutuelle, Médecin, Affectation et Date-Entrée
Pour chaque type entités, voici les attributs:
Patient: Num-Patient, Nom-Patient, Prénom-Patient
Mutuelle: Num-Mutuelle, Nom-Mutuelle
Medecin: Num-Médecin, Nom-Médecin, Prenom-Médecin
Date-Entrée: Date-Entrée
Affectation: Num-Affectation, Nom-Affectation
Parmi les attributs des types entités, un ou plusieurs attributs permettront d'identifier une instance du type entité de manière unique. Par exemple, pour Personnes, on pourra dire que l'on identifie de manière unique par son attribut nom. On pourra identifié un match de manière unique par l'ensemble date et lieu, car un seul match peut avoir lieu à un même lieu à une même date.
Nous appelons ces attributs ou ces groupes d'attibuts pour identifier de manière unique une instance d'un type entité une clef.
On souligne l'attribut ou les attributs qui sont une clef
Source: https://laurent-audibert.developpez.com/Cours-BD/images/fig3_3.png
On remarque que chaque type entité a un numéro. Il s'agit d'une technique classique en base de données qui consite à rajouter comme attribut un numéro qui sert d'identifiant unique.
Pour chaque type entités, voici les clefs:
Patient: Num-Patient
Mutuelle: Num-Mutuelle
Medecin: Num-Médecin
Date-Entrée: Date-Entrée
Affectation: Num-Affectation
Enfin, nous pouvons associer les types entités entre elles, avec des types associations. Les types associations ont un nom et sont associés à des types entités. Elles peuvent avoir des attributs propres, qui ne sont pas indépendantes de l'un ou de l'autre des types entités impliquées dans le type association. Par exemple, nous pouvons avoir un type association Joueur qui lie des Personnes à des Matches. En attribut de Joueur, il peut y avoir l'attribut provenance pour indiquer Local ou Visiteur. Dans un autre exemple, une personne peut avoir un rôle. Il y aura donc le type association Endosse qui lie le types entités Personnes et Rôles.
La cardinalité d'un type association indique combien d'instances (au minimum et au maximum) un type entité peut être impliqué dans une association.
On représente les types associations dans un oval, avec le nom en entête et les listés en dessous s'ils existent. Cet oval est lié aux type entités par des lignes et de chaque côté des lignes on trouve la cardinalité
Source: https://www.cours-gratuit.com/images/images/1797/id-1797-1.PNG
Les types associations sont:
donner (pas d'attribut)
prendre (pas d'attribut)
prescrire (attribut posologie)
Pour le type association donner, les type entités sont:
Medecin, avec la cardinalité 0,n
Consultation, avec la cardinalité 1, 1
Pour le type association prendre, les type entités sont:
Patient, avec la cardinalité 1,n
Consultation, avec la cardinalité 1, 1
Pour le type association prescrire, les type entités sont:
Médicament, avec la cardinalité 0,n
Consultation, avec la cardinalité 0, n
Un Medecin, donne entre 0 et plusieurs consultations sans limite ("n"). Une Consultation est donnée par 1 et un seul médecin.
Un Patient prend au moins une consutation et potiellement plusieurs sans limite ("n"). Une Consultation est prise par 1 et un seul patient.
Durant une Consulation, on prescrit avec une posologie entre 0 et plusieurs médicaments sans limite ("n"). Un Médicament est préscrit avec une posologie dans aucune ou dans plusieurs consultations sans limite ("n").
Source: https://www.editions-eni.fr/Open/download/19593b83-67a1-44a1-abf6-75acf32a10ff/images/16RI01N.png
Source: https://www.cours-gratuit.com/images/images/1797/id-1797-1.PNG
Si cela correspond à des données différentes : différentier les noms
Sinon il s’agit sans doute de types entités à fusionner dans un seule et type entité (au lieu de deux type entités séparés), quite à rajouter un type association pour les "sous-cas"
Exemples:
Les types entités Parent et Enfant ont tous un nom, un prénom, une date de naissance, et une adresse qui correspondent aux mêmes données dans les deux types. Nous sommes dans le deuxième cas. Il est possible de faire seul un type-entité Personnes avec une association Est Parent ou Est Enfant
Le principe est le même si on a des types entités Adresse principale et Adresse secondaire. On peut les fusionner en Adresse et ajouter le type-association Est principale et Est secondaire entre l'adresse et les Personnes qui y sont liées
En revanche, si un Candidat a un nom et une référence dans son dossier lorsqu'il postule, et qu'un Objet en rayon a un nom et une référence, les deux noms et références ne correspondant pas à la même chose: l'un sera son identité et un contact pour attester de ses experiences, l'autre sera une appellation et un code pour référencer un produit. Il ne faut donc pas fusionner les deux types-entités, mais changer les noms (cas 1): Nom_Candidat et Reference_Candidat, et Denomination_Produit et Reference_Produit
Si cela correspond à des données différentes à différentier les noms
Ne garder que chez un type entité ou le mettre en attribut de type association
Exemple:
Si des types-entités Employé, Client, Livraison et Entreprise ont tous les attributs adresses (cas 2), il est intéressant de faire un type-entité Adresse et de lier Employé, Client, Livraison et Entreprise à celui-ci avec un type-association Habite, Est_domicilé, A_pour_adresse_de_facturation et A_pour_adresse_de_livraison.
Si tous les types-entités du modèle ont un Identifiant (de personne, de produit, de facture, etc.), ces identifiants sont des données différentes (cas 1). Il faut alors seulement changer les noms des attributs (Identifiant_personne, Identifiant_ produit, Identifiant_factur)
Ajouter un type entité qui correspond à la variation, et ajouter une association
Exemple:
Si on a des types entités Personne avec les attributs Adresse_1 et Adresse_2. On peut les modéliser dans un type-entité Adresse (séparé du type entité Personne) et ajouter le type-association Est_Adresse_principale et Est_Adresse_secondaire entre l'adresse et les Personnes qui y sont liées
Les enlever
Exemple:
Les atttibuts Age et Date_de_Naissance sont redondants. On peut donc en enlever 1. On gardera Date_de_Naissance (qui ne change jamais), et on enlevera Age
On peut retrouver un Département à partir d'un code postale
On peut connaitre le nombre d'employés à un moment donné si les Contrats ont une date de fin et de début. On comptera le nombre de contrat dont la date de début est inférieure et la date de fin supérieur à ce fameux "un moment donné".
Faire un type entité associée et un type association
Exemple:
Un étudiant ne peut être inscrit qu'à un nombre limité de filière, on ne modélisera PAS dans le type-entité Etudiant un attribut Filière_Inscription, mais on aura un type-entité Filières avec un type association Est_inscrit_Dans entre Etudiant et FIlière
Faire un seul type entité peut-être une solution
Exemple:
Si un Resultat (type-entité) est associé (type-association) à une et une seule Session d'examen (type-entité) et qu'une Session d'examen est associé à un et un seul résultat, il est pertinant de faire un seul type entité avec les attributs de Session d'examen et de Resultat