sql >> Database teknologi >  >> RDS >> Database

Relationel algebra

Når vi arbejder med relationsmodellen, har vi 2 grupper af operationer vi kan bruge.

Den første kaldes relationel algebra , og det er et proceduresprog .

Det er det, SQL er baseret på, og som sådan er det meget vigtigt at lære - da SQL er de-facto standarden for at arbejde med relationelle databaser.

Den anden kaldes relationsregning og i stedet for at være proceduremæssigt, er det et deklarativt sprog . Det er en grundlæggende forskel i, hvordan vi interagerer med databaser, fordi du ikke fortæller databasesoftwaren hvad den skal gøre , du skal bare fortælle det hvad du vil have , og lad den sortere detaljerne om, hvordan man gør det.

Dette er en almindelig skelnen mellem programmeringssprog. I moderne frontend siger vi, at interaktion med DOM i React er deklarativ. Brug af vanilla JavaScript til at ændre DOM er proceduremæssigt.

Sprog som Datalog, QBE og QUEL har relationel beregning som sin base. Jeg vil ikke tale om dette, fordi jeg synes, det er en meget mere niche måde at gøre tingene på sammenlignet med den mere praktiske tilgang fulgt af SQL, men du kan se på det, hvis du vil.

Med denne introduktion, lad os fortsætte med relationel algebra .

Vi har 2 typer operationer:

  • primære operationer
  • tilslut dig operationer

Primære operationer i relationel algebra

Primære operationer er:

  • union for at hente data fra to tabeller, generere en sum af tuplerne, så længe de to tabeller har de samme kolonner og attributtyper (domæne).
  • forskel for at få data indeholdt i den første tabel, men ikke i den anden tabel, hvilket genererer en forskel mellem tuplerne, så længe de to tabeller har de samme kolonner og attributtyper (domæne).
  • kartesisk produkt at hente data fra to tabeller ind i og generere én enkelt tabel, der kombinerer dataene fra dem, baseret på en attributværdi.
  • vælg kun at udtrække nogle af de tupler (rækker), der er indeholdt i en tabel baseret på bestemte kriterier.
  • projekt at generere en ny tabel, der kun indeholder en eller flere attributter (kolonner) i en eksisterende tabel
  • omdøb bruges til at omdøbe en attribut, bruges til at forhindre konflikter, når flere tabeller har samme navn for forskellige data

Forbind operationer i relationel algebra

Joins er nok de mest kraftfulde operationer, du kan udføre med relationel algebra. De bygger oven på primære operationer, og de giver dig mulighed for at korrelere data indeholdt i forskellige relationer (tabeller).

Bemærk:Jeg vil snart tale om joinforbindelser i praksis i et DBMS, dette er for det meste teori.

Vi har 2 primære joinversioner:naturlig join og theta join . Alle de andre versioner er udtrukket fra disse 2.

Naturlig tilslutning

Naturlig tilslutning korrelerer to relationer (tabeller) og opretter en ny tabel baseret på de samme værdier af en attribut.

Vi skal først have to relationer med samme attributnavn (kolonne). Så hvis værdier i attributterne i relation A er umatchede i attributterne i relation B, er rækken ikke en del af resultatet, den ignoreres.

Eksempel:

Relation A

Medarbejder-id Navn
1 Mærk
2 Tony
3 Rick

Relation B

Managernavn Medarbejder-id
Todd 1
Albert 2

Vi kan udføre en naturlig joinforbindelse for at få chefnavnet for hver medarbejder:

Medarbejder-id Navn Managernavn
1 Mærk Todd
2 Tony Albert

Da relationerne har Employee ID-attributnavnet til fælles, er det kun til stede én gang i resultatet, ikke 2 gange.

Medarbejder #3 til stede i relation A, Rick, er ikke inkluderet i denne tabel, fordi der ikke er nogen tilsvarende post i relation B.

Theta-join

En theta-join gør det muligt at udføre en join baseret på et hvilket som helst kriterium for at sammenligne to kolonner i to forskellige relationer, ikke kun lighed, som den naturlige join gør.

Den udfører et kartesisk produkt af to tabeller og filtrerer resultaterne baseret på det valg, vi ønsker at foretage.

Equi-join

Equi-join er en theta join, hvor valget er baseret på lighed mellem attributværdier i de to forskellige tabeller.

Forskellen med den naturlige join er, at vi kan vælge, hvilke attributnavne (kolonner), vi vil sammenligne.

Vi taler meget mere om joins senere, når SQL introduceres, så vi kan bruge dem i praksis.


  1. SQL Bliv ved med at få fejl med ON UPDATE CASCADE

  2. Er lig med (=) vs. LIKE for datodatatype

  3. Oracle Managed ODP.NET kan ikke finde tnsnames.ora

  4. Hvad er nyt i PostgreSQL 11