Basi di dati elementi

Espressioni complesse

Di seguito alcuni esempi complessi di algebra relazionale, in cui devono essere utilizzati più operatori, elementari e derivati, in una stessa espressione. Utilizziamo a titolo d’esempio la solita base di dati, rappresentata attraverso il modello relazionale:

Esempio1

Estrarre la matricola degli studenti che hanno preso almeno un voto superiore a 28 e non sono mai scesi sotto il 25.

Vengono sottratti a tutti gli studenti che hanno preso un voto maggiore o uguale a 28, tutti quelli che hanno preso un voto inferiore a 25.

Esempio2

Estrarre il nome degli studenti che non hanno mai preso meno di 28.

Nell’ ultima parte della soluzione vengono trovate tutte le matricole degli studenti che hanno preso un voto minore di 28. Queste matricole vengono sottratte alle matricole di tutti gli studenti che hanno sostenuto esami. Rimangono quindi le matricole degli studenti che non hanno mai preso un voto minore di 28. Per trovare il nome di queste matricole viene fatto un join con la tabella STUDENTE.

Esempio3

Estrarre il nome degli studenti che hanno sostenuto “informatica” e “matematica” lo stesso giorno.

Viene inizialmente fatto un join (seconda riga) tra la tabella ESAME e le tuple della tabella corso che hanno come istanza dell’ attributo Titolo la parola “informatica”. Facendo cosi si ottiene una tabella che contiene tutti gli studenti che hanno fatto l’ esame di informatica (oltre a tutti gli attributi di ESAME e CORSO). Nell’ ultima riga viene creata analogamente una tabella che contiene gli studenti che hanno fatto matematica. Ne vengono proiettati gli attributi Matr e Data e vengono ridenominati in MatrMat e DataMat. La relazione cosi ottenuta (formata da i due attributi MatrMat, DataMat) viene posta in join con la tabella degli studenti di informatica. Viene posta la condizione di join: Matr = MatrMat e Data = DataMat in modo da ottenere solo quelli studenti che hanno dato entrambi gli esami e nella stessa data. Il nome di questi studenti è però contenuto nella tabella STUDENTE, e quindi viene fatto un ulteriore join (la prima riga) proprio con la tabella STUDENTI, per ottenere i nomi degli studenti in questione.

Esempio4

Estrarre l’ultimo esame di ciascuno studente.

Nella seconda parte di questo esempio viene fatto un join della tabella ESAME con se stessa, e piu precisamente con una tabella ESAME identica (sia come schema che come istanza) con la differenza che gli attributi matr e data vengono rinominati in matrnew e datanew. La condizione di join è Matr = MatrNew e Data < DataNew. Otteniamo cosi una tabella in cui compiano tutti gli esami, che non sono l'ultimo esame svolto da uno studente. A questo punto non rimane che sottrare all'elenco di tutti gli esami dati l'insieme di tutti gli sami che non sono gli ultimi, ottenendo coi gli ultimo esame dato per ogni studente.























































Tutto quanto riportato in questa pagina è a puro scopo informativo personale. Se non ti trovi in accordo con quanto riportato nella pagina, vuoi fare delle precisazioni, vuoi fare delle aggiunte o hai delle proposte e dei consigli da dare, puoi farlo mandando un email. Ogni indicazione è fondamentale per la continua crescita del sito.