2017-09-20 5 views
3

Je suis un débutant en algèbre relationnelle et je n'arrive pas à comprendre complètement comment fonctionne le produit cartésien.Produit cartésien en algèbre relationnelle

Je veux savoir ce qui se passe dans un produit cartésien lorsque mes deux tables ont des attributs communs. Je n'ai aucun problème à comprendre quand les deux tables n'ont aucun attribut en commun.

Par exemple, j'ai essayé de comprendre sur l'exemple que je me suis fait.

T1       T2 
----------     ----------- 
A B C     A B D 
1 4 7     1 4 8 
2 5 3     2 9 5 
4 7 1     7 3 2 

Si je veux faire T2 T1 x, quand je veux écrire la ligne qui est la concaténation de la première ligne de T1 A=1 , B=4 , C=7 et la deuxième ligne de T2 A=2 ,B=9 ,C=5, ce qui se passe à la colonne A et B ?

Si vous pouviez me montrer le résultat de T1 x T2 ce serait vraiment utile!

+0

S'il vous plaît donner une référence à votre variante de l'algèbre relationnelle. De nombreuses algèbres ont des relations avec des attributs ordonnés, qui peuvent avoir des noms en double; afin qu'ils puissent calculer un produit de deux relations quelconques. – philipxy

+0

Copie possible de [produits cartésiens de tables qui contiennent les mêmes colonnes] (https://stackoverflow.com/questions/33942237/cartesian-products-of-tables-that-contains-same-columns) – philipxy

Répondre

3

Modifier: Comme indiqué dans la section des commentaires. Je suis en train d'éditer cette réponse pour une bonne compréhension de la question.

Comme il est un doublon possible, consultez ce lien: Cartesian products of tables that contains same columns

D'abord, cela dépend de l'algèbre que vous utilisez. Pour certains, le produit cartésien peut être fait entre des tables avec des attributs communs, similaires à une jointure croisée, et sur d'autres algèbres, le produit cartésien n'est pas autorisé, donc vous devrez renommer les attributs.

ps: Consulter les jointures croisées comme ils sont semblables à un produit cartésien mais sans conditions pour rejoindre, voir le résultat attendu d'une jointure croisée de vos tables par exemple:

T1      T2    T1 X T2 
----------    -----------  = ---------------------------- 
A B C    A B D   T1.A T1.B T1.C T2.A T2.B T2.D 
1 4 7    1 4 8   1  4 7 1 4 8 
2 5 3    2 9 5   1  4 7 2 9 5 
4 7 1    7 3 2   1  4 7 7 3 2 
               2  5 3 1 4 8 
               2  5 3 2 9 5 
               2  5 3 7 3 2 
               4  7 1 1 4 8 
               4  7 1 2 9 5 
               4  7 1 7 3 2 

lien se réfèrent: What is the difference between Cartesian product and cross join?

Aussi, je vous recommande fortement de vérifier cela et l'essayer vous-même!

RELAX - calculatrice d'algèbre relationnelle http://dbis-uibk.github.io/relax/index.htm

+1

Quand j'essaye mon exemple dans la calculatrice que vous m'avez donnée, j'obtiendrais 'joine donnerait des noms de colonnes non uniques; les colonnes suivantes apparaissent dans les deux relations: A, B'. Alors Dois-je conclure que je ne peux pas faire un produit cartésien sans renommer A et B? – Peni

+0

Oh snap! J'ai mal compris votre question. Je vais modifier ma réponse. Mais pour le corriger ici déjà. Le produit cartésien est un cas de jointure naturelle où les relations jointes n'ont aucun nom d'attribut en commun. Ce que j'ai mal compris pour un Cross Join, qui vous donnerait alors un résultat valable. Et, oui, vous devriez conclure cela. –

+0

Errr Je pense que la faute est à moi Je ne savais pas qu'il y avait une différence entre le produit Cross et le produit cartésien Mais ce que je voulais dire c'était le produit croisé et c'est ce que j'ai utilisé sur la calculatrice! m'a donné le message d'erreur que j'ai écrit avant: – Peni