2012-04-01 16 views
0

Ich studiere für eine Prüfung, die Begriffe der relationalen Algebra enthält. Das Buch sagt, dass ich nicht ein Theta-Join (eine Verknüpfung mit einem unabhängig von Zustand) auf zwei identischen Beziehungen machen, so nehmen wir an, ich habe:Theta Join Bedingungen

person(ssn, name, surname, age) 
disease(ssn_p, gravity, code) 

Mit ssn von Person, die der Primärschlüssel ist. Code von Krankheit, die der Primärschlüssel ist, und ssn_p der Fremdschlüssel, der auf person.name verweist. Kann ich also einen Join für zwei Relationen mit gemeinsamen Feldern durchführen? So zum Beispiel gibt es zwei Beziehungen (Ergebnis eine Auswahl und eine Projektion):

R1(ssn, name) 
R2(ssn_p name) 

Kann ich die Verbindung zwischen R1 und R2 nicht (ich weiß nicht Symbole finden einzufügen, sorry)?

+0

Dies gehört wahrscheinlich zu [cstheorie.se] –

Antwort

2

Sie können einen Theta-Join nicht ausführen, wenn die Relationen Attribute gemeinsam haben. Der Grund dafür ist, dass der Theta-Join Attribute grundsätzlich gegenüberstellt. Mit anderen Worten, wenn a1, a2, ..., an Attribute in R1 sind, und b1, b2, ..., bm sind Attribute in R2, dann ist das Ergebnis einer Theta-Join auf R1 und R2 wird eine Beziehung R3 mit Attributen a1, a2, ..., an, b1, b2, ..., bm sein. Wenn R1 und R2 beliebige Attribute teilen, dann hat R3 doppelte Attribute. Wiederholte Attribute sind in der Beziehungsalgebra nicht erlaubt.

Wenn Sie einen Theta-Join ausführen möchten, wenn die Relationen einige Attribute teilen, können Sie eine Rename-Operation für eine der Relationen ausführen, sodass alle Attribute unterschiedlich werden.

Verwandte Themen