Relationel algebra

Den stabile version blev tjekket ud den 29. juli 2022 . Der er ubekræftede ændringer i skabeloner eller .

Relationel algebra  er et lukket system af operationerrelationer 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 .

Lukket relationel algebra

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.

Begrænsninger for operationer

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.

Relationelle algebraoperationer

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.

Omdøbning

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

R  - forhold Atr 1 , Atr 2 , … — indledende attributnavne NewAtr 1 , NewAtr 2 , … er nye attributnavne.

Konsolidering

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 UNION B

Krydsning

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:

A Skær B

Subtraktion

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:

A MINUS B

Tildelingsoperation

Tildelingsoperatoren (:=) giver dig mulighed for at gemme resultatet af evaluering af et relationelt udtryk i en eksisterende relation.

Kartesisk produkt

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 B

Sampling (begrænsning)

En 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:

A HVOR c

Eksemplet er skrevet som eller hvor:

Projektion

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:

A[X, Y, …, Z]

eller

PROJEKT A {x, y, …, z}

Forbindelse

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 P

Division

En 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 B

Udtrykkeligheden af ​​nogle operationer i forhold til andre

Nogle af de relationelle operatorer kan udtrykkes i form af andre relationelle operatorer.

Tilmeld dig operatør

Deltag-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ør

Skæringsoperatøren udtrykkes via subtraktion som følger:

A Skær B = A MINUS (A MINUS B) divisionsoperatør

Divisionsoperatoren 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]

Implementeringer

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] .

Noter

  1. Introduktion til Joins . Hentet 14. november 2011. Arkiveret fra originalen 26. november 2011.
  2. Dato, Christopher. SQL og relationsteori. Hvordan man skriver kode i SQL korrekt. - Symbol-Plus, 2010
  3. C. Date, Hugh Darwen. Grundlæggende om fremtidige databasesystemer. Tredje Manifest. M: Janus-K, 2004.
  4. Gray, 1989 , s. 188.
  5. CJ Dato. Edgar F. Codd-AM Turing Prisvinder . amturing.acm.org . Hentet 27. december 2020. Arkiveret fra originalen 23. december 2017.
  6. Hector Garcia-Molina . Databasesystemer: den komplette bog  / Hector Garcia-Molina , Jeffrey D. Ullman , Jennifer Widom. — 2. - Pearson Prentice Hall, 2009. - ISBN 978-0-13-187325-4 .

Litteratur

Links