2017-09-20 4 views
3

Ich bin ein Anfänger in Relationale Algebra und ich verstehe nicht vollständig zu verstehen, wie kartesisches Produkt funktioniert.Kartesisches Produkt in der Relationalen Algebra

Ich möchte wissen, was im kartesischen Produkt passiert, wenn meine zwei Tabelle gemeinsame Attribute haben. Ich habe kein Problem zu verstehen, wenn beide Tabellen kein Attribut gemeinsam haben.

Zum Beispiel versuchte ich zu verstehen, was ich zum Beispiel selbst gemacht habe.

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 

Wenn ich will T1 x T2 tun, wenn ich die Zeile schreiben wollen, der die Verkettung der ersten Zeile von T1 ist A=1 , B=4 , C=7 und der zweiten Zeile von T2 A=2 ,B=9 ,C=5, was an der Säule A passieren und B ?

Wenn Sie mir das Ergebnis von T1 x T2 zeigen könnten, wäre es sehr nützlich!

+0

Bitte geben Sie einen Verweis auf die relationale Algebra Variante. Viele Algebren haben Beziehungen zu geordneten Attributen, die doppelte Namen haben können; so können sie ein Produkt von zwei beliebigen Beziehungen berechnen. – philipxy

+0

Mögliches Duplikat von [Kartesischen Produkten von Tabellen, die dieselben Spalten enthalten] (https://stackoverflow.com/questions/33942237/cartesian-products-of-tables-that-contains-same-columns) – philipxy

Antwort

3

Bearbeiten: Wie im Kommentarabschnitt diskutiert. Ich bearbeite diese Antwort für ein richtiges Verständnis der Frage.

Da dies ein mögliches Duplikat ist, beziehen sich auf diesen Link: Cartesian products of tables that contains same columns

Erstens, es hängt von der Algebra, die Sie verwenden. Für einige kann das kartesische Produkt zwischen Tabellen mit gemeinsamen Attributen, ähnlich einem Kreuz-Join, und bei anderen Algebren ist das kartesische Produkt nicht erlaubt, so dass Sie die Attribute umbenennen müssten.

ps: Suche Kreuz schließt sich, wie sie auf ein kartesisches Produkt ähnlich sind, aber ohne Bedingungen zu verbinden, sehen erwartetes Ergebnis einer Kreuzung von Ihrem Beispiel Tabellen verknüpfen:

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 

Link verweisen: What is the difference between Cartesian product and cross join?

Auch ich empfehle Ihnen dringend, dies zu überprüfen und es selbst zu versuchen!

RELAX - relationale Algebra Rechner http://dbis-uibk.github.io/relax/index.htm

+1

Wenn ich mein Beispiel versuche Der Rechner, den Sie mir gegeben haben, ich bekomme 'Join würde nicht eindeutige Spaltennamen ergeben; Die folgenden Spalten erscheinen in beiden Relationen: A, B'. Sollte ich also zu dem Schluss kommen, dass ich kein kartesisches Produkt herstellen kann, ohne A und B umzubenennen? – Peni

+0

Oh, schnapp! Ich habe deine Frage missverstanden. Ich werde meine Antwort bearbeiten. Aber um es hier schon zu korrigieren. Das kartesische Produkt ist ein Fall von natürlichem Join, bei dem die verknüpften Relationen keine Attributnamen gemeinsam haben. Was ich für einen Cross Join missverstanden habe, was dann zu einem validen Ergebnis führen würde. Und ja, Sie sollten das Fazit ziehen. –

+0

Errr Ich denke, der Fehler ist meins Ich weiß nicht, es gab einen Unterschied zwischen Kreuzprodukt und kartesischen Produkt! Aber was ich meinte, war Cross-Produkt und das ist, was ich auf dem Rechner verwendet (Named Cross beitreten auf der Website)! gab mir die Fehlermeldung, die ich vorher geschrieben habe – Peni

Verwandte Themen