Estratto del documento

L'algebra relazionale

Operatori relazionali

Gli operatori relazionali agiscono su una o più relazioni per ottenere una nuova relazione (interrogazioni).

  • Selezione
  • Proiezione
  • Congiunzione

Grado e cardinalità della relazione

  • Grado: numero delle colonne della tabella.
  • Cardinalità: numero delle righe della tabella.

Selezione

La selezione (si indica con Omega e a pedice si indicano gli elementi della cardinalità) seleziona alcune righe della relazione. Genera una nuova relazione costituita solo dalle tuple della relazione di partenza che soddisfano una determinata condizione; vengono cioè selezionate le righe con i valori degli attributi corrispondenti alla condizione prefissata.

Relazione risultante:

  • Grado: uguale.
  • Cardinalità: minore o uguale a quella di partenza (di solito minore).

In Access si farà: ATTENZIONE: in questo caso la spunta in Mostra di “Città” va tolta perché questo campo è già mostrato nel campo “Clienti.*”.

Proiezione

La proiezione (si indica con Pigreco e a pedice si indicano gli elementi del grado) produce una relazione con un numero inferiore di colonne. Genera una nuova relazione estraendo dalla tabella iniziale una o più colonne corrispondenti agli attributi prefissati.

Relazione risultante:

  • Grado: minore o uguale.
  • Cardinalità: minore o uguale a quella di partenza (MINIMO 1).

Dopodiché si eliminano tutti i doppioni: il risultato sarà una tabella con grado 2 e cardinalità 7.

Se invece volessi eseguire una proiezione sugli attributi Cognome e Indirizzo: Si eliminano tutti i doppioni: il risultato sarà una tabella con grado 2 e cardinalità 6.

In Access si farà: Si vuole mostrare l’elenco dei nomi e del telefono dei clienti.

Congiunzione

La congiunzione (join) serve a combinare più tabelle aventi uno o più attributi in comune, generando una nuova tabella (relazione) che contiene le righe della prima e della seconda tabella, che possono essere combinate secondo i valori uguali degli attributi comuni.

Relazione risultante:

  • Grado: uguale alla somma dei gradi delle relazioni di partenza meno il numero degli attributi in comune.
  • Cardinalità: le righe che si combinano (non prevedibile a priori, in quanto si ottengono solo le righe che possono essere combinate).

Come si fa? Ci si posiziona con un righello sulla prima riga di Studente e di Corso. Ci si pone la domanda: “la Matricola di Studente è uguale alla Matricola di Corso?” Se la risposta è SI, si aggiungono i dati alla nuova tabella. Un metodo alternativo è: Fare il prodotto cartesiano delle due tabelle. Ci si colloca su ogni riga e verificare che Matricola=Codice. Se viene soddisfatta si mantengono le righe. Se non viene soddisfatta allora si eliminano le righe. Per finire si eliminano i gradi che si ripetono (Codice).

In Access si farà: Si vuole mostrare I dati dei clienti e dati degli ordini. ATTENZIONE: in Ordini non si può mettere l’* perché altrimenti IDCliente si ripeterebbe due volte. Perciò devo specificare i campi da mettere nella nuova tabella tranne la chiave esterna (IDCliente).

Self-join

È la congiunzione della tabella con sé stessa. Esempio:

  • Cittadini e capifamiglia nell’anagrafe.
  • Dipendenti e dirigenti di un’azienda. Con questa tabella (Lavoratori) si identificano i lavoratori e i loro rispettivi capi.

Se io volessi individuare per ogni lavoratore qual è il suo capo dovrei:

  • Copiare la tabella iniziale con un alias che lo distingui dalla prima tabella (D.Lavoratori).
  • Creare la relazione con Lavoratori.Capo = D.Lavoratori.D.Codice.
  • In questo modo si estrarranno le informazioni di ogni dipendente e il suo rispettivo capo.

Tipi di congiunzione (join)

  • INNER JOIN o EQUI JOIN: corrispondenza dei valori uguali per attributi comuni nelle due tabelle (esempio precedente).
  • JOIN ESTERNO (outer join)
    • LEFT JOIN: tutte le righe della prima tabella combinate con quelle della seconda. Compresi i valori della prima tabella che non si combinano (valore nullo).
    • RIGHT JOIN: tutte le righe della seconda tabella combinate con quelle della prima. Compresi i valori della seconda tabella che non si combinano (valore nullo).

Altri operatori

Per tabelle con struttura omogenea, cioè righe con lo stesso numero di attributi, dello stesso tipo e nello stesso ordine:

  • Unione
  • Intersezione
  • Differenza

Esempio: Per poter eseguire l’unione è necessario che l’ordine dei campi delle tabelle siano uguali (Cognome, Nome). Con l’unione si otterrà l’elenco dei clienti (senza duplicati). Si avrà una cardinalità pari a 5. Con l’intersezione si otterrà l’elenco dei clienti che si servono sia nella macelleria che nella cartoleria. Cardinalità pari a 1. Con la differenza Macelleria - Cartoleria si avranno tutti i clienti che si servono presso la macelleria, ma non presso la cartoleria (si otterrà che Mauri e Zeni non si servono in cartoleria).

Interrogazioni con uso di più operatori

Esercizio 1

Facoltà (CodFac, Descrizione, Città) Studenti (Matricola, Cognome, Nome, Indirizzo, CodFac) Mostrare il Cognome, Nome e Descrizione della facoltà per gli studenti che risiedono a Milano.

  • Quali campi devo mostrare? = Cognome, Nome, Descrizione
  • Dove devo prendere questi campi? Cognome in Studenti Nome in Studenti Descrizione in Facoltà. In questo caso non c’è confusione su dove devo prendere i campi in quanto non ci sono più campi uguali.
  • Ci sono delle condizioni? Se SI, devo porre delle condizioni. Studenti che risiedono a Milano -> Studenti.Indirizzo = Milano
  • I campi su cui faccio la proiezione sono tutti in un’unica tabella? Se NO, devo collegare le tabelle. Si prende la chiave esterna di una tabella e si collega alla chiave primaria dell’altra tabella. Studenti.CodFac = Facoltà.CodFac

Esercizio 2

Ogni rivista può essere oggetto di uno o più abbonamenti. Ogni abbonamento deve avere come oggetto una sola rivista. Ogni abbonamento deve essere sottoscritto da un solo abbonato.

Anteprima
Vedrai una selezione di 6 pagine su 24
Algebra relazionale e linguaggio SQL Pag. 1 Algebra relazionale e linguaggio SQL Pag. 2
Anteprima di 6 pagg. su 24.
Scarica il documento per vederlo tutto.
Algebra relazionale e linguaggio SQL Pag. 6
Anteprima di 6 pagg. su 24.
Scarica il documento per vederlo tutto.
Algebra relazionale e linguaggio SQL Pag. 11
Anteprima di 6 pagg. su 24.
Scarica il documento per vederlo tutto.
Algebra relazionale e linguaggio SQL Pag. 16
Anteprima di 6 pagg. su 24.
Scarica il documento per vederlo tutto.
Algebra relazionale e linguaggio SQL Pag. 21
1 su 24
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher MurielGinevra di informazioni apprese con la frequenza delle lezioni di Idoneità di informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Bergamo o del prof Leporini Roberto.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community