Corsi di Laurea in Biotecnologie
(primo anno interfacoltà)
Corso integrato di Matematica,
Informatica e Statistica
Informatica di base
Linea 1
Daniela Besozzi
Dipartimento di Informatica e Comunicazione
Università degli Studi di Milano
Settima lezione:
Introduzione alle basi di dati
(Capitoli 12 e 13)
Informatica di base – Linea 1
2
Prima parte
Cosa abbiamo fatto e cosa faremo
Informatica di base – Linea 1
3
Abbiamo visto: i fogli di calcolo
• Informazione rappresentata in forma tabulare
• In ogni cella posso mettere il tipo di dati che
desidero
• Il formato dei dati è descritto a livello di cella:
– ricordate (dal laboratorio) come si cambia il
formato di una cella?
Informatica di base – Linea 1
4
Oggi studieremo le basi di dati (DB)
• Le basi di dati (database, in inglese) servono
per organizzare e memorizzare le informazioni
in modo strutturato:
– e poterle poi rielaborare in modo automatico
• Hanno alcuni aspetti in comune con i fogli di
calcolo:
– gestiscono tipi diversi di informazione
– visualizzano l’informazione in forma tabulare
Informatica di base – Linea 1
5
Fogli di calcolo e DB: differenze
• Nonostante abbiano finalità e metodi di
visualizzazione simili, i fogli di calcolo e i DB
sono sostanzialmente differenti
• I DB strutturano “maggiormente” l’informazione:
– vediamo tra poco cosa vuol dire
• I DB sono utilizzati principalmente per
memorizzare grandi quantità di informazione:
– non tanto per elaborare automaticamente
l’informazione
Informatica di base – Linea 1
6
La logica booleana
• Per poter capire i DB, dobbiamo imparare le
nozioni della logica booleana:
– è utilizzata in diversi ambiti informatici
– in realtà l’abbiamo già vista:
• nei circuiti elettronici del processore
• nelle funzioni avanzate dei motori di ricerca per
Internet
Informatica di base – Linea 1
7
Seconda parte
La logica booleana
Informatica di base – Linea 1
8
La logica booleana
• Il nostro scopo: definire una “espressione
logica” e verificare il suo “valore di verità”:
– cioè, l’espressione è vera o falsa?
• Ogni espressione logica è costituita da un
insieme di operatori e di operandi:
– gli operandi possono assumere solo valori binari:
• vero o falso
• 0o1
– ogni operatore può essere applicato ad uno o due
operandi
Informatica di base – Linea 1
9
Gli operatori booleani
• Operatori con due operandi:
– AND: restituisce il valore “vero” solo se entrambi
gli operandi sono veri
– OR: restituisce il valore “vero” se almeno uno dei
due operandi è vero
• Operatore con un solo operando:
– NOT: restituisce il valore “vero” se il valore
dell’operando è falso; se il valore dell’operando è
vero, allora restituisce il valore “falso”
Informatica di base – Linea 1
10
Tavole di verità
• Ogni operatore da solo definisce un’espressione
logica:
• “a AND b”, “a OR b”, “NOT a” sono tre espressioni
• il valore di verità di ogni espressione dipende dai
valori degli operandi a e b  tavola di verità
AND
OR
NOT
a
b
a AND b
a
b
a OR b
a
NOT a
VERO
VERO
VERO
VERO
VERO
VERO
VERO
FALSO
VERO
FALSO
FALSO
VERO
FALSO
VERO
FALSO
VERO
FALSO
VERO
FALSO
FALSO
VERO
VERO
FALSO
FALSO
FALSO
FALSO
FALSO
FALSO
11
Espressioni booleane
• Così come è possibile comporre le operazioni
algebriche (somma, prodotto, …), è possibile
comporre anche le operazioni booleane
– Esempio: a AND (b OR (NOT c))
• a, b, c sono singoli operandi oppure intere proposizioni,
ognuna delle quali può assumere valore vero o falso
– Esempio di proposizioni (vere o false?):
• a = “il triangolo è una figura geometrica con tre lati”
• b = “3+2 = 7”
• c = “4 è un numero dispari”
– l’espressione “a AND (b OR (NOT c))” è vera o falsa?
Informatica di base – Linea 1
12
Terza parte
Introduzione alle basi di dati:
le entità
Informatica di base – Linea 1
13
Cosa può essere rappresentato
nei DB?
• Nei DB è possibile rappresentare qualunque
entità che sia rappresentabile su un computer
– Es: una casa, una persona, ecc.
• Per rappresentare un’entità, si identificano le
sue caratteristiche, dette attributi
– in particolare, si identificano gli attributi dell’entità
che sono necessari agli scopi di uno specifico
contesto applicativo
Informatica di base – Linea 1
14
Entità e attributi: un esempio
• Es: attributi dell’entità “appartamento”
– Applicazione “agenzia immobiliare”: superficie
commerciale, piano, numero di stanze, indirizzo,
box, ecc.
– Applicazione “catasto”: indirizzo, numero piantina
catastale, valore catastale, ecc.
Informatica di base – Linea 1
15
Come si rappresentano gli attributi
• Gli attributi hanno un nome e un dominio
– Attenzione! Non un “valore”, come scritto nel libro
di testo
– Il dominio definisce il tipo di valori che possono
essere assunti per quell’attributo
– Es. entità “appartamento”:
• attributo con nome “indirizzo”: il dominio è un testo
• attributo con nome “numero di stanze”: il dominio è un
numero intero
Informatica di base – Linea 1
16
Distinzione tra dati e metadati
• Il dominio è un metadato:
– informazione che descrive l’informazione
• nei fogli di calcolo: il formato della cella è un metadato
che descrive i dati della cella
• I metadati definiscono il tipo di informazione
che può essere memorizzato in un DB
• I dati invece sono gli specifici valori inseriti per
gli attributi
– perciò, i metadati specificano il tipo di dati
contenuti nel DB, ma non i dati stessi
Informatica di base – Linea 1
17
Dati e metadati: esempio
• Entità: “appartamento”
• Attributi:
– “superficie commerciale”  dominio: numero;
dato: 100
– “piano”  dominio: numero; dato: 4
– “numero di stanze”  dominio: numero; dato: 5
– “indirizzo”  dominio: testo; dato: Via Roma, 16
– “box”  dominio: booleano (“sì” o “no”); dato: si
Informatica di base – Linea 1
18
Tabelle e istanze
• Per ogni entità, i dati dei vari attributi vengono
memorizzati in una tabella:
• il nome della tabella corrisponde all’entità
• i diversi attributi corrispondono alle colonne della tabella
• ogni riga corrisponde ad una entità specifica
• Uno specifico insieme di dati in una tabella viene
detto istanza
Tabella: appartamenti
Superficie
Piano
Stanze
Indirizzo
Box
100
4
4
Via Rossi, 5
No
50
4
2
Via Verdi, 4
Sì
150
8
7
Via Bianchi, 9
Sì
19
Atomicità degli attributi
• Gli attributi devono contenere dati che non
necessitano mai di essere scomposti
• Esempio. Per l’entità “persona”, abbiamo due
possibilità:
– attributo “nome completo” (“Mario Rossi”)
– attributo “nome” e attributo “cognome” (“Mario”, “Rossi”)
• Che differenza c’è?
– se il nome e il cognome si trattano sempre assieme, va
bene anche “nome completo”, altrimenti la separazione
degli attributi in “nome” e “cognome” è indispensabile
Informatica di base – Linea 1
20
Unicità delle entità
• Due entità possono avere lo stesso valore per
uno o più attributi:
– es: due appartamenti possono essere allo stesso
piano
• Se due entità hanno lo stesso valore per tutti
gli attributi, allora sono la stessa entità
• In pratica: non possono esistere nel DB due
entità con gli stessi valori per tutti gli attributi
– cioè, in ogni tabella di un DB non possono esistere
delle righe identiche
Informatica di base – Linea 1
21
Chiavi candidate
• Abbiamo appena detto che in un DB non
possono esistere due entità con gli stessi valori
per tutti gli attributi. Quindi:
– deve esistere almeno un insieme di attributi i cui
valori non sono ripetuti in due entità diverse
• ad esempio, l’insieme di tutti gli attributi
– ognuno di questi insiemi identifica univocamente
un’entità, cioè permette di distinguere entità diverse
• Un insieme di attributi che identifica in modo
univoco ogni entità è detto chiave candidata
Informatica di base – Linea 1
22
Chiavi candidate: esempio
• Entità “persona”, attributi:
– nome, cognome, data di nascita, luogo di nascita, codice
fiscale
• Entità “persona”, chiavi candidate:
– Nome, cognome, data di nascita, luogo di nascita, codice
fiscale
• l’insieme di tutti gli attributi è sempre una chiave candidata!
– Codice fiscale
• insieme minimo di attributi che identifica una chiave candidata
– Codice fiscale con un qualunque altro insieme di attributi
– Nome, cognome, data di nascita, luogo di nascita
• in molti contesti applicativi può essere considerata una chiave
candidata
Informatica di base – Linea 1
23
Chiave primaria
• Tra tutte le chiavi candidate, ne viene scelta
una che svolge il ruolo di chiave primaria
• La chiave primaria viene utilizzata per
identificare in modo univoco e definitivo tutte
le righe in una tabella:
– cioè, per distinguere tutte le entità fra loro
• Esempio di chiave primaria:
– “codice fiscale” è una buona scelta
– “nome”, “cognome” non è una buona scelta
• perché no?
Informatica di base – Linea 1
24
Quarta parte
Le operazioni sulle tabelle
Informatica di base – Linea 1
25
Il formalismo dei DB
• I DB sono basati su solidi risultati teorici
• E’ possibile definire 5 operazioni sulle tabelle,
analoghe alle operazioni algebriche:
– selezione, proiezione, unione, differenza, prodotto
– si applicano a una o più tabelle, e restituiscono
come risultato una tabella
– noi vediamo soltanto 3 operazioni, quelle più utili
nella pratica
Informatica di base – Linea 1
26
1. Selezione
• Permette di selezionare alcune righe da una
tabella
• Come si fa? Si specifica una condizione (o
“test”) e una tabella di input
• Il risultato è dato da una tabella che ha gli
stessi attributi della tabella in input, e che
contiene solo le righe (prese dalla tabella
input) in cui la condizione è verificata
– la condizione viene valutata per ogni riga
Informatica di base – Linea 1
27
Selezione, esempio
Tabella: appartamenti
Superficie
Piano
Stanze
Indirizzo
Box
100
4
4
Via Rossi, 5
No
50
4
2
Via Verdi, 4
Sì
150
8
7
Via Bianchi, 9
Sì
select Piano=4 from appartamenti
Superficie
Piano
Stanze
Indirizzo
Box
100
4
4
Via Rossi, 5
No
50
4
2
Via Verdi, 4
Sì
Informatica di base – Linea 1
28
Combinazione di condizioni:
la logica booleana
• E se volessimo esprimere più condizioni, cioè
sfruttare i valori di più attributi?
– usiamo la logica booleana
• Es: “è al quarto piano e non ha il box”
– select Piano=4 AND Box=“no” from appartamenti
• Es: “è al quarto piano e non ha il box, oppure
è all’ottavo piano e ha il box”
– select (Piano = 4 AND Box=“no”) OR (Piano=8 AND
Box = “Sì”) from appartamenti
Informatica di base – Linea 1
29
2. Proiezione
• Permette di scegliere quali attributi di una
tabella visualizzare
• Come si fa? Si specificano una tabella in input
e una lista di attributi di quella tabella
• Il risultato è una tabella che ha solo
quell’insieme di attributi, ed è costituita da
tutte le righe della tabella in input
– in pratica, la proiezione “estrae” delle colonne
dalla tabella in input
Informatica di base – Linea 1
30
Proiezione, esempio
Tabella: appartamenti
Superficie
Piano
Stanze
Indirizzo
Box
100
4
4
Via Rossi, 5
No
50
4
2
Via Verdi, 4
Sì
150
8
7
Via Bianchi, 9
Sì
project Indirizzo, Box from appartamenti
Indirizzo
Box
Via Rossi, 5
No
Via Verdi, 4
Sì
Via Bianchi, 9
Sì
Informatica di base – Linea 1
31
3. Prodotto
• Si applica ad una coppia di tabelle in input
• Restituisce una tabella che contiene tutti gli
attributi delle due tabelle in input e tutte le
combinazioni delle righe delle due tabelle in
input
– funziona come il prodotto cartesiano fra due
insiemi:
{a, b} x {c, d, e} = {(a, c), (a, d), (a, e), (b, c), (b, d),
(b, e)}
Informatica di base – Linea 1
32
Il prodotto: esempio
Tabella: Bambini
Tabella: Giochi
Nome
Anni
Genere
Gioco
Colore
GiocoDa
Andrea
2
Maschio
Macchinina
blu
Maschio
Luca
3
Maschio
Bambola
rosa
Femmina
Anna
4
Femmina
Bambini x Giochi
Nome
Anni
Genere
Gioco
Colore
GiocoDa
Andrea
2
Maschio
Macchinina
blu
Maschio
Andrea
2
Maschio
Bambola
rosa
Femmina
Luca
3
Maschio
Macchinina
blu
Maschio
Luca
3
Maschio
Bambola
rosa
Femmina
Anna
4
Femmina
Macchinina
blu
Maschio
Anna
4
Femmina
Bambola
rosa
Femmina
33
Composizione di operazioni
• E’ possibile combinare le operazioni sulle
tabelle, in modo da utilizzare il risultato di una
operazione come operando per una nuova
operazione:
– analogo a 5 + (2 * 3): prima svolgiamo (2*3) e
otteniamo un numero che poi usiamo come
operando da sommare a 5
Informatica di base – Linea 1
34
Composizione di operazioni,
esempio
Tabella: appartamenti
Superficie
Piano
Stanze
Indirizzo
Box
100
4
4
Via Rossi, 5
No
50
4
2
Via Verdi, 4
Sì
150
8
7
Via Bianchi, 9
Sì
project Superficie, Piano from
(select Stanze>3 from appartamenti)
Superficie
Piano
100
4
150
8
Informatica di base – Linea 1
35
Un’altra operazione utile: il join
• E’ molto usata, quindi prende un nome
specifico
• E’ una forma di composizione:
– applica una selezione ad un prodotto di tabelle
(andando a vedere se c’è una corrispondenza fra i
valori di alcuni attributi)
• L’idea è: fai il prodotto di due tabelle ma non
restituire tutte le combinazioni delle righe,
prendi solo quelle per cui è verificata una
certa condizione
Informatica di base – Linea 1
36
Il join naturale
• Si fa il prodotto fra due tabelle A e B, e si
selezionano solo le righe per le quali il valore
di un attributo (specificato) di A è uguale al
valore di un attributo (specificato) di B
– cioè, le righe in cui esiste una corrispondenza fra
la tabella A e la tabella B rispetto al valore degli
attributi che abbiamo specificato
Informatica di base – Linea 1
37
Join naturale, esempio
Tabella: Bambini
Tabella: Giochi
Nome
Anni
Genere
Gioco
Colore
GiocoDa
Andrea
2
Maschio
Macchinina
blu
Maschio
Luca
3
Maschio
Bambola
rosa
Femmina
Anna
4
Femmina
join Bambini, Giochi on Bambini.genere = Giochi.GiocoDa
Nome
Anni
Genere
Gioco
Colore
GiocoDa
Andrea
2
Maschio
Macchinina
blu
Maschio
Luca
3
Maschio
Macchinina
blu
Maschio
Anna
4
Femmina
Bambola
rosa
Femmina
Domanda: perché questa riga non fa parte della tabella ottenuta con il join?
Anna
4
Femmina Macchinina
blu
Maschio
38
Quinta parte
Principi di progettazione di DB
Informatica di base – Linea 1
39
La ridondanza dei dati
• Molti contesti applicativi portano ad avere,
come soluzione naturale, la duplicazione di
dati tra diverse tabelle
Tabella: Studenti
Nome
Cognome
Matricola
Indirizzo
Andrea
Bianchi
111111
Via Roma, 1
Beatrice
Verdi
222222
Corso Milano, 2
Carlo
Rossi
333333
Piazza Genova, 3
Tabella: Libri prestati
Libro
Autore
Nome
Cognome
Indirizzo
Fluency
Snyder
Andrea
Bianchi
Via Roma, 1
La Relatività
Einstein
Beatrice
Verdi
Corso Milano, 2
40
I problemi derivanti dalla
ridondanza
• Spreco di spazio di memorizzazione:
– le stesse informazioni vengono memorizzate due volte:
sarà necessario utilizzare il doppio dello spazio per
memorizzare quei dati
• Inconsistenza dei dati:
– se un dato cambia, deve essere cambiato in tutte le tabelle
dove quel dato è presente
– è difficile verificare automaticamente che questa
operazione venga realizzata correttamente
– se non viene realizzata correttamente, i dati diventano
inconsistenti
Informatica di base – Linea 1
41
Esempio di inconsistenza dei dati
• Beatrice Verdi cambia indirizzo e comunica la
modifica solo alla segreteria (ma non alla
biblioteca)
Tabella: Studenti
Nome
Cognome
Matricola
Indirizzo
Andrea
Bianchi
111111
Via Roma, 1
Beatrice
Verdi
222222
Viale Monza, 4
Carlo
Rossi
333333
Piazza Genova, 3
Tabella: Libri prestati
Libro
Autore
Nome
Cognome
Indirizzo
Fluency
Snyder
Andrea
Bianchi
Via Roma, 1
La Relatività
Einstein
Beatrice
Verdi
Corso Milano, 2
42
“mmm, non capisco dove
vuoi andare a parare”
• “Va bene, ho capito che la
ridondanza è tanto brutta, però
l’informazione dell’indirizzo
serve in entrambe le tabelle,
quindi non posso fare a meno di
duplicarla”
Informatica di base – Linea 1
43
La soluzione: l’intuizione
• Nella tabella della biblioteca non memorizzo
tutte le informazioni di uno studente, ma solo
la sua matricola
Tabella: Studenti
Nome
Cognome
Matricola
Indirizzo
Andrea
Bianchi
111111
Via Roma, 1
Beatrice
Verdi
222222
Corso Milano, 2
Carlo
Rossi
333333
Piazza Genova, 3
Tabella: Libri
Titolo
Autore
Matricola
Fluency
Snyder
111111
La Relatività
Einstein
222222
44
La soluzione: cosa abbiamo fatto
• Abbiamo scelto l’insieme di attributi
{Matricola} come chiave primaria della tabella
Studenti
– è un identificatore unico per tutte le righe
• Nella tabella Libri usiamo un riferimento alla
matricola dello studente che ha preso in
prestito il libro:
– l’insieme di attributi {Matricola} prende il nome di
chiave esterna
Informatica di base – Linea 1
45
La chiave esterna
• Una chiave esterna è un insieme di attributi di
una tabella che fanno riferimento alla chiave
primaria di un’altra tabella
– la chiave esterna permette di reperire le
informazioni da una tabella ad un’altra in modo
coerente, senza dover replicare tutte le
informazioni di una tabella in altre tabelle
– si evitano sia la ridondanza che l’inconsistenza
Informatica di base – Linea 1
46
“Non mi stai convincendo”
• “Ci sono almeno due cose che non mi vanno
bene di quello che ci hai appena detto:
1. non hai tolto del tutto la ridondanza dei dati, in
quanto la matricola viene sempre ripetuta due
volte
2. nella tabella Libri non ci sono più i dettagli dello
studente ma solo la matricola: se volessi sapere
come si chiama chi ha preso un certo libro, come
faccio?”
Informatica di base – Linea 1
47
1 – la ridondanza
• E’ vero che la chiave esterna ripete i valori
della chiave primaria
– nel nostro esempio: Libri.Matricola ripete i valori
di Studenti.Matricola
Informatica di base – Linea 1
48
1 – la ridondanza (cont)
• Tuttavia:
– abbiamo scelto una chiave primaria che richiede
poco spazio per essere memorizzata (dunque si
spreca poco spazio)
– abbiamo aggiunto metadati (abbiamo specificato
che Libri.Matricola è una chiave esterna che si
riferisce a Studenti.Matricola), quindi possiamo
aggiornare automaticamente i dati qualora un
valore di Studenti.Matricola o di Libri.Matricola
venisse aggiornato
Informatica di base – Linea 1
49
2 - la completezza dei dati
• Come fa la libreria a sapere il nome degli
studenti a cui i libri sono stati prestati?
• Facile! Basta applicare un’operazione tra
tabelle:
– quale?
Informatica di base – Linea 1
50
2 - la completezza dei dati (cont)
• Usiamo il join naturale: LibriStudenti = join Libri,
Studenti on Studenti.Matricola = Libri.Matricola
Tabella: Libri
Tabella: Studenti
Titolo
Autore
Matricola
Nome
Cognome
Matricola
Indirizzo
Fluency
Snyder
111111
Andrea
Bianchi
111111
Via Roma, 1
La Relatività
Einstein
222222
Beatrice
Verdi
222222
Corso Milano, 2
Carlo
Rossi
333333
Piazza Genova, 3
Tabella: LibriStudenti
Titolo
Autore
Libri.Matri Nome
cola
Cognome
Studenti.M Indirizzo
atricola
Fluency
Snyder
111111
Andrea
Bianchi
111111
Via Roma, 1
La Relatività
Einstein
222222
Beatrice
Verdi
222222
Corso
Milano, 2
Tabelle fisiche e tabelle logiche
• Tabelle fisiche: le tabelle i cui dati vengono
memorizzati dal DB
– es: Libri, Studenti
• Tabelle logiche: le tabelle necessarie per ogni
utilizzo specifico del DB che vengono derivate
attraverso operazioni su tabelle
– es: LibriStudenti
– le tabelle logiche vengono anche dette “viste”
– un singolo DB può dare origine a moltissime viste
diverse
Informatica di base – Linea 1
52
Relazioni tra tabelle
• Una relazione tra tabelle è una corrispondenza tra gli
attributi di una tabella e gli attributi di un’altra tabella
– Es: Studenti e Libri sono in relazione, in quanto Libri.Matricola
è una chiave esterna che fa riferimento a Studenti.Matricola
– le due tabelle sono collegate dalla relazione che si chiama
“inPrestitoA”
Studente
Libro
Titolo
Autore
inPrestitoA
Nome
Cognome
Matricola
Indirizzo
– diagramma entità-relazione: è uno schema usato per
rappresentare le entità (con i loro attributi) e le loro relazioni
Informatica di base – Linea 1
53
Sesta parte
Conclusioni
“Non ne posso più! Una lezione davvero infinita…”
Informatica di base – Linea 1
54
Riepilogo: la logica booleana
• Rende formali concetti intuitivi come “E”, “O”,
“NO”
• Permette di comporre espressioni complesse
in modo simile all’algebra
• Basta fare pochi esercizi per prendere
confidenza: fateli!
Informatica di base – Linea 1
55
Riepilogo: le basi di dati
• Possono sembrare simili ai fogli di calcolo ma
in realtà sono molto differenti
• Forniscono una struttura per rappresentare
qualunque entità:
– attraverso l’utilizzo dei metadati che descrivono la
struttura dell’informazione
Informatica di base – Linea 1
56
Riepilogo: le operazioni
sulle tabelle
• Permettono di generare nuove tabelle a
partire da tabelle esistenti
• Sono operazioni abbastanza semplici ed
intuitive
– (anche il prodotto?)
• I concetto di join e di chiave primaria ci
consentono di:
– definire le relazioni tra tabelle
– effettuare le ricerche in una base di dati
Informatica di base – Linea 1
57
La struttura dei DB
• Abbiamo visto come vengono generalmente
strutturati i DB:
– è improbabile che vi troviate a dover creare DB (di
grandi dimensioni)
– tuttavia, comprendere i principi di strutturazione
dei DB è indispensabile per poterli utilizzare
correttamente e per poter estrarre informazioni da
essi
– in laboratorio, sfrutteremo le conoscenze teoriche
di questa lezione per capire come sia possibile
estrarre dei dati da un DB
Informatica di base – Linea 1
58
Esercizi, logica booleana
• Considera le seguenti proposizioni
e calcola il valore di verità
dell’espressione che segue:
– a = “un quadrato ha un lato più lungo degli altri”
– b = “la popolazione Italiana nell’anno 2000 era di 10
abitanti”
– c = “5-2=3”
NOT ((a AND (b OR c)) AND ((NOT c) OR (NOT b)))
Informatica di base – Linea 1
59
Esercizi, logica booleana
• Considera le proposizioni proposte
nella slide precedente e calcola il
valore di verità delle seguenti espressioni:
– a AND (NOT b)
– a OR (b AND c)
– (a AND b) or (b AND c)
– a AND (NOT A)
– a OR (NOT a)
– (a AND (NOT b)) OR (c AND (a OR b))
Informatica di base – Linea 1
60
Esercizi, operazioni
su tabelle
Usando le tabelle riportate in questa slide, calcola le
seguenti operazioni:
• project Nome, Anno from Studenti
• select Ruolo = “Ricercatore” from Professori
• Studenti x Professori
Tabella: Studenti
Tabella: Professori
Nome
Cognome Anno
Nome
Cognome
Ruolo
Mario
Bianchi
2
Andrea
Blu
Ricercatore
Anna
Verdi
2
Carla
Viola
Ordinario
Lucia
Rossi
1
Informatica di base – Linea 1
61
Scarica

attributi - Università degli Studi di Milano