Bonsoir beckhton,
Envoyé par
beckhton
la dépendance mutltivaluée *Modele ->-> *Magasin peut se réécrire *Modele ->->*Taille, Nbredisponible
Admettons qu’il existe donc la dépendance multivaluée DMV1 {Modele} →→ {Magasin}.
En vertu de l’axiome d’Armstrong de complémentation, alors il existe la dépendance multivaluée DMV2 {Modele} →→ {Taille, Nbre}.
De la même façon, admettons qu’il existe la dépendance multivaluée DMV3 {Modele} →→ {Taille}.
En vertu du même axiome, alors il existe la dépendance multivaluée DMV4 {Modele} →→ {Magasin, Nbre}.
Ou encore de façon ramassée :
{Modele} →→ {Taille, Nbre} | {Magasin, Nbre}
Aidons-nous de ce brave SQL pour voir ce que donnent les décompositions. Je renomme Modele, Magasin, Taille, Nbre respectivement en D, G, T, N. Que N fasse ou non partie de la clé, SQL dira en réalité la même chose. Mais admettons que N en fasse partie :
CREATE TABLE R2
(
D CHAR(4) NOT NULL
, G CHAR(4) NOT NULL
, T CHAR(4) NOT NULL
, N INTEGER NOT NULL
CONSTRAINT R2PK PRIMARY KEY (D, G, T, N)
) ;
Créons 3 tuples :
INSERT INTO R2 (D, G, T, N)
VALUES
('d1', 'g1', 't1', 111)
, ('d1', 'g2', 't2', 122)
, ('d1', 'g1', 't2', 112)
;
Au résultat d’un SELECT SQL, la valeur de R2 est la suivante :
D G T N
d1 g1 t1 111
d1 g1 t2 112
d1 g2 t2 122
Soit les projections R21 = R2{D,G} et R22 = R2{D,T,N} et effectuons leur jointure :
WITH R21 AS (SELECT DISTINCT D, G FROM R2)
, R22 AS (SELECT DISTINCT D, T, N FROM R2)
SELECT DISTINCT '' AS 'R5', R21.D, R21.G
, R22.T, R22.N
FROM R21 JOIN R22 ON R21.D = R22.D
R5 D G T N
d1 g1 t1 111
d1 g1 t2 112
d1 g1 t2 122
d1 g2 t1 111
d1 g2 t2 112
d1 g2 t2 122
Ce résultat contient des tuples parasites car absents de R2. Ainsi, R2 n’est pas décomposable en {D,G} et {D,T,N}. Essayer d’autres décompositions ? Ça ne devrait pas donner mieux (que N fasse partie ou non de la clé) car si « un modèle peut être dans différents magasins et à différentes tailles et ceci de façon indépendante », le nombre disponible (N), lui, n’est pas indépendant et joue donc les trouble-fêtes...
J’espère ne pas avoir fait cette fois-ci des copier/coller malencontreux...
En passant, n’hésitez pas à « liker » (pouce vert...) les réponses qui ont pu vous aider.
A suivre...
Partager