DBMS - Algebra Relazionale

Ciao, futuri maghi dei database! Sono entusiasta di essere il vostro guida in questo emozionante viaggio attraverso il mondo magico dell'Algebra Relazionale. Come qualcuno che ha insegnato scienze informatiche per più anni di quanti mi piacerebbe ammettere ( diciamo solo che ricordo quando i dischetti floppy erano davvero floppy), posso assicurarvi che padroneggiare questo argomento sarà come ottenere un superpotere nel regno dei database. Allora, entriamo nel dettaglio!

DBMS - Relational Algebra

Algebra Relazionale

Immaginate di organizzare la vostra vasta collezione di action figure di supereroi (o forse è solo io). L'Algebra Relazionale è come avere un set di superpoteri che vi permettono di manipolare e interrogare la vostra collezione in modi incredibilmente utili. È la base di come interagiamo con i database relazionali, fornendo un quadro teorico per le operazioni sulle relazioni (tabelle).

Concetti di Base

Prima di iniziare a lanciare simboli eleganti, stabiliamo alcune regole di base:

  1. Le relazioni sono insiemi di tuple (righe)
  2. Gli attributi sono le intestazioni delle colonne
  3. Le operazioni producono nuove relazioni come risultato

Ora, esaminiamo i superpoteri (operazioni) a nostra disposizione:

Operazione Simbolo Descrizione
Seleziona σ Filtra le righe in base a una condizione
Proietta Seleziona specifiche colonne
Unione Combina due relazioni compatibili
Differenza di insieme Rimuove le tuple da una relazione che appaiono in un'altra
Prodotto cartesiano Χ Combina ogni riga di una relazione con ogni riga di un'altra
Rinomina ρ Rinomina attributi o relazioni

Operazione di Selezione (σ)

L'operazione di selezione è come avere la vista a raggi X per il vostro database. Permette di filtrare le righe in base a una condizione specifica.

Sintassi: σ(relazione)

Supponiamo di avere una tabella chiamata Heroes:

| Name   | Power        | Age |
|--------|--------------|-----|
| Bruce  | Intelligence | 35  |
| Clark  | Flight       | 30  |
| Diana  | Strength     | 5000|
| Barry  | Speed        | 28  |

Se vogliamo trovare tutti i supereroi sotto i 100 anni:

σ Age < 100 (Heroes)

Questo ci darà:

| Name   | Power        | Age |
|--------|--------------|-----|
| Bruce  | Intelligence | 35  |
| Clark  | Flight       | 30  |
| Barry  | Speed        | 28  |

Visto? Abbiamo filtrato Diana, la nostra meravigliosa donna senza età!

Operazione di Proiezione (∏)

L'operazione di proiezione è come avere un raggio rimpicciolente. Permette di selezionare specifiche colonne, riducendo la larghezza della vostra relazione.

Sintassi: ∏(relazione)

Utilizzando la nostra tabella Heroes, se vogliamo solo i nomi e i poteri:

∏ Name, Power (Heroes)

Risultato:

| Name   | Power        |
|--------|--------------|
| Bruce  | Intelligence |
| Clark  | Flight       |
| Diana  | Strength     |
| Barry  | Speed        |

Abbiamo rimpicciolito la nostra tabella, concentrando l'attenzione solo su ciò di cui abbiamo bisogno!

Operazione di Unione (∪)

L'operazione di unione è come la fusione in Dragon Ball Z – combina due relazioni compatibili.

Sintassi: Relazione1 ∪ Relazione2

Supponiamo di avere un'altra tabella chiamata Sidekicks:

| Name   | Power   | Age |
|--------|---------|-----|
| Robin  | Acrobat | 22  |
| Jimmy  | None    | 25  |

Possiamo combinare Heroes e Sidekicks:

Heroes ∪ Sidekicks

Risultato:

| Name   | Power        | Age |
|--------|--------------|-----|
| Bruce  | Intelligence | 35  |
| Clark  | Flight       | 30  |
| Diana  | Strength     | 5000|
| Barry  | Speed        | 28  |
| Robin  | Acrobat      | 22  |
| Jimmy  | None         | 25  |

Ora abbiamo un super team!

Operazione di Differenza di Insieme (−)

La differenza di insieme è come avere un raggio di disintegrazione. Rimuove le tuple da una relazione che appaiono in un'altra.

Sintassi: Relazione1 − Relazione2

Se vogliamo trovare i supereroi che non sono sidekicks:

Heroes − Sidekicks

Questo ci darà la nostra tabella Heroes originale, poiché nessuno di loro è nella tabella Sidekicks.

Operazione di Prodotto Cartesiano (Χ)

Il prodotto cartesiano è come creare universi alternativi dove ogni eroe incontra ogni sidekick.

Sintassi: Relazione1 Χ Relazione2

Heroes Χ Sidekicks

Questo avrebbe come risultato una tabella con tutte le combinazioni possibili di eroi e sidekicks. È una tabella grande, quindi non la mostro tutta, ma ecco un'anteprima:

| HName  | HPower       | HAge | SName | SPower  | SAge |
|--------|--------------|------|-------|---------|------|
| Bruce  | Intelligence | 35   | Robin | Acrobat | 22   |
| Bruce  | Intelligence | 35   | Jimmy | None    | 25   |
| Clark  | Flight       | 30   | Robin | Acrobat | 22   |
| Clark  | Flight       | 30   | Jimmy | None    | 25   |
...

Operazione di Rinomina (ρ)

L'operazione di rinomina è come avere un potere di alterazione della realtà. Permette di cambiare i nomi degli attributi o delle relazioni.

Sintassi: ρ new_name (old_name)

Se vogliamo rinominare l'attributo Power in Superpower:

ρ Superpower←Power (Heroes)

Risultato:

| Name   | Superpower   | Age |
|--------|--------------|-----|
| Bruce  | Intelligence | 35  |
| Clark  | Flight       | 30  |
| Diana  | Strength     | 5000|
| Barry  | Speed        | 28  |

Calcolo Relazionale

Ora, per il nostro atto finale, esaminiamo brevemente il Calcolo Relazionale. Se l'Algebra Relazionale è sobre "come" ottenere i dati, il Calcolo Relazionale è sobre "quali" dati ottenere. È un modo declarativo per specificare le query dei database.

Ci sono due tipi:

  1. Calcolo Relazionale a Tuple (TRC)
  2. Calcolo Relazionale a Dominio (DRC)

Per esempio, in TRC, per trovare tutti i supereroi con "Flight" come loro potere:

{H | H ∈ Heroes ∧ H.Power = "Flight"}

Questo dice "Dammi tutte le tuple H da Heroes dove H's Power è Flight."

E вот вы,年轻的 Padawan! Ora avete livellato le vostre abilità nel database. Ricordate, con grande potere viene grande responsabilità – usate queste operazioni di algebra relazionale con saggezza, e diventerete esperti nel query dei database in breve tempo. Ora vai avanti e organizza i tuoi dati con la precisione di un vero supereroe!

Credits: Image by storyset