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:
- Definiamo lβuniverso del discorso:
- 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 .
- 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:
- π« Lezioni e slide del Prof. Pensa Ruggero Gaetano del corso di Basi di Dati (canale B), Corso di Laurea in Informatica presso lβUniversitΓ di Torino, A.A. 2024-25:
- π« Appunti di Luca Barra del corso di Basi di Dati, Corso di Laurea in Informatica presso lβUniversitΓ di Torino, A.A. 2022-23 (caricati sul repository GitHub del Team Studentesco Informatica).