Normalisation.txt 8.82 KB
Newer Older
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
}

10 11
F2_Client = {
    nomClient,prenomClient,ddnClient --> adresseClient;
12 13 14
    nomClient,prenomClient,ddnClient --> numeroClient
}

15 16 17
# DFE de la table Client
F1+_Client = F1_Client
F2+_Client = F2_Client
18

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

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

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

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

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
}

45 46 47
F2_Assistant = {
    nomAssistant,prenomAssistant,ddnAssistant --> adresseAssistant;
    nomAssistant,prenomAssistant,ddnAssistant --> numeroAssistant;
48 49 50
    nomAssistant,prenomAssistant,ddnAssistant --> specialite
}

51 52 53
# DFE de la table Assistant 
F1+_Assistant = F1_Assistant
F2+_Assistant = F2_Assistant
54

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

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

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

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

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

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
}

80 81 82
F2_Veterinaire = {
    nomVeterinaire,prenomVeterinaire,ddnVeterinaire --> adresseVeterinaire;
    nomVeterinaire,prenomVeterinaire,ddnVeterinaire --> numeroVeterinaire;
83 84 85
    nomVeterinaire,prenomVeterinaire,ddnVeterinaire --> specialite
}

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

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

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



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

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

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

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

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


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
}

135 136
# DFE de la table Animal
F+_Animal = F_Animal
137

138 139
# À partir des DFE de la table Animal, nous obtenons la couverture minimale 
CM_Animal = F+_Animal = F_Animal
140

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

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

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

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

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

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

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

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


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

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

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

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

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


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.