Relationel algebra er et lukket system af operationer på relationer i en relationel datamodel . Relationelle algebraoperationer kaldes også relationelle operationer .
Det oprindelige sæt af 8 operationer blev foreslået af E. Codd i 1970'erne og omfattede både operationer, der stadig er i brug ( projektion , join osv.) og operationer, der ikke er kommet i brug (f.eks. division af relationer).
I udviklingen af relationel teori og praksis er flere nye relationelle operationer blevet foreslået, såsom semi-join ( SEMI-JOIN ) og semi-difference eller anti-semi-join ( ANTI-SEMI-JOIN ) [1] [2 ] , CROSS APPLY og OUTER APPLY , transitiv lukning ( TCLOSE ) osv.
Da mange operationer kan udtrykkes gennem hinanden, som en del af relationel algebra, kan der skelnes mellem flere varianter af grundlaget (et sæt operationer, hvorigennem alle de andre kan udtrykkes). Det mest berømte og strengt definerede grundlag ( algebra A ) blev foreslået af Christopher Date og Hugh Darwen [3] .
Relationel algebra og relationel calculus er ækvivalente i deres udtrykskraft [4] . Der er regler for konvertering af anmodninger mellem dem.
Hovedanvendelsen af relationel algebra er at tilvejebringe en teoretisk ramme for relationelle databaser , især forespørgselssprog til sådanne databaser, hvoraf den vigtigste er SQL .
Relationel algebra er et sæt operationer på relationer, således at resultatet af hver af operationerne også er en relation. Denne egenskab ved en algebra kaldes lukkethed .
Operationer på en relation kaldes unær , på to relationer - binær , på tre- ternær (disse er praktisk talt ukendte).
Et eksempel på en unær operation er en projektion, et eksempel på en binær operation er en union.
En N -ær relationel operation f kan repræsenteres af en funktion, der returnerer en relation og tager n relationer som argumenter:
Da relationel algebra er lukket, kan andre relationelle algebraudtryk (egnede til type) erstattes som operander i relationelle operationer:
I relationelle udtryk kan du bruge indlejrede udtryk af en vilkårligt kompleks struktur.
Nogle relationelle operationer, især forening , skæring og subtraktion , kræver, at forholdet har matchende (samme) overskrifter (skemaer). Det betyder, at antallet af attributter, navnene på attributterne og typen ( domæne ) af attributterne med samme navn er de samme.
Nogle relationer er ikke formelt kompatible på grund af forskelle i attributnavne, men bliver det efter anvendelse af attributomdøbningsoperationen.
Den kartesiske produktoperation kræver, at operandrelationerne ikke har attributter af samme navn. Relationer siges at være kompatible ved at tage det udvidede kartesiske produkt, hvis skæringspunktet mellem sættene af attributnavne taget fra deres relationsskemaer er tomt.
Det følgende er nogle operationer af relationel algebra, der er af enten historisk eller praktisk interesse. Det er umuligt at liste alle operationer, da enhver operation, der opfylder definitionen af relationel, er en del af den relationelle algebra.
Resultatet af at anvende attributomdøbningsoperationen er en relation med de ændrede attributnavne.
Syntaks :
R OMDØB Atr 1 , Atr 2 , … SOM NewAtr 1 , NewAtr 2 , …hvor
En relation med samme overskrift som typekompatible relationer A og B og en krop bestående af tupler , der tilhører enten A , B eller begge.
Syntaks:
En relation med samme titel som relationerne A og B , og en krop bestående af tupler tilhørende både relationerne A og B på samme tid .
Syntaks:
En relation med samme overskrift som typekompatible relationer A og B , og en krop bestående af tupler, der hører til relation A og ikke tilhører relation B.
Syntaks:
Tildelingsoperatoren (:=) giver dig mulighed for at gemme resultatet af evaluering af et relationelt udtryk i en eksisterende relation.
En relation, hvis overskrift ( A 1 , A 2 , …, A n , B 1 , B 2 , …, B m ) er sammenkædningen af overskrifterne af relationerne A ( A 1 , A 2 , …, A n ) og B ( B 1 , B 2 , …, B m ), og kroppen består af tupler, der alle er kombinationer af tupler af relationerne A og B : ( a 1 , a 2 , …, a n , b 1 , b 2 , … , b m ),
sådan at
( a 1 , a 2 , …, a n ) ∈ A , ( b 1 , b 2 , …, b m ) ∈ B.Syntaks:
A GANGE BEn relation med samme titel som relation A og en krop bestående af tupler, hvis attributværdier evalueres til TRUE , når de erstattes i betingelse c . c er et boolesk udtryk , der kan omfatte attributter for relation A og/eller skalære udtryk.
Syntaks:
Eksemplet er skrevet som eller hvor:
Projektion er en unær operation , der giver dig mulighed for at få en "lodret" delmængde af en given relation eller tabel, det vil sige en sådan delmængde, der opnås ved at vælge de specificerede attributter , efterfulgt af eliminering, om nødvendigt, af redundante duplikerede tupler . Lad en tabel med attributnavne angives , det vil sige en delmængde af sættet af attributnavne . Resultatet af en tabelprojektion på de valgte attributnavne er en ny tabel opnået fra den originale tabel ved at slette attributter, der ikke er inkluderet i det valgte sæt, efterfulgt af den mulige fjernelse af overflødige duplikerede tupler.
Når du implementerer en projektion, er det nødvendigt at specificere den projekterede relation og et bestemt sæt af dens attributter, som bliver titlen på den resulterende.
Når projektionen udføres, tildeles et "lodret" snit af operandrelationen med den naturlige ødelæggelse af potentielt opståede duplikerede tupler.
Syntaks:
eller
Operationen med at forbinde relationerne A og B med prædikat P er logisk ækvivalent med den sekventielle anvendelse af det kartesiske produkt af A og B og selektion ved prædikat P. Hvis der er attributter med de samme navne i relationerne, skal disse attributter omdøbes, før sammenkædningen udføres.
Syntaks:
( A GANGE B ) HVOR PEn relation med en overskrift (X 1 , X 2 , …, X n ) og en krop, der indeholder et sæt tupler (x 1 , x 2 , …, x n ), således at for alle tupler (y 1 , y 2 , … , y m ) ∈ B med hensyn til A(X 1 , X 2 , …, X n , Y 1 , Y 2 , …, Y m ) der er en tupel (x 1 , x 2 , …, x n , y 1 , y 2 , …, y m ) .
Syntaks:
A DIVIDEBY BNogle af de relationelle operatorer kan udtrykkes i form af andre relationelle operatorer.
Tilmeld dig operatørDeltag-operatøren er defineret i forhold til det kartesiske produkt, og vælg operatører som følger:
(A GANGE B) HVOR X=Y hvor X og Y er attributter til henholdsvis relationerne A og B med indledningsvis lige navne. VejkrydsoperatørSkæringsoperatøren udtrykkes via subtraktion som følger:
A Skær B = A MINUS (A MINUS B) divisionsoperatørDivisionsoperatoren udtrykkes i form af subtraktion, kartesisk produkt og projektionsoperatorer som følger:
A DIVIDEBY B = A[X] MINUS ((A[X] GANGE B) MINUS A)[X]Det første forespørgselssprog baseret på Codds algebra var Alpha, udviklet af Codd selv. Efterfølgende blev ISBL oprettet, og dette banebrydende arbejde er blevet rost af mange myndigheder [5] for at vise en måde at gøre Codds idé til et brugbart sprog. Business System 12 var et kortvarigt relationelt DBMS , der fulgte ledelsen af ISBL.
I 1998 foreslog Christopher Date og Hugh Darwen et sprog kaldet Tutorial D til brug i undervisning i relationel databaseteori, dette forespørgselssprog var også baseret på ideer fra ISBL. Rel er en implementering af Tutorial D.
Selv SQL -forespørgselssproget er løst baseret på relationel algebra, selvom operander i SQL ( tabeller ) ikke ligefrem er relationer , og flere nyttige relationelle algebrasætninger holder ikke i SQL (måske til skade for optimerere og/eller brugere). SQL-tabelmodellen er et multisæt , ikke et sæt . For eksempel er et udtryk en sætning om relationalgebra på mængder, men ikke relationalgebra på multisæt; for studiet af relationel algebra på multisæt, se kapitel 5 i "Complete" lærebogen af Garcia-Molina , Ullman og Widom [6] .
Database | |
---|---|
Begreber |
|
Objekter | |
Nøgler | |
SQL | |
Komponenter |