Premessa

Portale di appartenenza: Basi di dati.

Cosa troverai in questa nota:

  • Come effettuare dei conteggi nelle interrogazioni.
  • Come effettuare l’estrazione del massimo (o del minimo) di un attributo.

Prerequisiti: per comprendere pienamente il contenuto di questa nota, oltre le conoscenze minime che do per scontato che tu sappia giΓ , ti consiglio di aver letto in precedenza queste altre note:

Buona lettura! β˜οΈπŸ€“


L’algebra relazionale puΓ² essere usata in modi β€œcreativi” per compiere operazioni particolari sulle relazioni.

1 - Interrogazioni con conteggi

In algebra relazionale non Γ¨ possibile effettuare interrogazioni che prevedano conteggi (per esempio, non Γ¨ possibile sapere quante volte un valore compare in una relazione), perΓ² Γ¨ possibile rispondere a domande in cui si stabilisce un β€œlimite” di conteggio (per esempio, Γ¨ possibile sapere quali valori compaiono piΓΉ o meno di volte in una relazione).

Come confrontiamo piΓΉ record della stessa relazione? Per esempio, consideriamo la seguente relazione con due attributi ( di tipo intero e di tipo carattere) di cui vogliamo sapere quali sono i valori di che compaiono almeno due volte:

L’idea Γ¨ quella di mettere la relazione in theta-join con se stessa:

Tuttavia, perΓ², Γ¨ necessario distinguere le nuove coppie di e che saranno presenti nel risultato, quindi li rinominiamo:

Il predicato deve selezionare i valori di corrispondenti ma associati a lettere diverse:

Il risultato Γ¨ il seguente:

Adesso ci basterΓ  soltanto fare una proiezione su o per far collassare automaticamente le tuple duplicate e ottenere, come risultati, e .

E se volessimo controllare quali valori di compaiono almeno tre volte? In questo caso, dovremmo fare un secondo theta-join al risultato dell’interrogazione precedente e, nel predicato, associare i numeri corrispondenti a tutti e tre gli attributi ma con lettere diverse:

Il risultato Γ¨ il seguente:

Anche in questo caso ci basterΓ  soltanto fare una proiezione su . o per far collassare automaticamente le tuple duplicate e ottenere, come risultato, .

2 - Estrazione del massimo (o minimo)

Tramite l’algebra relazionale, Γ¨ possibile estrarre un valore massimo (o minimo) da una serie di valori di un attributo di tipo intero. Per esempio, consideriamo la seguente relazione con un unico attributo di tipo intero di cui vogliamo estrarre il massimo:

Ricordiamo che il massimo di una sequenza di numeri Γ¨ tale se il numero Γ¨ maggiore o uguale di tutti gli altri: dall’interrogazione affermativa β€œestrarre il numero maggiore o uguale di tutti gli altri”, possiamo ottenere l’interrogazione con negazione essenziale β€œestrarre il numero non minore di tutti gli altri”. Possiamo cosΓ¬ usare l’algoritmo di risoluzione delle interrogazioni con negazioni essenziali:

  1. Definiamo l’universo del discorso:
  1. Rispondiamo alla domanda in forma positiva (nel nostro caso: β€œestrarre tutti i numeri minori di qualche altro”).

Per fare ciΓ², calcoliamo il prodotto cartesiano per poter costruire un confronto tra i numeri:

Otteniamo la seguente relazione .

Selezioniamo quindi solo i record in cui :

Otteniamo la seguente relazione .

Possiamo notare come nella colonna ci sono effettivamente solo quei numeri minori di qualche altro numero nella sequenza (ossia e ): effettuando una proiezione (e una ridenominazione per rendere lo schema uguale a quello dell’universo , possiamo far collassare i valori duplicati:

Otteniamo la seguente relazione .

  1. La risposta che vogliamo ottenere Γ¨ data dalla differenza tra e , da cui otteniamo l’unico valore che Γ¨ effettivamente il massimo nella sequenza di valori .

Approfondimento

Se vuoi saperne di piΓΉ:

Fonti: