Relationele algebra
RELATIONAL ALGEBRA is een veelgebruikte procedurele zoektaal. Het verzamelt gevallen van relaties als input en geeft gevallen van relaties als output. Het gebruikt verschillende bewerkingen om deze actie uit te voeren. SQL Relationele algebra-querybewerkingen worden recursief uitgevoerd op een relatie. De output van deze bewerkingen is een nieuwe relatie, die kan worden gevormd uit een of meer invoerrelaties.
In deze tutorial leer je:
- Relationele algebra
- SELECTEER (σ)
- Projectie (π)
- Hernoemen (ρ)
- Vakbondsoperatie (υ)
- Verschil instellen (-)
- Kruispunt
- Cartesiaans product (X)
- Doe mee met Operations
- Innerlijke verbinding:
- Theta Doe mee:
- EQUI toetreden:
- NATUURLIJKE SAMENWERKING (⋈)
- BUITEN WORDEN
- Linker buitenste verbinding (A B)
- Rechter buitenste verbinding: (A B)
- Volledige Outer Join: (A B)
Elementaire SQL-relationele algebrabewerkingen
De relationele algebra is opgedeeld in verschillende groepen
Unaire relationele operaties
- SELECT (symbool: σ)
- PROJECT (symbool: π)
- RENAME (symbool: ρ)
Relationele algebrabewerkingen uit de verzamelingenleer
- UNIE (υ)
- INTERSECTIE (),
- VERSCHIL (-)
- CARTESISCH PRODUCT (x)
Binaire relationele operaties
- WORD LID
- DIVISIE
Laten we ze in detail bestuderen met oplossingen:
SELECTEER (σ)
De SELECT-bewerking wordt gebruikt voor het selecteren van een subset van de tupels volgens een bepaalde selectieconditie. Sigma (σ) Symbool geeft het aan. Het wordt gebruikt als een uitdrukking om tupels te kiezen die voldoen aan de selectievoorwaarde. Operator selecteren selecteert tupels die aan een bepaald predikaat voldoen.
σp(r)
σ
is het predikaat r
staat voor relatie, wat de naam van de tabel p
is, is voorzetsellogica
voorbeeld 1
σ topic = "Database" (Tutorials)
Output - Selecteert tuples uit Tutorials waarbij topic = 'Database'.
Voorbeeld 2
σ topic = "Database" and author = "guru99"( Tutorials)
Output - Selecteert tuples uit Tutorials waarbij het onderwerp 'Database' is en 'auteur' guru99.
Voorbeeld 3
σ sales > 50000 (Customers)
Output - Selecteert tuples van klanten met een omzet groter dan 50.000
Projectie (π)
De projectie elimineert alle attributen van de invoerrelatie, behalve die vermeld in de projectielijst. De projectiemethode definieert een relatie die een verticale subset van Relation bevat.
Dit helpt om de waarden van gespecificeerde attributen te extraheren om dubbele waarden te elimineren. (pi) -symbool wordt gebruikt om attributen uit een relatie te kiezen. Deze operator helpt u om specifieke kolommen uit een relatie te houden en verwijdert de andere kolommen.
Voorbeeld van projectie:
Beschouw de volgende tabel
Klanten ID | Klantnaam | Toestand |
---|---|---|
1 | Actief | |
2 | Amazon | Actief |
3 | appel | Inactief |
4 | Alibaba | Actief |
Hier zal de projectie van CustomerName en status geven
Π CustomerName, Status (Customers)
Klantnaam | Toestand |
---|---|
Actief | |
Amazon | Actief |
appel | Inactief |
Alibaba | Actief |
Hernoemen (ρ)
Hernoemen is een unaire bewerking die wordt gebruikt voor het hernoemen van attributen van een relatie.
ρ (a / b) R zal het attribuut 'b' van relatie hernoemen door 'a'.
Vakbondsoperatie (υ)
UNION wordt gesymboliseerd door ∪-symbool. Het bevat alle tupels die in tabel A of in B staan. Het elimineert ook dubbele tupels. Dus set A UNION set B zou worden uitgedrukt als:
Het resultaat <- A ∪ B
Om een vakbondsoperatie geldig te laten zijn, moeten de volgende voorwaarden gelden:
- R en S moeten hetzelfde aantal attributen zijn.
- Kenmerkdomeinen moeten compatibel zijn.
- Dubbele tupels moeten automatisch worden verwijderd.
Voorbeeld
Beschouw de volgende tabellen.
Tabel A | Tabel B | |||
kolom 1 | kolom 2 | kolom 1 | kolom 2 | |
---|---|---|---|---|
1 | 1 | 1 | 1 | |
1 | 2 | 1 | 3 |
A ∪ B geeft
Tabel A ∪ B | |
kolom 1 | kolom 2 |
---|---|
1 | 1 |
1 | 2 |
1 | 3 |
Verschil instellen (-)
- Symbool geeft het aan. Het resultaat van A - B is een relatie die alle tupels omvat die in A staan maar niet in B.
- De attribuutnaam van A moet overeenkomen met de attribuutnaam in B.
- De twee-operand-relaties A en B moeten ofwel compatibel ofwel Union-compatibel zijn.
- Het moet een gedefinieerde relatie zijn die bestaat uit de tupels die in relatie A staan, maar niet in B.
Voorbeeld
A-B
Tabel A - B | |
kolom 1 | kolom 2 |
---|---|
1 | 2 |
Kruispunt
Een kruising wordt gedefinieerd door het symbool ∩
A ∩ B
Definieert een relatie die bestaat uit een verzameling van alle tupels die zowel in A als B staan. A en B moeten echter verenigbaar zijn.
Voorbeeld:
A ∩ B
Tabel A ∩ B | |
kolom 1 | kolom 2 |
---|---|
1 | 1 |
Cartesiaans product (X) in DBMS
Cartesiaans product in DBMS is een bewerking die wordt gebruikt om kolommen uit twee relaties samen te voegen. Over het algemeen is een Cartesiaans product nooit een zinvolle operatie als het alleen wordt uitgevoerd. Het wordt echter zinvol wanneer het wordt gevolgd door andere bewerkingen. Het wordt ook Cross Product of Cross Join genoemd.
Voorbeeld - Cartesiaans product
σ kolom 2 = '1' (AXB)
Uitvoer - Het bovenstaande voorbeeld toont alle rijen van relatie A en B waarvan kolom 2 de waarde 1 heeft
σ kolom 2 = '1' (AXB) | |
kolom 1 | kolom 2 |
---|---|
1 | 1 |
1 | 1 |
Doe mee met Operations
Het samenvoegen is in wezen een cartesiaans product, gevolgd door een selectiecriterium.
Samenvoegbewerking aangegeven met ⋈.
De JOIN-bewerking maakt het ook mogelijk om verschillende gerelateerde tuples uit verschillende relaties samen te voegen.
Soorten JOIN:
Verschillende vormen van samenvoegen zijn:
Innerlijke sluit zich aan:
- Theta sluit zich aan
- EQUI doe mee
- Natuurlijk meedoen
Outer join:
- Linker Outer Join
- Rechts buitenste verbinding
- Volledige Outer Join
Innerlijke verbinding:
In een inner join worden alleen die tuples die voldoen aan de matchingscriteria meegenomen, terwijl de rest wordt uitgesloten. Laten we verschillende soorten innerlijke joins bestuderen:
Theta Doe mee:
Het algemene geval van de JOIN-bewerking wordt een Theta-join genoemd. Het wordt aangeduid met symbool θ
Voorbeeld
A ⋈θ B
Theta join kan alle voorwaarden in de selectiecriteria gebruiken.
Bijvoorbeeld:
A ⋈ A.column 2 > B.column 2 (B)
A ⋈ A. kolom 2> B. kolom 2 (B) | |
kolom 1 | kolom 2 |
---|---|
1 | 2 |
EQUI toetreden:
Wanneer een theta-join alleen de equivalentievoorwaarde gebruikt, wordt het een equi-join.
Bijvoorbeeld:
A ⋈ A.column 2 = B.column 2 (B)
A ⋈ A. kolom 2 = B. kolom 2 (B) | |
kolom 1 | kolom 2 |
---|---|
1 | 1 |
EQUI-join zijn de moeilijkste bewerkingen om efficiënt te implementeren met behulp van SQL in een RDBMS en een reden waarom RDBMS essentiële prestatieproblemen heeft.
NATUURLIJKE SAMENWERKING (⋈)
Natuurlijke join kan alleen worden uitgevoerd als er een gemeenschappelijk attribuut (kolom) tussen de relaties is. De naam en het type van het kenmerk moeten hetzelfde zijn.
Voorbeeld
Beschouw de volgende twee tabellen
C | |
Num | Vierkant |
---|---|
2 | 4 |
3 | 9 |
D | |
Num | Kubus |
---|---|
2 | 8 |
3 | 27 |
C ⋈ D
C ⋈ D | ||
Num | Vierkant | Kubus |
---|---|---|
2 | 4 | 4 |
3 | 9 | 27 |
BUITEN WORDEN
In een outer join nemen we, naast tuples die voldoen aan de matchingscriteria, ook enkele of alle tuples op die niet voldoen aan de criteria.
Linker buitenste verbinding (A B)
In de linker buitenste join maakt bediening het mogelijk om alle tupels in de linker relatie te houden. Als er echter geen overeenkomende tuple in de juiste relatie wordt gevonden, worden de attributen van de juiste relatie in het samenvoegresultaat gevuld met null-waarden.
Beschouw de volgende 2 tabellen
EEN | |
Num | Vierkant |
---|---|
2 | 4 |
3 | 9 |
4 | 16 |
B. | |
Num | Kubus |
---|---|
2 | 8 |
3 | 18 |
5 | 75 |
A B
A ⋈ B | ||
Num | Vierkant | Kubus |
---|---|---|
2 | 4 | 4 |
3 | 9 | 9 |
4 | 16 | |
Rechter buitenste verbinding: (A B)
In de rechter buitenste verbinding maakt bediening het mogelijk om alle tupels in de juiste relatie te houden. Als er echter geen overeenkomend tupel wordt gevonden in de linkerrelatie, worden de attributen van de linkerrelatie in het samenvoegresultaat gevuld met null-waarden.
A B
A ⋈ B | ||
Num | Kubus | Vierkant |
---|---|---|
2 | 8 | 4 |
3 | 18 | 9 |
5 | 75 | |
Volledige Outer Join: (A B)
In een volledige outer join worden alle tupels van beide relaties in het resultaat opgenomen, ongeacht de matchconditie.
A B
A ⋈ B | ||
Num | Kubus | Vierkant |
---|---|---|
2 | 4 | 8 |
3 | 9 | 18 |
4 | 16 | |
5 | | 75 |
Overzicht
Bediening (symbolen) |
Doel |
---|---|
Selecteer (σ) |
De SELECT-bewerking wordt gebruikt voor het selecteren van een subset van de tupels volgens een bepaalde selectieconditie |
Projectie (π) |
De projectie elimineert alle attributen van de invoerrelatie, behalve die vermeld in de projectielijst. |
Union Operation (∪) |
UNION wordt gesymboliseerd door symbool. Het omvat alle tupels die in tabel A of in B staan. |
Verschil instellen (-) |
- Symbool geeft het aan. Het resultaat van A - B is een relatie die alle tupels omvat die in A staan maar niet in B. |
Kruising (∩) |
Intersectie definieert een relatie die bestaat uit een verzameling van alle tupels die zowel in A als B voorkomen. |
Cartesiaans product (X) |
Een cartesiaanse bewerking is handig om kolommen uit twee relaties samen te voegen. |
Innerlijke verbinding |
Inner join, omvat alleen die tuples die voldoen aan de matchingscriteria. |
Theta Join (θ) |
Het algemene geval van de JOIN-bewerking wordt een Theta-join genoemd. Het wordt aangeduid met symbool θ. |
EQUI Join |
Wanneer een theta-join alleen de equivalentievoorwaarde gebruikt, wordt het een equi-join. |
Natuurlijke verbinding (⋈) |
Natuurlijke join kan alleen worden uitgevoerd als er een gemeenschappelijk attribuut (kolom) tussen de relaties is. |
Outer Join |
In een outer join, samen met tuples die voldoen aan de matchingscriteria. |
Linker buitenste verbinding ( ) |
In de linker buitenste join maakt bediening het mogelijk om alle tupels in de linker relatie te houden. |
Right Outer join ( ) |
In de rechter buitenste verbinding maakt bediening het mogelijk om alle tupels in de juiste relatie te houden. |
Volledig buitenste deel ( ) |
In een volledige outer join worden alle tupels van beide relaties in het resultaat opgenomen, ongeacht de overeenkomende conditie. |