2016-10-30 5 views
0

Ich bin ein wenig verwirrt auf, wenn Sie beide dieser Operatoren verwenden. Ich habe das Gefühl, dass ich sie verstehe, aber es fällt mir schwer herauszufinden, wann ich sie in einer relationalen algebraischen Aussage brauche. Kann mir jemand dazu einen Einblick/Rat geben?Relationale Algebra Kreuz Produkt und natürliche Verbindung

+0

Bitte einen Verweis auf die Version der realtional Algebra geben Sie verwenden. Oder beschreiben Sie, was die Teile einer Beziehung sind und wie Sie die Operatoren aufrufen. – philipxy

+0

Haben Sie Ihren (vermutlich passenden) Titel gegoogelt, zB 'Relational Algebra Cross Product und Natural Join site: stackoverflow.com'? – philipxy

Antwort

0

Einige Versionen der relationalen Algebra haben Beziehungsüberschriften, die Sätze von (ungeordneten, eindeutig benannten) Attributen sind. Dann (relationales (kartesisches)) PRODUKT, alias CROSS JOIN, aka CROSS PRODUCT, wird nur dann definiert, wenn die Eingabe-Relationen keine Attributnamen teilen, aber ansonsten wie NATURAL JOIN funktionieren. Seine Aufgabe besteht also darin, zu bestätigen, dass Sie keine gemeinsamen Attributnamen erwarten.

(Einige Versionen der relationalen Algebra haben Beziehungsüberschriften, die keine Mengen sind; Attribute können bestellt werden und/oder mehrere Attribute können denselben Namen haben. Normalerweise gibt PRODUCT für jedes Eingabeattribut ein Attribut aus. Wenn es einen NATURAL JOIN gibt Das Ergebnis ist, als würde man zuerst PRODUCT, dann RESTRICTING auf die Gleichheit der Paare der gleichnamigen Attribute, dann PROJECTout ein Attribut jedes Paares.So arbeitet PRODUCT für zwei beliebige Eingaben, und NATURAL JOIN könnte undefiniert sein, wenn eine Eingabe ein doppeltes Attribut hat Namen, aber sie werden das gleiche Ergebnis, wenn es keine Attributnamen gemeinsam genutzt werden)

Was why you would compose any particular relational algebra query.

Jede Tabelle/Relation hat eine Anweisung, die durch Spalten/Attribute parametrisiert wird. (Sein "charakteristisches Prädikat".) Die Zeilen/Tupel , die die Aussage wahr machen, gehen in die Tabelle/Relation. Zuerst finden die Aussagen zu den angegebenen Tabellen/Beziehungen:

// customer [Cust-Name] has £[Balance] in account [Acc-No] at branch [Branch] 
Deposit (Branch, Acc-No, Cust-Name, Balance) 
// customer [Cust-Name] loan [Loan-No] balance is £[Balance] at branch [Branch] 
Loan(Branch, Loan-No, Cust-Name, Balance) 

Sie jetzt gegebenen Aussagen zusammen, um eine Aussage zu erhalten, die nur die Reihen wir erfüllen wollen. Verwenden Sie UND, ODER, UND NICHT UND Bedingung. Keep oder Drop-Namen. Verwenden Sie einen neuen Namen, wenn Sie einen benötigen.

customer [Cust-Name] loan [Loan-No] balance is £[Loan-Balance] at branch [Branch] 
AND customer [Cust-Name] has £[Balance] in account [Acc-No] at branch [Branch] 

Nun ist die Algebra ersetzen zu bekommen:

  • jede Aussage durch seine Tabelle/Beziehung
  • jeder UND die Tabelle/Beziehung Aussagen von ⋈ (natürlichem beitreten)
  • jedes OR der Tabelle/Beziehung Anweisungen (die die gleichen Spalten haben müssen/Attribut) von ∪ (Vereinigung)
  • von Aussagen jedem AND NOT (die die gleichen Spalten/Attribute) von \ (Differenz)
  • jeder UND Zustand durch σ Zustand
  • jeden Keeping haben muss Name von π Namen zu halten (Projektion) zu halten (und Fallenlassen von π Namen zu halten)
  • jede Spalte/Attribut in einer gegebenen Anweisung durch ρ umbenennen (umbenennen).

∩ (Schnittpunkt) und x (Produkt) sind Spezialfälle von ⋈ (∩ für beiden Seiten der gleichen Spalten/Attribute und x für nicht gemeinsam genutzten Spalten/Attribute).

(ρ Loan-Balance/Balance Loan) ⋈ Deposit 
Verwandte Themen