Normalisation.txt 8.82 KB
Newer Older
Gaetan Carabetta's avatar
Gaetan Carabetta committed
1 2 3 4 5 6
# Dépendances fonctionnelles de la table Client
F1_Client = {
    idClient --> nomClient;
    idClient --> prenomClient;
    idClient --> ddnClient;
    idClient --> adresseClient;
7 8 9
    idClient --> numeroClient
}

Gaetan Carabetta's avatar
Gaetan Carabetta committed
10 11
F2_Client = {
    nomClient,prenomClient,ddnClient --> adresseClient;
12 13 14
    nomClient,prenomClient,ddnClient --> numeroClient
}

Gaetan Carabetta's avatar
Gaetan Carabetta committed
15 16 17
# DFE de la table Client
F1+_Client = F1_Client
F2+_Client = F2_Client
18

Gaetan Carabetta's avatar
Gaetan Carabetta committed
19 20 21
# À partir des DFE de la table Client, nous obtenons les couvertures minimales
CM1_Client = F1+_Client = F1_Client
CM2_Client = F2+_Client = F2_Client
Gaetan Carabetta's avatar
Gaetan Carabetta committed
22

Gaetan Carabetta's avatar
Gaetan Carabetta committed
23 24
# Analyse de la table Client
En considerant l'adresse comme un attribut atomique, nous avons tous les attributs atomiques et aussi des clés, alors la table est en 1NF.
Gaetan Carabetta's avatar
Gaetan Carabetta committed
25

Gaetan Carabetta's avatar
Gaetan Carabetta committed
26
Nous avons déjà la table en 1NF, de plus, tous les attributs de la table ne dépendent pas d'une partie des clés mais de toute la clé, alors nous sommes en 2NF.
27

Gaetan Carabetta's avatar
Gaetan Carabetta committed
28 29 30
Nous sommes déjà en 2NF, et les attributs non-clés de la table ne dépendent que des clés candidates. Alors nous respectons aussi la 3NF.

Pour des raisons de simplicité, au niveau des clés étrangères vers la table Client dans les autres relations, nous utilisons une clé artificielle comme clé primaire de cette table. Donc nous allons travailler avec la couverture minimale CM1_Client.
Gaetan Carabetta's avatar
Gaetan Carabetta committed
31 32 33



34

Gaetan Carabetta's avatar
Gaetan Carabetta committed
35 36 37 38 39 40 41 42
# Dépendances fonctionnelles de la table Assistant
F1_Assistant = {
idAssistant --> nomAssistant;
idAssistant --> prenomAssistant;
idAssistant --> ddnAssistant;
idAssistant --> adresseAssistant;
idAssistant --> numeroAssistant;
idAssistant --> specialite
43 44
}

Gaetan Carabetta's avatar
Gaetan Carabetta committed
45 46 47
F2_Assistant = {
    nomAssistant,prenomAssistant,ddnAssistant --> adresseAssistant;
    nomAssistant,prenomAssistant,ddnAssistant --> numeroAssistant;
48 49 50
    nomAssistant,prenomAssistant,ddnAssistant --> specialite
}

Gaetan Carabetta's avatar
Gaetan Carabetta committed
51 52 53
# DFE de la table Assistant 
F1+_Assistant = F1_Assistant
F2+_Assistant = F2_Assistant
54

Gaetan Carabetta's avatar
Gaetan Carabetta committed
55 56 57
# À partir des DFE de la table Assistant, nous obtenons les couvertures minimales
CM1_Assistant = F1+_Assistant = F1_Assistant
CM2_Assistant = F2+_Assistant = F2_Assistant
58

Gaetan Carabetta's avatar
Gaetan Carabetta committed
59 60
# Analyse de la table Assistant
En considerant l'adresse comme un attribut atomique, nous avons tous les attributs atomiques et aussi des clés, alors la table est en 1NF.
61

Gaetan Carabetta's avatar
Gaetan Carabetta committed
62
Nous avons déjà la table en 1NF, de plus, tous les attributs de la table ne dépendent pas d'une partie des clés mais de toute la clé, alors nous sommes en 2NF.
63

Gaetan Carabetta's avatar
Gaetan Carabetta committed
64
Nous sommes déjà en 2NF, et les attributs non-clés de la table ne dépendent que des clés candidates. Alors nous respectons aussi la 3NF.
Gaetan Carabetta's avatar
Gaetan Carabetta committed
65

Gaetan Carabetta's avatar
Gaetan Carabetta committed
66
Pour des raisons de simplicité, nous utilisons une clé artificielle comme clé primaire de la table Assistant. Donc nous travaillerons avec la couverture minimale CM1_Assistant.
Gaetan Carabetta's avatar
Gaetan Carabetta committed
67 68


69

Gaetan Carabetta's avatar
Gaetan Carabetta committed
70 71 72 73 74 75 76
# Dépendances fonctionnelles de la table Veterinaire
F1_Veterinaire = {
    idVeterinaire --> nomVeterinaire;
    idVeterinaire --> prenomVeterinaire;
    idVeterinaire --> ddnVeterinaire;
    idVeterinaire --> adresseVeterinaire;
    idVeterinaire --> numeroVeterinaire;
77 78 79
    idVeterinaire --> specialite
}

Gaetan Carabetta's avatar
Gaetan Carabetta committed
80 81 82
F2_Veterinaire = {
    nomVeterinaire,prenomVeterinaire,ddnVeterinaire --> adresseVeterinaire;
    nomVeterinaire,prenomVeterinaire,ddnVeterinaire --> numeroVeterinaire;
83 84 85
    nomVeterinaire,prenomVeterinaire,ddnVeterinaire --> specialite
}

Gaetan Carabetta's avatar
Gaetan Carabetta committed
86 87 88 89 90 91 92 93 94 95 96 97
# DFE de la table Veterinaire
F1+_Veterinaire = F1_Veterinaire
F2+_Veterinaire = F2_Veterinaire

# À partir des DFE de la table Veterinaire, nous obtenons les couvertures minimales
CM1_Veterinaire = F1+_Veterinaire = F1_Veterinaire
CM2_Veterinaire =  F2+_Veterinaire = F2_Veterinaire

# Analyse de la table Veterinaire
En considerant l'adresse comme un attribut atomique, nous avons tous les attributs atomiques et aussi des clés, alors la table est en 1NF.

Nous avons déjà la table en 1NF, de plus, tous les attributs de la table ne dépendent pas d'une partie des clés mais de toute la clé, alors nous sommes en 2NF.
98

Gaetan Carabetta's avatar
Gaetan Carabetta committed
99
Nous sommes déjà en 2NF, et les attributs non-clés de la table ne dépendent que des clés candidates. Alors nous respectons aussi la 3NF.
100

Gaetan Carabetta's avatar
Gaetan Carabetta committed
101
Pour des raisons de simplicité, au niveau des clés étrangères vers la table Veterinaire dans les autres relations, nous utilisons une clé artificielle comme clé primaire de cette table. Donc nous allons travailler avec la couverture minimale CM1_Veterinaire.
102 103 104



Gaetan Carabetta's avatar
Gaetan Carabetta committed
105 106 107 108 109 110 111
# Dépendances fonctionnelles de la table Espece
F_Espece = {
    nomEspece --> nomClasse
}

# DFE de la table Espece
F+_Espece = F_Espece
112

Gaetan Carabetta's avatar
Gaetan Carabetta committed
113 114
# À partir des DFE de la table Espece, nous obtenons la couverture minimale 
CM_Espece = F+_Espece = F_Espece
Gaetan Carabetta's avatar
Gaetan Carabetta committed
115

Gaetan Carabetta's avatar
Gaetan Carabetta committed
116 117
# Analyse de la table Espece
Nous avons tous les attributs atomiques et une clé, alors la table est en 1NF.
118

Gaetan Carabetta's avatar
Gaetan Carabetta committed
119
Nous avons déjà la table en 1NF, de plus, tous les attributs de la table ne dépendent pas d'une partie des clés mais de toute la clé, alors nous sommes en 2NF.
120

Gaetan Carabetta's avatar
Gaetan Carabetta committed
121
Nous sommes déjà en 2NF, et les attributs non-clés de la table ne dépendent que des clés candidates. Alors nous respectons aussi la 3NF.
122

Gaetan Carabetta's avatar
Gaetan Carabetta committed
123 124


Gaetan Carabetta's avatar
Gaetan Carabetta committed
125 126 127 128 129 130 131
# Dépendances fonctionnelles de la table Animal
F_Animal = {
    idAnimal --> nomAnimal;
    idAnimal --> poids;
    idAnimal --> taille;
    idAnimal --> naissance;
    idAnimal --> idClient;
132 133 134
    idAnimal --> especeNom
}

Gaetan Carabetta's avatar
Gaetan Carabetta committed
135 136
# DFE de la table Animal
F+_Animal = F_Animal
137

Gaetan Carabetta's avatar
Gaetan Carabetta committed
138 139
# À partir des DFE de la table Animal, nous obtenons la couverture minimale 
CM_Animal = F+_Animal = F_Animal
140

Gaetan Carabetta's avatar
Gaetan Carabetta committed
141 142
# Analyse de la table Animal
Nous avons tous les attributs atomiques et une clé, alors la table est en 1NF.
Gaetan Carabetta's avatar
Gaetan Carabetta committed
143

Gaetan Carabetta's avatar
Gaetan Carabetta committed
144
Nous avons déjà la table en 1NF, de plus, tous les attributs de la table ne dépendent pas d'une partie des clés mais de toute la clé, alors nous sommes en 2NF.
Gaetan Carabetta's avatar
Gaetan Carabetta committed
145

Gaetan Carabetta's avatar
Gaetan Carabetta committed
146 147 148 149 150 151 152 153
Nous sommes déjà en 2NF, et les attributs non-clés de la table ne dépendent que des clés candidates. Alors nous respectons aussi la 3NF.
Nous utilisons une clé artificielle comme clé primaire car nous n'avons pas de clés candidates pour la table Animal.



# Dépendances fonctionnelles de la table Traitement
F_Traitement = {
    idTraitement --> idAnimal;
154 155
    idTraitement --> idVeterinaire
}
Gaetan Carabetta's avatar
Gaetan Carabetta committed
156

Gaetan Carabetta's avatar
Gaetan Carabetta committed
157 158
# DFE de la table Traitement
F+_Traitement = F_Traitement
Gaetan Carabetta's avatar
Gaetan Carabetta committed
159

Gaetan Carabetta's avatar
Gaetan Carabetta committed
160 161
# À partir des DFE de la table Traitement, nous obtenons la couverture minimale 
CM_Traitement = F+_Traitement = F_Traitement
Gaetan Carabetta's avatar
Gaetan Carabetta committed
162

Gaetan Carabetta's avatar
Gaetan Carabetta committed
163 164
# Analyse de la table Traitement
Nous avons tous les attributs atomiques et une clé, alors la table est en 1NF.
165

Gaetan Carabetta's avatar
Gaetan Carabetta committed
166
Nous avons déjà la table en 1NF, de plus, tous les attributs de la table ne dépendent pas d'une partie des clés mais de toute la clé, alors nous sommes en 2NF.
Gaetan Carabetta's avatar
Gaetan Carabetta committed
167

Gaetan Carabetta's avatar
Gaetan Carabetta committed
168
Nous sommes déjà en 2NF, et les attributs non-clés de la table ne dépendent que des clés candidates. Alors nous respectons aussi la 3NF.
Gaetan Carabetta's avatar
Gaetan Carabetta committed
169 170


Gaetan Carabetta's avatar
Gaetan Carabetta committed
171 172 173 174
# Dépendances fonctionnelles de la table Medicament
F_Medicament = {
    nomMolec --> description
}
Gaetan Carabetta's avatar
Gaetan Carabetta committed
175

Gaetan Carabetta's avatar
Gaetan Carabetta committed
176 177
# DFE de la table Medicament
F+_Medicament = F_Medicament
Gaetan Carabetta's avatar
Gaetan Carabetta committed
178

Gaetan Carabetta's avatar
Gaetan Carabetta committed
179 180 181 182 183 184 185 186 187 188 189 190 191 192
# À partir des DFE de la table Medicament, nous obtenons la couverture minimale 
CM_Medicament = F+_Medicament = F_Medicament

# Analyse de la table Medicament
Nous avons tous les attributs atomiques et une clé, alors la table est en 1NF.

Nous avons déjà la table en 1NF, de plus, tous les attributs de la table ne dépendent pas d'une partie des clés mais de toute la clé, alors nous sommes en 2NF.

Nous sommes déjà en 2NF, et les attributs non-clés de la table ne dépendent que des clés candidates. Alors nous respectons aussi la 3NF.


#Dépendances fonctionnelles de la table Posologie
F_Posologie = {
    idAnimal,nomMolec,debut --> duree;
193 194
    idAnimal,nomMolec,debut --> nbJours
}
195

Gaetan Carabetta's avatar
Gaetan Carabetta committed
196 197 198 199 200 201 202 203 204 205
# DFE de la table Posologie
F+_Posologie = F_Posologie

Dans ce cas, on a la couverture minimale
CM_Posologie = F+_Posologie = F_Posologie

# Analyse de la table Posologie
Nous avons tous les attributs atomiques et une clé, alors la table est en 1NF.

Nous avons déjà la table en 1NF, de plus, tous les attributs de la table ne dépendent pas d'une partie des clés mais de toute la clé, alors nous sommes en 2NF.
206

Gaetan Carabetta's avatar
Gaetan Carabetta committed
207
Nous sommes déjà en 2NF, et les attributs non-clés de la table ne dépendent que des clés candidates. Alors nous respectons aussi la 3NF.
208 209


Gaetan Carabetta's avatar
Gaetan Carabetta committed
210
# Analyse de la base de données
Gaetan Carabetta's avatar
Gaetan Carabetta committed
211
En considerant l'adresse des tables Client, Assistant et Vétérinaire comme un attribut atomique,
212
nous avons tous les attributs atomiques et toutes les relations avec une clé, alors la BD est en 1NF.
Gaetan Carabetta's avatar
Gaetan Carabetta committed
213

214 215
Nous avons déjà la BD en 1NF, de plus, tous les attributs des relations de la BD ne dépendent pas
d'une partie des clés mais de toute la clé, alors nous sommes en 2NF.
Gaetan Carabetta's avatar
Gaetan Carabetta committed
216

217
Nous sommes déjà en 2NF, et les attributs non-clés des relations ne dépendent que des clés candidates. Alors nous respectons aussi la 3NF.
Gaetan Carabetta's avatar
Gaetan Carabetta committed
218

219 220 221 222
Nous sommes aussi en BCNF car nous sommes en 3NF, et il n'y a pas d'attributs non-clés qui déterminent un attribut clé.
Par exemple dans les tables Client, Assistant et Vétérinaire, il y a deux clés
candidates qui déterminent tous les attributs, dû à l'utilisation d'une clé artificielle.
Donc tous ces attributs sont clés et aucun des autres attributs non-clé ne détermine ces attributs clés.