Bonsoir,
![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
ctobini
il est plus que temps d'investir dans un ouvrage de qualité (vous en citez 2 que je vais me procurer).
Quels sont-ils, que je confirme ?
![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
ctobini
je tente d'appréhender la démarche complète de création des entités-types (dépendances fonctionnelles, élimination de la redondance...) ce qui n'est pas simple en raboutant les données de cours du net qui quelquefois se contredisent...
En gros, il y a deux approches : une approche descendante et une approche ascendante.
La première fait plutôt appel à la perception que l’on du cas à modéliser, et repose pas mal sur l’intuition, sans trop chercher à dépiauter finement l’information (on aboutit à un dossier de conception générale, avec un MCD lisible par tous, montrant les choses à haute altitude). Au fur et à mesure que l’on sent que l’on est sur la bonne voie, on approfondit, pour aboutir à une conception beaucoup plus détaillée.
La seconde approche consiste plutôt à mettre à plat l’information, en l’atomisant au maximum (attributs) au sein d’une immense relation dite universelle, abordée selon une approche anatomique, mécanique, qu’il faut normaliser (4e forme normale au minimum) à partir des contraintes traduites en dépendances fonctionnelles (traduction en fait des règles de gestion des données), pour produire les entités-types... Cette seconde approche requiert une excellente connaissance de la théorie relationnelle et des techniques associées (utilisation des axiomes d’Armstrong, détermination de la couverture minimale, des clés candidates, vérification de la 5e forme normale etc.), toutes choses nécessitant du temps, une rigueur extrême, une grande habitude et... beaucoup d’aspirine). Elle est beaucoup moins pratiquée, car difficile, longue et source de grosses migraines (voyez l’exercice amorcé avec le document PDF évoqué ci-dessous, et qui ne donne lieu au final qu’à un modèle plutôt riquiqui...)
Le mieux est de panacher : approche descendante, vérification de la normalisation (BCNF) pour éliminer les redondances, etc., révision avec les utilisateurs des modèles échafaudés pour s’assurer qu’on ne fait pas fausse route. La technique du yoyo en quelque sorte, mais mettant en jeu des ensembles de taille raisonnable. A noter que l’approche descendante, menée sérieusement, élimine pratiquement tous les cas de viols potentiels de 4e et 5e formes normales (aux innocents les mains pleines !)
L’exercice est difficile, et l’on ne peut être vraiment rassuré que lorsque le projet concerné est en production et fonctionne (ce qui au demeurant n’est pas si facile à prouver...)
![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
ctobini
augmentation : si X -> Y, alors XZ -> Y
Ceci n’est pas précisément l’axiome d’augmentation, lequel est le suivant :
Soient X, Y et Z des sous-ensembles dont les éléments sont des attributs d’une relation R. Si X-> Y alors XZ -> YZ
XZ représente ici l’union (au sens de la théorie des ensembles) de X et Z (X U Z). Même principe pour YZ.
Par exemple, si A, B, C, D, E, F, G, H, I, J sont des attributs de R, avec : X = {A, B, C}
Y = {D, E, F, G}
Z = {H, I, J}
On peut lire les choses ainsi : Si {A, B, C} -> {D, E, F, G}
Alors {A, B, C, H, I, J} -> {D, E, F, G, H, I, J}
Attention, Z n’est pas intégré à X, en fait on procède à l’union de X et Z. Même chose dans le cas de Y.
Le prétendu axiome d’augmentation : si X -> Y, alors XZ -> Y n’est qu’une règle inférée de cet axiome et de la règle de décomposition : Si X -> Y alors XZ -> YZ ____ (augmentation)
Si XZ -> YZ alors XZ -> Y ___ (décomposition)
![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
ctobini
pourriez vous svp me guider sur l'application des axiomes pour cet exemple ?
Cas de DF7 :
Je rappelle la règle d’Union, inférée des axiomes d’Armstrong, selon laquelle :
si X -> Y et X-> Z alors X -> YZ. (J’avais probablement oublié de mentionner cette règle).
On part de DF3 et DF4 DF3 : {Course, Cheval} -> {Jockey}
DF4 : {Course, Cheval} -> {Dossard}
(Les dépendants, c’est-à-dire les attributs situés à droite étant singletons, je ne les ai pas mis entre crochets, mais par précaution, je le fais ici.)
Par application de la règle d’Union : {Course, Cheval} -> {Jockey, Dossard}
Puis, par augmentation : {Course, Cheval, Jockey} -> {Jockey, Dossard}
Et par décomposition : {Course, Cheval, Jockey} -> {Dossard}
Concernant l’exemple du cours (fichier PDF) :
La couverture minimale (je préfère irréductible, qualificatif plus approprié) doit être débarrassée de la DF CE -> A
car on sait la produire à partir de C -> A (donné) à qui l'on fait subir une augmentation puis une décomposition : 1)____CE -> AE (augmentation)
2)____CE -> A (décomposition)
Pour montrer que CG -> B peut être inférée des autres DF, on peut utiliser une autre règle inférée des axiomes, celle de Composition, selon laquelle : Si X -> Y et Z -> T alors XZ -> YT.
Ainsi, par union de CG -> D et C -> A, on obtient : CG -> AD
puis par augmentation (par C) :CG -> ACD
et par transitivité (puisque ACD -> B est donnée) :CG -> B
Etc.
Partager