Question à propos de : Écriture de la division cartésienne avec les opérateurs de l'algèbre

Cette formation présente les fondements des bases de données relationnelles et enseigne l’écriture de requêtes SQL.

Modérateurs : Équipe sillages.info, Benjamin NGUYEN

COLELLA
Messages : 9
Enregistré le : jeu. 9 août 2018 07:07

Question à propos de : Écriture de la division cartésienne avec les opérateurs de l'algèbre

Messagepar COLELLA » mar. 14 août 2018 19:48

Bonjour,

J'ai une question à propos de l' "Écriture de la division cartésienne avec les opérateurs de l'algèbre".
Voici l'énoncé :

"On note I et J deux relations de sort respectif V et W tels que W c V. On pose X=V/W. Quelle est la bonne affirmation ?

réponse 1 : I/J=Πx(I)/Πx((Πx(I)⋈J)/I).
réponse 2 : J/I=Πx(I)/Πx((Πx(I)⋈J)/I).
réponse 3 : I/J=Πx(I)/Πx((Πx(J)⋈I)/I).

La bonne réponse est la numéro 1. L'explication est :

On considère un n-uplet t ∈ Πx(I) n'appartenant pas à I/J. Alors il existe un n-uplet tJ de J tel que (t : tJ) ∉ I. C'est à dire (t : tJ) ∈ (Π(x) ⋈ J)/I. Comme X et W sont disjoints, on a alors t ∈ Πx(Π(X) ⋈ J)/I). Ainsi, la relation I/J est bien Πx(I)/Πx((Πx(J)⋈I)/I). "


Je ne comprends pas du tout pourquoi cette réponse est la bonne. De plus, pourquoi V et W n'apparaissent-ils pas dans la relation ?

Je vous remercie par avance et reste à votre écoute,

Salutations respectueuses,

Anna Colella

Benjamin NGUYEN
Messages : 15
Enregistré le : ven. 9 juin 2017 09:59

Re: Question à propos de : Écriture de la division cartésienne avec les opérateurs de l'algèbre

Messagepar Benjamin NGUYEN » jeu. 6 sept. 2018 09:30

Attention, vous confondez deux symboles : la division cartésienne ÷ et la différence ensembliste \

Benjamin NGUYEN
Messages : 15
Enregistré le : ven. 9 juin 2017 09:59

Re: Question à propos de : Écriture de la division cartésienne avec les opérateurs de l'algèbre

Messagepar Benjamin NGUYEN » jeu. 6 sept. 2018 09:31

(message coupé) et vous les avez notés tous deux /

fenaux
Messages : 2
Enregistré le : lun. 10 déc. 2018 19:40

Re: Question à propos de : Écriture de la division cartésienne avec les opérateurs de l'algèbre

Messagepar fenaux » mer. 12 déc. 2018 18:09

Je vous propose un raisonnement plus simple...
On a sort(J)=W inclus dans sort(I)=V donc il me semble que J divise I conduit à l'ensemble vide ou à <> ce qui élimine la deuxième réponse
Ensuite X=V\W donc la projection sur X de J là aussi conduit à l'ensemble vide ou <> ce qui élimine la 3

Bon maintenant je m'attaque à la preuve que c'est bien La première...

Astrid Allemandou
Messages : 12
Enregistré le : sam. 22 déc. 2018 15:21

Re: Question à propos de : Écriture de la division cartésienne avec les opérateurs de l'algèbre

Messagepar Astrid Allemandou » sam. 22 déc. 2018 15:57

Bonjour,
Pour ceux que cela pourrait aider, je donne l'explication ensembliste que je me suis donnée de pourquoi la bonne réponse est la première.

Je prends pour exemple deux relations : sort(I) = Pain Farine Four Boulangerie et sort(J) = Pain Farine. On a donc X = Four Boulangerie.
Pour un cas plus général, je considère que arité(J) = n et arité(I) = n + m, donc arité(X) = m.

π_X (I) : c'est la projection de I sur X, c'est-à-dire tous les m-uplets de X hérités de I.
Dans notre exemple, ce sont les combinaisons Four/Boulangerie qui étaient dans I.

A = π_X(I) ⋈ J : ce sont tous les n+m-uplets dont la restriction à X donne des m-uplets de π_X(I) et dont la restriction à W donne des n-uplets de J. C'est aussi un produit cartésien.
Attention, on a donc des mélanges qui n'étaient pas dans I à la base !
On a donc une table Pain Farine Four Boulangerie, mais il y a des mélanges "Pain Farine" avec "Four Boulangerie" qui n'existent pas dans la table I.

A \ I : on enlève tous ces mélanges qui étaient "bons".
On ne garde que les "mauvais" mélanges "Pain Farine" avec "Four Boulangerie".

B = π_X (A \ I) : On refait la projection sur X : on retourne à nos m-uplets. Notons que dans l'étape précédente, si un m-uplet était faux avec au moins l'un des n-uplets, il restait présent. Au final : on ne garde que les m-uplets qui ne sont pas "vrais avec tous les n-uplets".
Dans l'exemple : On retourne à une table Four Boulangerie. On n'a gardé que les duos "Four Boulangerie" qui ne sont pas "vrais avec tous les duos" "Pain Farine".

Réponse finale : π_X(I) \ B : De tous les m-uplets, on enlève ceux qui ne sont pas vrai avec tous les n-uplets, c'est-à-dire on garde ceux qui sont vrais avec tous les n-uplets.
Dans l'exemple : De tous les duos "Four Boulangerie" de la table de base I, on enlève tous les duos "Four Boulangerie" de l'étape précédente. On ne garde donc que les duos "Four Boulangerie" qui sont vrais avec tous les duos "Pain Farine", c'est-à-dire on ne garde que les fours de boulangerie qui peuvent cuire toutes les sortes de pain !

C'est la définition de la division cartésienne de I par J : c'est la liste des n-uplets "en plus" de I, communs à ("vrais avec") tout ce qu'il y a dans J.

Avec les acteurs des films de Hitchcock, I était la table Film et J était les titres de film de Hitchcock ; la division donnait la liste des attributs "en plus" de I (directeur et acteur), communs à tout ce qu'il y a dans J (communs à tous les films de Hitchcock : le directeur l'est forcément, et on a ce qu'on cherchait pour l'acteur).


Retourner vers « Bases de données relationnelles »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 invités