Projektion (relationell algebra)
I relationalgebra är en projektion en unär operation skriven som där är en relation och är attributnamn. Dess resultat definieras som den mängd som erhålls när komponenterna i tuplarna i är begränsade till mängden – den förkastar (eller exkluderar ) de andra attributen.
Rent praktiskt, om en relation ses som en tabell, kan projektion ses som att välja en delmängd av dess kolumner. Till exempel, om attributen är (namn, ålder), då projicering av relationen {(Alice, 5), (Bob, 8)} på attributlistan (ålder) ger {5,8} – vi har kasserat namnen, och vet bara vilka åldrar som finns.
Projektioner kan också ändra attributvärden. Till exempel, om har attributen , , , där värdena för är siffror, då är som , men med alla -värden halverade .
Relaterade begrepp
Det närbesläktade begreppet i mängdlära (se: projektion (mängdlära) ) skiljer sig från det för relationalgebra genom att man i mängdlära projicerar på ordnade komponenter, inte på attribut. Till exempel, projicering av på den andra komponenten ger 7.
Projektion är relationalgebras motsvarighet till existentiell kvantifiering i predikatlogik . De attribut inte ingår motsvarar existentiellt kvantifierade variabler i predikatet vars förlängning operandrelationen representerar. Exemplet nedan illustrerar denna punkt.
På grund av överensstämmelsen med existentiell kvantifiering föredrar vissa myndigheter att definiera projektion i termer av de uteslutna attributen. I ett datorspråk är det givetvis möjligt att ange noter för båda, och det gjordes i ISBL och flera språk som tagit avstamp från ISBL.
Ett nästan identiskt koncept förekommer i kategorin monoider , kallad strängprojektion , som består av att ta bort alla bokstäver i strängen som inte tillhör ett givet alfabet .
När den implementeras i SQL- standarden returnerar "standardprojektionen" en multiset istället för en uppsättning, och π -projektionen erhålls genom tillägg av nyckelordet DISTINCT
för att eliminera dubbletter av data.
Exempel
Som ett exempel, betrakta relationerna som avbildas i följande två tabeller som är relationen Person och dess projektion på (vissa säger "över") attributen Ålder och Vikt :
|
|
Anta att predikatet för Person är " Namnet är ålder år gammalt och väger vikt ." Sedan representerar den givna projektionen predikatet, "Det finns ett namn så att namnet är år gammalt och väger vikt ."
Observera att Harry och Peter har samma ålder och vikt, men eftersom resultatet är en relation, och därför en uppsättning, dyker denna kombination bara upp en gång i resultatet.
Mer formellt definieras projektions semantik enligt följande:
där är begränsningen av tuplen till mängden så att
där är ett attributvärde, är ett attributnamn och är ett element i det attributets domän — se Relation (databas) .
Resultatet av en projektion definieras endast om är en delmängd av rubriken för .
Projicering över inga attribut alls är möjlig, vilket ger en relation på grad noll . I detta fall är resultatets kardinalitet noll om operanden är tom, annars en. De två relationerna av grad noll är de enda som inte kan avbildas som tabeller.