1
Correction exercice Client/Commande
(voir cours modèle Entité/Association)
Etape 1 :
Client (Numc, NomC, Adresse) Commande (NumC, DateC) Detail-Cde (NumLigne)
Fournisseur (NumF, NomF, Status) Produit (NumP, NomP, Poids)
Etape 2 :
Fait (NumC-Commande, NumC-Client) Fait [NumC-Client] ⊆ Client [NumC]
Fait [NumC-Commande] ⊆ Commande [NumC]
On a dû renommer l’attribut NumC de même nom dans les deux TEs Client et Commande
Contient (NumLigne, NumC)
Contient [NumC] ⊆ Commande [NumC]
Contient [NumLigne] ⊆ Detail-Cde [NumLigne]
Concerne (NumLigne, NumP, Qté)
Concerne [NumLigne,] ⊆ Detail-Cde [NumLigne]
Concerne [Nump] ⊆ Produit [Nump]
Fournit (NumF, NumP, Qté)
Fournit [NumF] ⊆ Fournisseur [NumF]
Fournit [NumP] ⊆ Produit [NumP]
Etape 3 : On réduit les clés des relations correspondant au TAs ayant une cardinalité max=1
Fait (NumC-Commande, Num-Client) Contient (NumLigne, NumC)
Concerne (NumLigne, NumP, Qté)
2
Etape 4 : On fusionne Commande et Fait ayant même clé, pour ne garder que Commande
Commande (NumC-commande, DateC, NumC-Client) Commande [NumC-Client] ⊆ Client [NumC]
//était Commande [NumC] ⊆ Commande [NumC-comande]
On fusionne aussi Detail-Cde avec Contient et Concerne, pour garder Detail-Cde
Detail-Cde (NumLigne, NumC, NumP, Qté) et on adapte les inclusions Detail-Cde [NumC] ⊆ Commande [NumC]
Detail-Cde [Nump] ⊆ Produit [Nump]
Résultat final :
Client (Numc, NomC, Adresse)
Commande (NumC, DateC, NumC-Client)
Commande [NumC-Client] ⊆ Client [NumC]
Detail-Cde (NumLigne, NumC, NumP, Qté) Detail-Cde [NumC] ⊆ Commande [NumC]
Detail-Cde [Nump] ⊆ Produit [Nump]
Fournisseur (NumF, NomF, Status) Produit (NumP, NomP, Poids) Fournit (NumF, NumP, Qté)
Fournit [NumF] ⊆ Fournisseur [NumF]
Fournit [NumP] ⊆ Produit [NumP]
Remarque: En réalité, NumLigne n'est pas identifiant de Detail-Cde.
Sauf si ce numéro ne se répète pas d'une commande à l'autre. Ce qui n'est pas le cas en pratique.
Idée, rajouter NumC (de Commande) dans la clé de Detail-Cde.
3
Detail-Cde (NumLigne, NumC, NumP, Qté)
En fait, dans le modèle entité/association initial, ce cas est pris en compte en considérant Detail-Cde comme une TE faible (vs. TE régulier).
On dit aussi dépendance existence. Une ligne commande n'existe pas sans la commande dans laquelle elle figure.
L’identifiant d’un tel TE Detail-Cde est alors la combinaison (NumLigne, NumC) formée de l’identifiant du TE faible et du TE régulier duquel il dépend.