Normalisation.txt 5.41 KB
Newer Older
1

2 3
#Dépendances fonctionnelles de la table Client

Gaetan Carabetta's avatar
Gaetan Carabetta committed
4 5 6 7 8 9 10
idClient --> nomClient
idClient --> prenomClient
idClient --> ddnClient
idClient --> adresseClient
idClient --> numeroClient

nomClient,prenomClient,ddnClient --> adresseClient
11
nomClient,prenomClient,ddnClient --> numeroClient
Gaetan Carabetta's avatar
Gaetan Carabetta committed
12

13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
À partir des dépendances fonctionnelles de la table Client, on obtiend les couvertures minimales:

CM1_Client = F1+_Client = {
    idClient --> nomClient
    idClient --> prenomClient
    idClient --> ddnClient
    idClient --> adresseClient
    idClient --> numeroClient
}

CM2_Client = F2+_Client = {
    nomClient,prenomClient,ddnClient --> adresseClient
    nomClient,prenomClient,ddnClient --> numeroClient
}

Par des raisons de simplicité on va utiliser une clé artificielle comme clé primaire de la table Client, alors on va travailler avec la couverture minimale CM1_Client

Gaetan Carabetta's avatar
Gaetan Carabetta committed
30 31


32 33
#Dépendances fonctionnelles de la table Assistant

34 35 36 37 38 39
idAssistant --> nomAssistant
idAssistant --> prenomAssistant
idAssistant --> ddnAssistant
idAssistant --> adresseAssistant
idAssistant --> numeroAssistant
idAssistant --> specialite
Gaetan Carabetta's avatar
Gaetan Carabetta committed
40 41 42

nomAssistant,prenomAssistant,ddnAssistant --> adresseAssistant
nomAssistant,prenomAssistant,ddnAssistant --> numeroAssistant
43
nomAssistant,prenomAssistant,ddnAssistant --> specialite
Gaetan Carabetta's avatar
Gaetan Carabetta committed
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
À partir des dépendances fonctionnelles de la table Assistant, on obtiend les couvertures minimales:

CM1_Assistant = F1+_Assistant = {
    idAssistant --> nomAssistant
    idAssistant --> prenomAssistant
    idAssistant --> ddnAssistant
    idAssistant --> adresseAssistant
    idAssistant --> numeroAssistant
    idAssistant --> specialite
}

CM2_Assistant = F2+_Assistant = {
    nomAssistant,prenomAssistant,ddnAssistant --> adresseAssistant
    nomAssistant,prenomAssistant,ddnAssistant --> numeroAssistant
    nomAssistant,prenomAssistant,ddnAssistant --> specialite
}

Par des raisons de simplicité on va utiliser une clé artificielle comme clé primaire de la table Assistant, alors on va travailler avec la couverture minimale CM1_Assistant




#Dépendances fonctionnelles de la table Veterinaire

Gaetan Carabetta's avatar
Gaetan Carabetta committed
70 71 72 73 74
idVeterinaire --> nomVeterinaire
idVeterinaire --> prenomVeterinaire
idVeterinaire --> ddnVeterinaire
idVeterinaire --> adresseVeterinaire
idVeterinaire --> numeroVeterinaire
75
idVeterinaire --> specialite
Gaetan Carabetta's avatar
Gaetan Carabetta committed
76 77 78

nomVeterinaire,prenomVeterinaire,ddnVeterinaire --> adresseVeterinaire
nomVeterinaire,prenomVeterinaire,ddnVeterinaire --> numeroVeterinaire
79
nomVeterinaire,prenomVeterinaire,ddnVeterinaire --> specialite
Gaetan Carabetta's avatar
Gaetan Carabetta committed
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

À partir des dépendances fonctionnelles de la table Veterinaire, on obtiend les couvertures minimales:

CM1_Veterinaire = F1+_Veterinaire = {
    idVeterinaire --> nomVeterinaire
    idVeterinaire --> prenomVeterinaire
    idVeterinaire --> ddnVeterinaire
    idVeterinaire --> adresseVeterinaire
    idVeterinaire --> numeroVeterinaire
    idVeterinaire --> specialite
}

CM2_Veterinaire =  F2+_Veterinaire = {
    nomVeterinaire,prenomVeterinaire,ddnVeterinaire --> adresseVeterinaire
    nomVeterinaire,prenomVeterinaire,ddnVeterinaire --> numeroVeterinaire
    nomVeterinaire,prenomVeterinaire,ddnVeterinaire --> specialite
}

Par des raisons de simplicité on va utiliser une clé artificielle comme clé primaire de la table Veterinaire, alors on va travailler avec la couverture minimale CM1_Veterinaire





#Dépendances fonctionnelles de la table Espece

Gaetan Carabetta's avatar
Gaetan Carabetta committed
108 109
nomEspece --> nomClasse

110 111 112 113 114
Dans ce cas la couverture minimale CM_Espece = F+_Espece = {nomEspece --> nomClasse}



#Dépendances fonctionnelles de la table Animal
Gaetan Carabetta's avatar
Gaetan Carabetta committed
115 116 117 118 119 120 121 122

idAnimal --> nomAnimal
idAnimal --> poids
idAnimal --> taille
idAnimal --> naissance
idAnimal --> idClient
idAnimal --> especeNom

123 124 125 126 127 128 129 130 131 132 133 134 135
Dans ce cas , on a la couverture minimale
CM_Animal = F+_Animal ={
    idAnimal --> nomAnimal
    idAnimal --> poids
    idAnimal --> taille
    idAnimal --> naissance
    idAnimal --> idClient
    idAnimal --> especeNom
}



#Dépendances fonctionnelles de la table Traitement
Gaetan Carabetta's avatar
Gaetan Carabetta committed
136 137 138 139

idTraitement --> idAnimal
idTraitement --> idVeterinaire

140 141 142 143 144
Dans ce cas, on a la couverture minimale
CM_Traitement = F+_Traitement ={
    idTraitement --> idAnimal
    idTraitement --> idVeterinaire
}
Gaetan Carabetta's avatar
Gaetan Carabetta committed
145 146 147



148 149 150
#Dépendances fonctionnelles de la table Medicament

nomMolec --> description
Gaetan Carabetta's avatar
Gaetan Carabetta committed
151

152 153
Dans ce cas, on a la couverture minimale
CM_Medicament = F+_Medicament ={nomMolec --> description}
Gaetan Carabetta's avatar
Gaetan Carabetta committed
154 155


156
#Dépendances fonctionnelles de la table Posologie
Gaetan Carabetta's avatar
Gaetan Carabetta committed
157 158 159 160

idAnimal,nomMolec,debut --> duree
idAnimal,nomMolec,debut --> nbJours

161 162 163 164 165
Dans ce cas, on a la couverture minimale
CM_Posologie = F+_Posologie ={
    idAnimal,nomMolec,debut --> duree
    idAnimal,nomMolec,debut --> nbJours
}
166 167 168 169




Gaetan Carabetta's avatar
Gaetan Carabetta committed
170
En considerant l'adresse des tables Client, Assistant et Vétérinaire comme un attribut atomique,
171
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
172

173 174
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
175

176
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
177

178 179 180 181
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.