Bonsoir,
Citation:
Envoyé par
beckhton
Je pensais plutôt écrire la dépendance plutôt sous la forme {Modele} →→ {Taille} | {Magasin, Nbre} car dans une autre situation, nous avions une relation de la forme :
(*Date, *Plat, *Invite, *Preference)
En fait, cette nouvelle relation est une sorte de relation universelle pour laquelle il n’y a pas le fameux caillou dans la chaussure du genre de la DF {Modele,Magasin,Taille} → {NbrDisponible}, et où l’indépendance est omniprésente. Toutes les décompositions sont donc possibles.
Vous avez commencé par décomposer en deux parties le schéma de relation de la façon suivante :
MENU{date, plat} et INVITE{date, invite, preference}
Vous avez donc implicitement défini les dépendances multivaluées :
DMV1 {date →→ plat}, et sa contrepartie DMV2 {date →→ invite, preference}
Puis vous avez effectué les décompositions plaquées sur ces dépendances multivaluées :
MENU{date, plat}, INVITE{date, invite, preference}
Telles que {MENU ∩ INVITE} →→ {MENU — INVITE}
Selon le théorème(1) fourni page 419 dans l’ouvrage de J.D. Ullman, Principles of Database and Knowledge-Base Systems, Volume I (Computer Science Press. 1988)) ces décompositions sont sans perte car ici
{MENU ∩ INVITE} = {date}
Et
{MENU — INVITE} = {date, invite, preference}
C’est-à-dire qu’on retrouve DMV1.
Toujours en l’absence de caillou dans la chaussure, vous avez pu procéder à la décomposition du schéma de relation INVITE.
Je comprends parfaitement la remarque de bon sens de Paprick qui propose une approche beaucoup plus habituelle et orthodoxe dans nos forums, à savoir bâtir un MCD (modèle conceptuel des données) à partir des règles de gestion :
(rg01) A une date on peut proposer plusieurs plats ;
(rg02) Un plat peut être proposé à plusieurs dates ;
(rg03) Un invité peut avoir une préférence pour plusieurs plats ;
(rg05) Un plat peut être la préférence de plusieurs invités.
En effet, partir de la décomposition d’une relvar a priori non 4NF nécessite une connaissance pointue de la théorie de la normalisation des bases de données, bourrée d’axiomes, règles et théorèmes propres à donner la migraine (et tant qu’à faire, partir de la 5NF bien plus importante la 4NF qui n’en est qu’un particulier, qui peut le plus peut le moins) et propres à nous écoeurer à tout jamais de la modélisation si l’on n’est pas un tant soit peu mathématicien. Fagin, Beeri, Bernstein, Armstrong, Ullman, Zaniolo, Maier et Cie se régalent, mais nous, pauvres humains...
En tout cas le sujet devient infiniment plus abordable et sympathique dès que l’on part d’un MCD du genre
MCD dans lequel, pour des raisons sémantiques, les termes « préférence », « préférer » sont plus propres à être des noms d’associations (quitte à ajouter un attribut du genre notation (d’un plat par un invité)).
Il est donc d’usage de commencer par le commencement, à savoir consulter l’ouvrage de D. Nanci et B. Espinasse Ingénierie des systèmes d'information : Merise deuxième génération (4e édition, 2001), c’est l’ouvrage de référence. Le chapitre à étudier est fondamentalement le chapitre 7. Exercez-vous avec Looping, gracieusement proposé par le professeur Patrick Bergougnoux (merci Paprick !)
_________________________
(1) Théorème 7.11 :
Soit R un schéma de relation et
ρ = (R1,R2) une décomposition de R. Soit Δ un ensemble de dépendances fonctionnelles et multivaluées sur les attributs de R. Alors
ρ a une jointure sans perte pour Δ si et seulement si
(R1 ∩ R2) →→ (R1[ — R2)
[ou de façon équivalente, du fait de la règle de complémentation, (R1 ∩ R2) →→ (R2[ — R1)].