Sök…


Översikt

Relational Algebra är inte ett fullständigt SQL- språk, utan snarare ett sätt att få teoretisk förståelse för relationell behandling. Som sådan bör det inte hänvisa till fysiska enheter som tabeller, poster och fält; det bör göra referenser till abstrakta konstruktioner som förhållanden, tuples och attribut. Jag säger det, jag kommer inte att använda de akademiska termerna i det här dokumentet och kommer att hålla mig till de mer kända lekman termerna - tabeller, poster och fält.

Ett par regler för relationalgebra innan vi börjar:

  • Operatörerna som används i relationellt algebra arbetar på hela tabeller snarare än enskilda poster.
  • Resultatet av ett relationellt uttryck kommer alltid att vara en tabell (detta kallas stängningsegenskapen )

I hela detta dokument kommer jag att hänvisa till följande två tabeller:

Exempel Tabeller

VÄLJ

Den valda operatören returnerar en delmängd från huvudtabellen.
välj <tabell> där <villkor>

Exempelvis undersöka uttrycket:

välj personer där DepartmentID = 2

Detta kan skrivas som:
ange bildbeskrivning här

Detta resulterar i en tabell vars poster består av alla poster i People- tabellen där DepartmentID- värdet är lika med 2:
ange bildbeskrivning här

Villkor kan också förenas för att ytterligare begränsa uttrycket:

välj personer där StartYear> 2005 och DepartmentID = 2

resulterar i följande tabell:
ange bildbeskrivning här

PROJEKT

Projektoperatören kommer att returnera distinkta fältvärden från en tabell.
projekt <tabell> över <fältlista>

Undersök till exempel följande uttryck:
projekt People over StartYear

Detta kan skrivas som:
ange bildbeskrivning här

Detta resulterar i en tabell som består av de distinkta värdena som finns i StartYear- fältet i People- tabellen.
ange bildbeskrivning här

Duplikatvärden tas bort från den resulterande tabellen på grund av att stängningsegenskapen skapar en relationstabell: alla poster i en relationstabell måste vara åtskilda.

Om fältlistan innehåller mer än ett enda fält är den resulterande tabellen en distinkt version av dessa fält.
projektet People over StartYear, DepartmentID kommer tillbaka:
ange bildbeskrivning här
En post tas bort på grund av dubblering av 2006 StartYear och 1 DepartmentID .

GER

Relations uttryck kan kedjas ihop genom att namnge de enskilda uttryck med hjälp av att ge sökord eller genom att bädda in ett uttryck i en annan.

<relationellt algebrauttryck> ger <aliasnamn>

Tänk till exempel på följande uttryck:
välj personer där DepartmentID = 2 ger A
projekt A över Personnamn som ger B

Detta resulterar i tabell B nedan, med tabell A som är resultatet av det första uttrycket.
ange bildbeskrivning här

Det första uttrycket utvärderas och den resulterande tabellen ges alias A. Denna tabell används sedan inom det andra uttrycket för att ge den slutliga tabellen med ett alias av B.

Ett annat sätt att skriva detta uttryck är att ersätta namnet på tabellaliaset i det andra uttrycket med hela texten för det första uttrycket som är inneslutet inom parentes:
projekt ( välj personer där DepartmentID = 2) över Personnamn som ger B

Detta kallas ett kapslat uttryck .

NATURLIGT GÅ MED

En naturlig koppling fäster två tabeller tillsammans med ett gemensamt fält som delas mellan tabellerna.

gå med <tabell 1> och <tabell 2> där <fält 1> = <fält 2>
förutsatt att <fält 1> är i <tabell 1> och <fält 2> är i <tabell 2>.

Till exempel kommer följande sammanfogningsuttryck att gå med personer och avdelningar baserat på kolumnerna DepartmentID och ID i respektive tabeller:
gå med i människor och avdelningar där DepartmentID = ID

ange bildbeskrivning här

Observera att endast DepartmentID från People- tabellen visas och inte ID från Department- tabellen. Endast ett av fälten som jämförs behöver visas, vilket i allmänhet är fältnamnet från den första tabellen i kopplingsoperationen.

Även om det inte visas i detta exempel är det möjligt att sammanfogning av tabeller kan resultera i två fält med samma rubrik. Om jag till exempel hade använt rubriken Namn för att identifiera fältet Personnamn och avd. (Dvs. för att identifiera personens namn och avdelningsnamn). När denna situation uppstår använder vi tabellnamnet för att kvalificera fältnamnen med punktnotationen : People.Name och Departments.Name

gå i kombination med välj och projekt kan användas tillsammans för att få information:

gå med i människor och avdelningar där DepartmentID = ID ger A
välj A där StartYear = 2005 och Dept = 'Production' som ger B
projekt B över Personnamn som ger C

eller som ett kombinerat uttryck:

projekt ( välj ( gå med i People and Departements där DepartmentID = ID) där StartYear = 2005 och Dept = 'Production') över Personnamn som ger C

Detta kommer att resultera i denna tabell:
ange bildbeskrivning här

ALIAS

DELA UPP

UNION

GENOMSKÄRNING

SKILLNAD

UPPDATERING (: =)

TIMES



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow