aboutsummaryrefslogtreecommitdiff
path: root/semestre 4/db/1- Modèle Entité-Association.typ
blob: 2c3c6a13ba86c31ca9a79b696cd4af272b90388c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#import "@local/template:1.0.0": *
#import "@local/callout:1.0.0": *

#show: doc.with(
  authors: (
    (name: "William Hergès", affiliation: "Sorbonne Université", email: "william@herges.fr"),
  ),
  page_title: "Modèle Entité-Association",
)

= Introduction

Ici, on s'intéresse à une forme abstraite~: description de haut niveau.
Il s'agit d'une première description formelle des données dans une base de données.

On va prendre comme exemple la création d'un DB d'un Université.

Les besoins~:
- inscripitons des étudiants à un module
- affectation des tuteurs à des étudiants
- planning des salles

Les objets à modéliser~:
- les étudiants
- les modules
- les tuteurs
- les salles

Les liens entre les objets~:
- les étudiants s'inscrivent à un ou plusieurs modules pour une année universitaire
- le cours d'un module a lieu dans une salle donnée, il débute à une heure connue et se déroule pendant une durée connue


= Définitions élémentaires

Cherche à transcrire les besoins en terme de _classes_ d'_entités_ et de _classes_ d'_associations_.

#defn[
  Une _entité_ est un objet du monde réel identifiable et pertinent pour l'application.
]

Une salle 24-34-208 est une entité.
Le médecin John Doe est une entité.

#defn[
  Un _attribut_ est une propriété/une caractéristique à une entitée.
  Il possède un nom et un domaine de valeurs atomiques.
]

Un prénom est un attribut pour une personne.

#defn[
  Une _classe d'entités_ est un ensemble d'entités ayant les mêmes attributs.
]

Les médecins sont une classe d'entité.
Les salles le sont aussi.

#defn[
  Un _identifiant d'entité_ est un sous-ensemble d'attributs permettant de distinguer les entités de la même classe.
  Il doit être unique et toute classe d'entités doit en posséder une.
]

Un identifiant peut être naturel (construit à partir des propriétés des entités) ou artificiel (rajouté aux attributs de
la classe).

#defn[
  Une _association_ est une relation entre plusieurs entités.
]

«~L'enseignant John Doe gère le cours X~» est une association.

#defn[
  Une _classe d'associations_ est un ensemble nommé de relations «~du même type~» entre des entités.
]

Enseigner est une classe d'associations.

Une association peut avoir des attributs, tout comme il peut avoir un identifiant.

*Souvent, on oublie la distinction X et classe de X.*

== Cardinalité d'une classe d'association

#defn[
  La _cardinalité d'association_ pour une classe d'entité $E$ et une classe d'association $A$, le nombre minimum et le
  maximum d'associations de $A$ qui peuvent exister pour une instance de $E$.

  La cardinalité est notée $min : max$.
]

Valeurs communes~: $0$, $1$ et $N$ (n'importe quelle valeur).

La cardinalité $1:N$ indique qu'il faut au moins une entité et qu'il n'y a pas de limites.

== Type d'association

#defn[
  Une association est dite _réflexive_, si elle relie des entités de la même classe.

  Elle peut être _symétrique_ si les cardinalités sont identiques des deux côtés.
  Sinon, elle est _asymétrique_.
]

La distance d'une ville à une autre est relation réflexive et symétrique.
La relation de subordination est aussi réflexive, mais elle est asymétrique.

== Type d'entité

#defn[
  Une entité est dite _faible_ si son identifiant dépend d'autres entités (dites fortes).
  Elles possèdent un _identifiant partiel_ qui est unique dans le contexte de leur entité forte.
]

La salle 24-25-103 est faible car elle dépend du bâtiment 24-25 (qui est fort).

= Exemples de schéma

Code~:
- les entités sont des rectangles
- les attributs par des ronds
- les associations sont des losanges
- l'identifiant est souligné (s'il est faible, il est souligné avec des pointillés)

#figure(
  image("./1- entité et association.png"),
  caption: [Deux entités liées par deux associations.],
)

#figure(
  image("./1- cardinalité.png"),
  caption: [Représentation de la cardinalité d'une association.]
)

#figure(
  image("./1- généralisation.png"),
  caption: [Représentation de la généralisation d'attributs. Les commentaires sont en gris.]
)