• Non ci sono risultati.

Sistemi per il recupero delle informazioni

N/A
N/A
Protected

Academic year: 2021

Condividi "Sistemi per il recupero delle informazioni"

Copied!
153
0
0

Testo completo

(1)

Sistemi per il recupero delle informazioni

PARTE - V

MODELLO RELAZIONALE DEI DATI

(2)

PROGETTAZIONE

Ricordiamo le fasi della progettazione di una Base di Dati

(3)

ESEMPIO

(4)

ESEMPIO

VIENE TRADOTTO NELLO SCHEMA

MUSEI (NomeM, Città, Indirizzo, Direttore) ARTISTI (NomeA, Nazionalità, DataN, DataM) OPERE (Codice, Anno, Titolo, NomeM*, NomeA*) PERSONAGGI (Personaggio, Codice*)

DIPINTI (Codice*, Tipo, Larghezza, Altezza) SCULTURE (Codice*, Materiale, Altezza, Peso)

(5)

Ennupla. È un insieme finito di coppie (Attributo, valore atomico)

Relazione. È un insieme finito (eventualmente vuoto) di ennuple con la stessa struttura.

I campi di un’ennupla sono atomici (numeri, stringhe o il valore NULL).

Un’ennupla si usa per rappresentare entità e la relazione si usa per rappresentare classi di entità.

ENNUPLA E RELAZIONE

I meccanismi per definire una base di dati con il modello relazionale sono solo due:

• l’ennupla

• la relazione.

(6)

TERMINOLOGIA - I

attributo: corrisponde (non sempre) ad un attributo del modello E-R.

Diversamente dal modello E-R, gli attributi sono sempre univoci (ad un sol valore) ed atomici (non composti)

L’ordine degli attributi non è significativo

dominio (di un attributo): è l’insieme dei valori che può assumere un attributo.

chiave primaria di una relazione: un attributo che identifica univocamente le ennuple della relazione. Gli attributi della chiave primaria vengono sottolineati

(7)

TERMINOLOGIA - II

Una relazione si definisce dandole un nome ed elencando fra parentesi tonde il tipo delle sue ennuple. La definizione di una relazione è detta schema della relazione

R(A1:T1, A2:T2,..., An:Tn)

 R è il nome della relazione

 A1, A2,... sono gli attributi della relazione

T1, T2,... sono i tipi degli attributi (interi, reali, booleani, stringhe)

Per semplicità omettiamo la specifica dei tipi, per cui lo schema di relazione è R(A1, A2,...,An)

(8)

TERMINOLOGIA - III

 Lo schema della relazione è la descrizione della struttura di una relazione

 Un’istanza di uno schema di relazione è un insieme finito di ennuple.

osserviamo che tutte le ennuple di una relazione hanno la stessa struttura

 Lo schema relazionale è la descrizione della struttura di una base di dati

 insieme di schemi di relazione

insieme di vincoli

(9)

RELAZIONE E TABELLA

Orario

Insegnamento Docente Aula Ora Analisi matem. I Luigi Neri N1 8:00

Basi di dati Piero Rossi N2 9:45 Chimica Nicola Mori N1 9:45 Fisica I Mario Bruni N1 11:45 Fisica II Mario Bruni N3 9:45 Sistemi inform. Piero Rossi N3 8:00 ORARIO (Insegnamento, Docente, Aula, Ora)

Relazione e tabella sono sinonimi

(10)

SCHEMA

Orario

Insegnamento Docente Aula Ora Analisi matem. I Luigi Neri N1 8:00

Basi di dati Piero Rossi N2 9:45 Chimica Nicola Mori N1 9:45 Fisica I Mario Bruni N1 11:45 Fisica II Mario Bruni N3 9:45 Sistemi inform. Piero Rossi N3 8:00 ORARIO (Insegnamento, Docente, Aula, Ora)

Le colonne della tabella formano lo schema della relazione

(11)

ISTANZE

Orario

Insegnamento Docente Aula Ora Analisi matem. I Luigi Neri N1 8:00

Basi di dati Piero Rossi N2 9:45 Chimica Nicola Mori N1 9:45 Fisica I Mario Bruni N1 11:45 Fisica II Mario Bruni N3 9:45 Sistemi inform. Piero Rossi N3 8:00 ORARIO (Insegnamento, Docente, Aula, Ora)

I contenuti delle righe della tabella formano le istanze della relazione

(12)

Schema di Base di dati

R= {CORSI(Corso, Docente, Aula), AULE(Nome, Edificio, Piano),

CORSISEDI(Corso, Aula, Edificio, Piano) 

(13)

DATABASE

Corso Docente Aula Rossi

Basi di dati DS3 Bruni

Reti N3

Sistemi Neri N3 Bruni

Controlli G

Corsi

Nome Edificio Piano OMI

DS3 Terra

Pincherle

G Primo

OMI

N3 Terra

Aule

CorsiSedi Corso Aula

Reti N3

Sistemi N3 Controlli G

Piano Edificio

OMI Terra Pincherle Primo

OMI Terra

Un database e’ un insieme di tabelle

(14)

CHIAVI ESTERNE

Le associazioni tra i dati sono rappresentate attraverso i valori di opportuni campi, chiamati chiavi esterne, che assumono come valori quelli della chiave primaria di un’altra relazione.

In altre parole una chiave esterna è un attributo (od un insieme di attributi) di una relazione R che assume i valori della chiave primaria di un’altra relazione S.

Serve a rappresentare un’associazione tra R ed S

(15)

ESEMPIO

(16)

ESEMPIO

Il dominio di SiglaCDS* nella relazione STUDENTI coincide col dominio di SiglaCDS nella relazione CDS

Se in una istanza di STUDENTI l’attributo SiglaCDS assume il valore “XYZ”, deve esistere, nella istanza di CDS una ennupla con SiglaCDS = “XYZ”.

Il motivo è ovvio; se una studente è iscritto a “XYZ”, deve esistere il Corso di Studi “XYZ”

Tale proprietà si chiama Vincolo di integrità referenziale, e deve essere sempre soddisfatto da una chiave esterna:

(17)

DA MODELLO A OGGETTI A MODELLO RELAZIONALE

La trasformazione di uno schema a oggetti in uno schema relazionale avviene eseguendo i seguenti passi:

1. rappresentazione delle classi

2. rappresentazione delle associazioni uno a uno e uno a molti;

3. rappresentazione delle associazioni molti a molti o non binarie;

4. rappresentazione delle gerarchie di inclusione;

5. rappresentazione degli attributi multivalore;

6. appiattimento gli attributi composti

(18)

1. Rappresentazione delle classi

Una classe C è rappresentata da una relazione R i cui attributi sono quelli di C

si traduce in

Studenti(Matricola, Nome, AnnoImmatric)

(19)

2. Rappresentazione delle associazioni uno a uno e uno a molti

Come abbiamo già visto nell’esempio degli studenti e dei corsi di studi, le associazioni uno a molti si rappresentano aggiungendo agli attributi della relazione rispetto a cui l’associazione è univoca una chiave esterna che riferisce l’altra relazione.

ESEMPIO: la relazione tra corsi di studi e studenti, essendo univoca rispetto ai corsi di studi, si rappresenta aggiungendo agli studenti una chiave esterna SiglaCDS.

Quando l’associazione è uno ad uno la chiave esterna si aggiunge ad una qualunque delle due relazioni, preferendo quella rispetto a cui l’associazione è totale.

Se l’associazione ha degli attributi, questi vanno aggiunti alla relazione a cui si aggiunge la chiave esterna.

(20)

ESEMPIO

Studenti(Matricola, Nome, AnnoImmatric, Codice*) CorsidiLa(Codice, Nome, Tipo)

la chiave esterna Codice* rappresenta l’associazione è_iscritto N.B. È un grave errore fare il contrario. Lo schema:

Studenti(Matricola, Nome, AnnoImmatric) CorsidiLa(Codice, Nome, Tipo, Matricola*)

rappresenta Corsi di Laurea ai quali può essere iscritto un solo studente!

(21)

3. Rappresentazione delle associazioni molti a molti o non binarie

Un’associazione molti a molti tra due classi si rappresenta aggiungendo allo schema una nuova relazione che contiene due chiavi esterne che riferiscono le due relazioni coinvolte.

precisamente:

se A è un’associazione multivalore da R ad S e da S ad R, A è rappresentata con uno schema di relazione in cui gli attributi sono le chiavi primarie pkR di R e pkS di S.

A (pkR*, pkS*)

Se l’associazione ha degli attributi, questi attributi vengono aggiunti alla nuova relazione, e non vanno a far parte della chiave della nuova relazione.

(22)

ESEMPIO

Una ennupla di Insegna rappresenta una coppia (Corso_di_Lurea, Docente) di oggetti in associazione.

CorsidiLa(Codice,Nome,Facoltà,Tipo) Docenti(CodDoc, Settore)

Insegna(Codice*, CodDoc*)

Il docente identificato dal CodDoc 1592 insegna ai corsi di laurea identificati dai codici Inf, SBC e Mat , il docente identificato dal CodDoc 3014 insegna al corso di laurea identificato dai codici Inf, ecc...

(23)

23

4. Rappresentazione delle gerarchie fra classi Partizionamento orizzontale

Si definiscono tre relazioni RA(XA), RB(XA,XB), RC(XA, XC), dove RA contiene solo gli elementi della classe A che non stanno in nessuna delle sottoclassi, mentre RB ed RC contengono tutti gli elementi di B e di C

NOTA: se le sottoclassi costituiscono una copertura, la relazione RA(XA) non viene definita perché sarebbe sempre vuota.

ESEMPIO: trattandosi di sottoclassi che non soddisfano il vincolo di copertura si definiscono le relazioni Persone con attributi CodFisc, Nome, Telefono, Studenti con attributi CodFisc, Nome, Telefono, Matricola e Facoltà e la relazione Lavoratori con attributi CodFisc, Nome, Telefono, Attività e Reddito. La relazione Persone contiene le informazioni delle persone che non sono né studenti né lavoratori, la relazione Studenti contiene le informazioni degli studenti e la relazione Lavoratori contiene le informazioni dei lavoratori.

Persone(CodFisc, Nome, Telefono) Lavoratori(CodFisc*, Attività, Reddito) Studenti(CodFisc*, Matricola, Facoltà)

(24)

ESEMPIO

Tre schemi indipendenti, uno per ogni classe, contenenti tutti gli attributi di ciascuna classe

Anche con questa soluzione viene ignorata la gerarchia: si perde la superclasse

Si osservi che con nessuna delle tre soluzioni è in generale possibile esprimere i vincoli strutturali della gerarchia, vale a dire i vincoli di disgiunzione e di totalità

(25)

5. Rappresentazione delle proprietà multivalore

Una proprietà multivalore di una classe C si rappresenta eliminando il corrispondente attributo da C e creando una relazione con due attributi: una chiave esterna che fa riferimento alla chiave primaria di C ed un attributo che corrisponde all’attributo multivalore da trasformare.

Un oggetto con chiave primaria K ed in cui l’attributo assume valore A1, ..., An si rappresenta poi inserendo nella nuova relazione n coppie (K, A1), ..., (K,An).

ESEMPIO: si immagini che un utente abbia attributi Codice, Cognome e Telefoni, con Telefoni multivalore.

Applicando la trasformazione, si ottengono le due seguenti relazioni:

Utenti(Codice, Cognome) TelefoniUtenti(Codice*, Telefono)

(26)

ESEMPIO

Film(CodFilm,Titolo,Regista,Anno) Attori(CodFilm*, Attore)

(27)

6. Appiattimento degli attributi composti

Se un attributo A di uno schema di relazione è di tipo strutturato con campi Ai, si sostituisce A con gli attributi Ai.

Se A faceva parte della chiave primaria dello schema di relazione, si sostituisce A con gli attributi Ai nella chiave, e poi si verifica che non esista un sottoinsieme degli attributi della nuova chiave primaria che è esso stesso una chiave.

Sullo schema relazionale ottenuto si ripetono questa trasformazione e la precedente finché esistono schemi di relazioni con proprietà composte e proprietà multivalore.

ESEMPIO: se gli Utenti hanno un attributo strutturato Indirizzo con attributi Via, CAP e Città, applicando la trasformazione alla relazione

Utenti(Codice, Cognome, Indirizzo) si ottiene lo schema di relazione

Utenti(Codice, Cognome, Via, CAP, Città)

(28)

Riassumendo

Le regole di traduzione

Entità: diventano tabelle ed i loro identificatori chiavi primarie

Associazioni 1-1: se obbligatorie si procede come per le 1-N scegliendo il lato in cui includere gli attributi e la chiave esterna; se una opzionale si

includono gli attributi e la chiave esterna sul lato“obbligatorio”; se entrambe opzionali si costruisce una tabella autonoma come per il caso N-N.

Associazioni1-N:gli attributi dell’associazione e la chiave primaria della tabella relativa all’entità dal lato “N” sono inclusi nella tabella relativa all’entità dal lato“1”.

Associazioni N-N: diventano tabelle con chiave primaria formata dall’unione delle chiavi delle entità coinvolte

(29)

Confronto tra modello E-R e modello Relazionale

Nonostante una evidente analogia tra

Classe e Relazione Oggetto e Ennupla

Attributo(E-R) e Attributo(Rel)

sussiste in realtà una significativa differenza tra i concetti nei due modelli

Non sempre una relazione rappresenta una classe: può rappresentare una associazione o un attributo multivalore

Non sempre un’ ennupla rappresenta un oggetto: può rappresentare una coppia di oggetti in associazione o un possibile valore di un attributo multivalore

Non sempre un attributo Rel rappresenta un attributo E-R: può rappresentare un oggetto di un’altra classe (chiave esterna)

(30)

Esercizio

La segreteria di un corso di laurea deve gestire alcune informazioni relative all’orario delle lezioni.

informazioni: aule, corsi, lezioni

le aule sono identificate da un codice, di ogni aula interessa il numero dei posti, l’edificio in cui è situata, se ha o non ha proiettore

alcune aule sono dotate di calcolatori, in questo caso interessa sapere il numero dei pc

i corsi sono identificati da un codice; di ogni corso interessa il nome e il docente

le lezioni sono caratterizzate da un’ora d’inizio, un’ora di fine, un giorno della settimana, il semestre

ogni lezione è tenuta in un’aula e si riferisce ad un corso

(31)
(32)

Informazione incompleta

ll modello relazionale impone ai dati una struttura rigida:

- le informazioni sono rappresentate per mezzo di ennuple

- solo alcuni formati di ennuple sono ammessi: quelli che corrispondono agli schemi di relazione

I dati disponibili possono non corrispondere al formato previsto

Franklin Delano Roosevelt

Nome SecondoNome Cognome

Winston Churchill

Charles De Gaulle

Josip Stalin

Es: PERSONE(Nome, SecondoNome, Cognome)

(33)

Informazione incompleta: soluzioni?

Non conviene (anche se spesso si fa) usare valori del dominio (0, stringa nulla, “99”, ...):

- potrebbero non esistere valori “non utilizzati”

- in fase di utilizzo (nei programmi) sarebbe necessario ogni volta tener conto del “significato” di questi valori

Tecnica rudimentale ma efficace:

- valore nullo: denota l’assenza di un valore del dominio (e non è un valore del dominio)

- si possono (e debbono) imporre restrizioni sulla presenza di valori nulli

(34)

Matricola Cognome Nome Data di nascita

6554 Rossi Mario 05/12/1978

NULL Rossi Maria 01/02/1978

9283 Verdi Luisa 12/11/1979

studenti

Codice Titolo Docente

01 Analisi Mario

02 Chimica NULL

NULL Chimica Verdi

corsi

Studente Voto Corso

NULL 30 NULL

NULL 24 02

9283 28 01

esami

Troppi valori nulli

(35)

Tipi di valore nullo

(almeno) tre casi differenti

valore sconosciuto

valore inesistente

valore senza informazione

Citta’ IndirizzoPrefettura Roma Via Quattro Novembre

Genova NULL

Ovada NULL

NULL Prato

(36)

Vincoli, schemi e istanze

I vincoli corrispondono a proprietà del mondo reale modellato dalla base di dati

interessano a livello di schema (con riferimento cioè a tutte le istanze)

Ad uno schema associamo un insieme di vincoli e consideriamo corrette (valide, ammissibili) le istanze che soddisfano tutti i vincoli

Un'istanza può soddisfare altri vincoli

(37)

La Conoscenza Astratta nel modello Relazionale

Nel modello relazionale si possono esprimere i seguenti vincoli:

Vincolo di chiave

Vincolo di chiave esterna

Tipo di un attributo

Attributo obbligatorio

Vincoli strutturali delle associazioni (non completamente)

(38)

Una base di dati "scorretta"

Studente Voto Lode Corso

32 01

276545

276545 30 e lode 02

787643 27 e lode 03

739430 24 04

Esami

Matricola 276545 787643 787643

Cognome Rossi

Neri Bianchi

Nome Mario Piero

Luca Studenti

787643 787643

32

27 e lode 739430

(39)

Vincolo di integrità

Proprietà che deve essere soddisfatta dalle istanze che rappresentano informazioni corrette per l’applicazione

Un vincolo è una funzione booleana (un predicato): associa ad ogni istanza il valore vero o falso

Perchè?

descrizione più accurata della realtà

contributo alla “qualità dei dati”

utili nella progettazione (vedremo)

usati dai DBMS nella esecuzione delle interrogazioni

(40)

Tipi di vincoli

Vincoli intrarelazionali: coinvolgono una singola relazione del database.

Esempi

- vincoli di ennupla

- vincoli di chiave

- vincoli su valore

Vincoli interrelazionali: coinvolgono diverse relazioni del database.

Esempio: vincoli di integrità referenziale

(41)

Vincoli di ennupla

Esprimono condizioni sui valori di ciascuna ennupla, indipendentemente dalle altre ennuple

Caso particolare:

vincoli di dominio: coinvolgono un solo attributo

Una possibile sintassi:

espressione booleana di atomi che confrontano valori di attributo o espressioni aritmetiche su di essi

(Voto  18) AND (Voto  30)

(Voto = 30) OR NOT (Lode = "e lode")

(42)

Vincoli di ennupla, esempio

Impiegato Rossi

Neri Bruni

Stipendi Lordo

55.000 45.000 47.000

Netto 42.500 35.000 36.000 Ritenute

12.500 10.000 11.000

Lordo = (Ritenute + Netto)

(43)

Importanza delle chiavi

L’esistenza delle chiavi garantisce l’accessibilità a ciascun dato della base di dati

Le chiavi permettono di correlare i dati in relazioni diverse:

il modello relazionale è basato su valori

In presenza di valori nulli, i valori della chiave non permettono

di identificare le ennuple

di realizzare facilmente i riferimenti da altre relazioni

(44)

Chiave primaria

Chiave su cui non sono ammessi nulli

Notazione: sottolineatura

Matricola

78763 65432

Nome

Piero Mario 87654

43289

Mario Cognome

Neri Neri Rossi

Neri Mario

Corso

Ing Mecc Ing Inf Ing Civile

NULL

Nascita

86765 NULL Mario Ing Inf 5/12/78

10/7/79 NULL 3/11/76

5/12/78

(45)

Informazioni in relazioni diverse sono correlate attraverso valori comuni

in particolare, valori delle chiavi (primarie)

le correlazioni debbono essere "coerenti"

Integrità referenziale

(46)

21/11/21

Esempio

Infrazioni Codice 34321

73321 64521 53524

Data 1/2/95 4/3/95 5/4/96 5/2/98

Vigile 3987 3295 3295 9345

Prov Numero MI

TO PR PR

39548K E39548 839548 839548 Matricola

3987 3295 9345

Vigili Cognome

Rossi Neri Neri

Nome Luca Piero Mario

Mori Gino

7543

Auto Prov Numero MI

TO PR

39548K E39548 839548

Cognome Rossi Rossi Neri

Nome Mario Mario Luca

(47)

Matricola 3987 3295 9345

Vigili Cognome

Rossi Neri Neri

Nome Luca Piero Mario

Mori Gino

7543 Infrazioni

Codice 34321

73321 64521 53524

Data 1/2/95 4/3/95 5/4/96 5/2/98

Vigile 3987 3295 3295 9345

Prov Numero

MI TO PR PR

39548K E39548 839548 839548 3295

3295 3987

3987

9345 3987

9345

9345

3295

3295 3295

(48)

Un vincolo di integrità referenziale (“foreign key”) fra gli attributi X di una relazione R1 e un’altra relazione R2 impone ai valori su X in R1 di comparire come valori della chiave primaria di R2

ES: vincoli di integrità referenziale fra: l’attributo Vigile della relazione INFRAZIONI e la relazione VIGILI

Vincolo di integrità referenziale

(49)

Infrazioni Codice

34321

73321 64521 53524

Data 1/2/95 4/3/95 5/4/96 5/2/98

Vigile 3987 3295 3295 9345

Prov Numero

MI TO PR PR

39548K E39548 839548 839548

Auto Prov Numero

MI TO PR

E39548 F34268 839548

Cognome Rossi Rossi Neri

Nome Mario Mario Luca

TO E39548

TO

E39548

Violazione di vincolo di integrità referenziale

(50)

Integrità referenziale e valori nulli

Impiegati Matricola 34321

64521 53524

Cognome Rossi

Neri Verdi

Progetto IDEA

XYZ NULL

Progetti Codice

IDEA

BOH XYZ

Inizio 01/2000 07/2001 09/2001

Durata 36 24 24

Costo 200 120 150

73032 Bianchi IDEA

(51)

Azioni compensative

Esempio:

Viene eliminata una ennupla causando una violazione

Comportamento “standard”:

Rifiuto dell'operazione

Azioni compensative:

Eliminazione in cascata

Introduzione di valori nulli

(52)

Eliminazione in cascata

Impiegati Matricola 34321

64521 53524

Cognome Rossi

Neri Verdi

Progetto IDEA

XYZ NULL

73032 Bianchi IDEA

Progetti Codice

IDEA

BOH XYZ

Inizio 01/2000 07/2001 09/2001

Durata 36 24 24

Costo 200 120 150

XYZ 07/2001 24 120

XYZ 07/2001 24 120

XYZ 07/2001 24 120

53524 Neri XYZ

(53)

Introduzione di valori nulli

Impiegati Matricola 34321

64521 53524

Cognome Rossi

Neri Verdi

Progetto IDEA

XYZ NULL

73032 Bianchi IDEA

Progetti Codice

IDEA

BOH XYZ

Inizio 01/2000 07/2001 09/2001

Durata 36 24 24

Costo 200 120 150

XYZ 07/2001 24 120

XYZ 07/2001 24 120

XYZ 07/2001 24 120

NULL

(54)

Sistemi per il recupero delle informazioni

PARTE - VI

ALGEBRA RELAZIONALE: operazioni

(55)

BASE DI DATI

Una base di dati può essere utilizzata con due modalità:

interattivamente: l’utente interagisce direttamente con la base di dati. L’utente presenta al sistema una richiesta di dati. Tale richiesta prende il nome di interrogazione (query). L’interrogazione viene interpretata dal sistema, che in risposta restituisce i dati richiesti.

Nella richiesta devono essere specificate le proprietà dei dati che interessano. Se ad es. vogliamo l’elenco dei libri scritti da Calvino, nella richiesta deve essere specificata questa proprietà.

L’interrogazione deve essere formulata per mezzo di un linguaggio formale

mediante programmi: questo uso è riservato ad utenti programmatori. Le interrogazioni fanno parte di un programma applicativo che può essere eseguito dal sistema numerose volte, ed il risultato delle interrogazioni può essere utilizzato dal programma per successive elaborazioni

(56)

Come esempio di linguaggi per l’uso interattivo di basi di dati, relazionali, vediamo

l’algebra relazionale: insieme di operatori su relazioni che danno come risultato relazioni. Non si usa come linguaggio di interrogazione dei DBMS ma come rappresentazione interna delle interrogazioni.

il linguaggio SQL (Structured Query Language), che offre una sintassi per l’algebra relazionale.

Il termine algebra è dovuto al fatto che sono previsti operatori (query) che agiscono su relazioni e producono altre relazioni come risultato.

Gli operatori possono essere combinati per formare espressioni complesse.

LINGUAGGI RELAZIONALI

(57)

ESEMPI DI QUERY

(58)

Algebra relazionale

Insieme di operatori

su relazioni

che producono relazioni (tabelle)

e possono essere composti per svolgere operazioni più complesse

(59)

Gli operatori fondamentali dell’algebra relazionale sono:

Ridenominazione;

Unione;

Intersezione;

Differenza;

Proiezione;

Restrizione (o Selezione);

Prodotto.

I simboli R,S,... denotano relazioni, A, B,…attributi e X,Y,…insiemi di attributi

OPERATORI FONDAMENTALI

(60)

RIDENOMINAZIONE

Operatore unario

Modifica il nome di un attributo senza cambiarne il valore: restituisce la relazione ottenuta sostituendo in R gli attributi A, B,… con gli attributi A’, B’,…

DEFINIZIONE OPERATORIALE: AA’ (R)

ESAMI

ESAMI

MatricolaCodice Studente

(Esami)

ESEMPIO

(61)

Paternità

Padre Figlio

Adamo Caino

Abramo Isacco

Adamo Abele

Genitore  Padre (Paternità)

Padre Figlio

Adamo Caino

Abramo Isacco

Adamo Abele

Genitore

(62)

OPERATORI INSIEMISTICI

Le relazioni sono degli insiemi, quindi possiamo applicare gli operatori sugli insiemi

I risultati debbono essere relazioni

E’ possibile applicare unione, intersezione, differenza solo a relazioni definite sugli stessi attributi

(63)

Siano R ed S relazioni dello stesso tipo allora

L’unione di R con S restituisce una relazione dello stesso tipo con le ennuple che stanno in R in S, o in entrambe.

L’intersezione di R con S restituisce una relazione dello stesso tipo con le ennuple che stanno contemporaneamente sia in R sia in S.

La differenza di R con S restituisce una relazione dello stesso tipo con le ennuple che stanno in R ma non in S.

DEFINIZIONE OPERATORIALE

RS

RS

R - S

UNIONE, INTERSEZIONE, DIFFERENZA

(64)

ESEMPIO DI UNIONE

(65)

ESEMPIO DI INTERSEZIONE

(66)

ESEMPIO DI DIFFERENZA

(67)

“Paternita’” e “Maternità” sono attributi con nomi diversi ma entrambi sono

“Genitori”

Soluzione: ridenominare gli attributi

ESEMPIO: UNIONE?

Maternità

Madre

???

(68)

ESEMPIO: RIDENOMINAZIONE E UNIONE

(69)

Sede, Retribuzione  Ufficio, Stipendio (Impiegati)

Sede, Retribuzione  Fabbrica, Salario (Operai)

Impiegati Cognome

Neri Rossi

Ufficio

Milano Roma

Stipendio

64 55

Operai Cognome

Verdi Bruni

Fabbrica

Latina Monza

Salario

55 45

Cognome Sede Retribuzione

Neri Rossi

64 55 Milano

Roma

Verdi Bruni

Latina Monza

55 45

(70)

selezione

proiezione

operatori "ortogonali“

selezione:

decomposizione orizzontale proiezione:

decomposizione verticale

(71)

Produce risultati:

su un sottoinsieme degli attributi dell’operando

con valori da tutte le n-uple della relazione

Data la relazione R su insieme di attributi X={A1,A2,…An} e un sottoinsieme Y di X, la proiezione di R su Y è la relazione ottenuta da R considerando solo i valori sugli attributi di Y

DEFINIZIONE OPERATORIALE: Y(R)

La cardinalità di Y(R), cioè il numero degli elementi che lo compongono, puo’ essere minore di R nel caso di duplicati

PROIEZIONE

(72)

Cognome Filiale Stipendio Matricola

Neri Milano 64

5998

Neri Napoli 55

7309

Rossi Roma 64

5698

Rossi Roma 44

9553

cognome e filiale di tutti gli impiegati

Cognome, Filiale

(Impiegati)

ESEMPIO PROIEZIONE

(73)

Si riduce la cardinalita’ del risultato rispetto all’operando

ESEMPIO PROIEZIONE - II

per tutti gli impiegati:

• matricola e cognome

(74)

Produce risultati:

con lo stesso schema dell’operando

con un sottoinsieme delle ennuple dell’operando: quelle che soddisfano la condizione

Data la relazione R la restrizione di R alla condizione C restituisce una relazione dello stesso tipo di R avente per valori gli elementi di R che soddisfano la condizione C.

La condizione di selezione è formata da

operatori booleani (AND, OR, NOT)

condizione atomiche: termini che possono contenere

confronti fra attributi (per esempio, Stipendio>Tasse, dove Stipendio e Tasse sono attributi)

confronti fra attributi e costanti (per esempio, Età  60, dove Età è un attributo)

DEFINIZIONE OPERATORIALE:Condizione(R)

SELEZIONE (o RESTRIZIONE)

(75)

ESEMPIO RESTRIZIONE

Impiegati che

• guadagnano più di 50

• guadagnano più di 50 e lavorano a Milano

• hanno lo stesso nome della filiale presso cui lavorano

(76)

Selezione: sintassi e semantica

sintassi

Condizione (Operando)

Condizione: espressione booleana (come quelle dei vincoli di ennupla)

semantica

il risultato contiene le ennuple dell'operando che soddisfano la condizione

(77)

Operatori booleani

Connettivi logici

 (AND),

 (OR),

 (NOT)

Operatori di confronto

= (uguale)  (diverso)

 (maggiore)  (minore)

 (maggiore o uguale)

 (minore o uguale)

(78)

Cognome Filiale Stipendio Matricola

Neri Milano 64

5998

Rossi Roma 55

7309

Neri Napoli 64

5698

Milano Milano 44

9553 Impiegati

Milano Milano 44

9553 Neri Napoli 64

5698

impiegati che guadagnano più di 50

Stipendio > 50

(Impiegati)

(79)

Impiegati

Cognome Filiale Stipendio Matricola

Neri Milano 64

5998

Rossi Roma 55

7309

Neri Napoli 64

5698

Milano Milano 44

9553

impiegati che guadagnano più di 50 e lavorano a Milano

Stipendio > 50 AND Filiale = 'Milano' (Impiegati)

Rossi Roma 55

7309

Neri Napoli 64

5698

Milano Milano 44

9553

Neri Milano 64

5998

(80)

Impiegati

Cognome Filiale Stipendio Matricola

Neri Milano 64

5998

Rossi Roma 55

7309

Neri Napoli 64

5698

Milano Milano 44

9553

impiegati che hanno lo stesso nome della filiale presso cui lavorano

Cognome = Filiale(Impiegati)

Neri Milano 64

5998

Rossi Roma 55

7309

Neri Napoli 64

5698

Milano Milano 44

9553

(81)

Selezione e proiezione

Combinando selezione e proiezione, possiamo estrarre interessanti informazioni da una relazione

matricola e cognome degli impiegati che guadagnano più di 50

Stipendio > 50

(Impiegati)

Matricola,Cognome

(  )

Cognome Filiale Stipendio Matricola

Neri Milano 64 5998

Rossi Roma 55

7309

Neri Napoli 64 5698

Milano Milano 44 9553 Milano Milano 44

9553 Neri Napoli 64

5698

(82)

Date le relazioni R ed S con attributi diversi, il prodotto di R con S restituisce una relazione con attributi quelli di R e di S ed elementi la copia delle ennuple del prodotto cartesiano di R e S, ovvero ogni ennupla di R è concatenata con tutte le ennuple di S.

DEFINIZIONE OPERATORIALE: R x S

Se R ha n elementi ed S ne ha m il prodotto ne ha m*n

PRODOTTO (Join)

(83)

1 25

2 13

3 27

4 28

Numero Voto

1 Mario Rossi

2 Nicola Russo

3 Mario Bianchi

4 Remo Neri

Numero Candidato

25 Mario Rossi

13 Nicola Russo

27 Mario Bianchi

28 Remo Neri

Voto Candidato

1 2 3 4 Numero

(84)

JOIN NATURALE

operatore binario (generalizzabile)

produce un risultato

sull'unione degli attributi degli operandi

con ennuple costruite ciascuna a partire da una ennupla di ognuno degli operandi

Permette di combinare ennuple da relazioni diverse basandosi sui valori degli attributi

Sia R con attributi XY ed S con attributi YZ. Il join naturale produce una relazione di attributi XYZ; ennuple del risultato sono ottenute combinando le ennuple di R e S che hanno gli stessi valori negli attributi con lo stesso nome

(85)

ESEMPIO - I

join completo: ogni ennupla contribuisce al risultato

(86)

ESEMPIO - II

Join non completo: alcuni valori tra gli attributi comuni non coincidono, quindi, alcune ennuple non partecipano al JOIN

(87)

ESEMPIO - III

Join vuoto: caso limite

potrebbe anche succedere che nessuna ennupla trovi il corrispettivo

(88)

ESEMPIO - IV

L’altro caso estremo del JOIN

ogni ennupla di R1 si combina con ogni ennupla di R2

la cardinalita’ del risultato e’ il prodotto delle cardinalita’

(89)

Cardinalità del join

Il join di R1 e R2 contiene un numero di ennuple compreso fra zero e il prodotto di | R1| e |R2|

se il join coinvolge una chiave di R2, allora il numero di ennuple è compreso fra zero e |R1|

se il join coinvolge una chiave di R2 e un vincolo di integrità referenziale, allora il numero di ennuple è pari a |R1|

R1(A,B) , R2 (B,C) in generale

0  |R1 JOIN R2| |R1|  |R2|

se B è chiave in R2

0  |R1 JOIN R2| |R1|

se B è chiave in R2 ed esiste vincolo di integrità referenziale fra B (in R1) e R2:

|R1 JOIN R2| = |R1|

(90)

Impiegato Reparto

Rossi A

Neri B

Bianchi B

Reparto Capo

B Mori

C Bruni

Neri B Mori

Impiegato Reparto Capo

Bianchi B Mori

A

C

Join, una difficoltà

alcune ennuple non contribuiscono al risultato: vengono "tagliate fuori"

(91)

Join esterno

Il join esterno estende, con valori nulli, le ennuple che verrebbero tagliate fuori da un join (interno)

esiste in tre versioni:

sinistro, destro, completo

(92)

Join esterno

sinistro: mantiene tutte le tuple del primo operando, estendendole con valori nulli, se necessario

destro: ... del secondo operando ...

completo: … di entrambi gli operandi ...

(93)

Impiegato Reparto

Rossi A

Neri B

Bianchi B Impiegati

Reparto Capo

B Mori

C Bruni

Reparti

Neri B Mori

Impiegato Reparto Capo

Bianchi B Mori

Impiegati JOIN

LEFT

Reparti C

Rossi A NULL

A

Rossi

(94)

Impiegato Reparto

Rossi A

Neri B

Bianchi B Impiegati

Reparto Capo

B Mori

C Bruni

Reparti

Neri B Mori

Impiegato Reparto Capo

Bianchi B Mori

Impiegati JOIN

RIGHT

Reparti A

NULL C Bruni

C Bruni

(95)

Impiegato Reparto

Rossi A

Neri B

Bianchi B Impiegati

Reparto Capo

B Mori

C Bruni

Reparti

Neri B Mori

Impiegato Reparto Capo

Bianchi B Mori

Impiegati JOIN

FULL

Reparti

NULL C Bruni

C Bruni

A Rossi

Rossi A NULL

(96)

Join e proiezioni Impiegato Reparto

Rossi A

Neri B

Bianchi B

Reparto Capo

B Mori

C Bruni

Neri B Mori

Impiegato Reparto Capo

Bianchi B Mori

Impiegato Reparto

Neri B

Bianchi B

Reparto Capo

B Mori

(97)

Proiezioni e join

Neri B Mori

Impiegato Reparto Capo

Bianchi B Bruni

Verdi A Bini

Neri B

Impiegato Reparto

Bianchi B

Verdi A

B Mori

Reparto Capo

B Bruni

A Bini

Verdi A Bini

Neri B Mori

Impiegato Reparto Capo

Bianchi B Bruni

Neri B Bruni

Bianchi B Mori

(98)

Join e proiezioni

R 1(X1), R 2(X2)

PROJX1 (R 1 JOIN R2 )  R 1

R(X), X = X1  X2

(PROJX1 (R))JOIN (PROJX2 (R)) R

(99)

Prodotto cartesiano

un join naturale su relazioni senza attributi in comune

contiene sempre un numero di tuple pari al prodotto delle cardinalità degli operandi (le tuple sono tutte combinabili )

(100)

Rossi A

Neri B

Bianchi B

Impiegato Reparto Impiegati

A Mori

B Bruni

B Bruni

B Bruni

Codice Capo

Reparti

Impiegati JOIN Reparti

Impiegato Reparto Codice Capo

Rossi A AAA Mori

Rossi A B Bruni

Neri B A Mori

Neri B B Bruni

Bianchi B A Mori

Bianchi B B Bruni

(101)

Il prodotto cartesiano, in pratica, ha senso (quasi) solo se seguito da selezione:

SEL

Condizione (R1

JOIN

R2)

L'operazione viene chiamata theta-join e indicata con R1

JOIN

Condizione R2

La condizione C è spesso una congiunzione (AND) di atomi di

confronto A1 A2 dove  è uno degli operatori di confronto (=, >, <, …)

se l'operatore è sempre l'uguaglianza (=) allora si parla di equi-join

(102)

Rossi A

Neri B

Bianchi B

Impiegato Reparto Impiegati

A Mori

B Bruni

B Bruni

B Bruni

Codice Capo Reparti

Impiegati JOIN

Reparto=Codice

Reparti

Impiegato Reparto Codice Capo

Rossi A A A A Mori

Rossi A B Bruni

Neri B A Mori

Neri B B Bruni

Bianchi B A Mori

Bianchi B B Bruni

Rossi A A A A Mori

Neri B B Bruni

Bianchi B B Bruni

(103)

Esempi

Impiegati Matricola Nome Età Stipendio Bianchi 37 38

5998

Rossi 34 45

7309

Bruni 43 42

5698

Neri 42 35

9553

Mori 45 50

4076

Lupi 46 60

8123

Supervisione Impiegato Capo

5998 7309

5698 9553 4076

5698 5698

4076

4076

8123

(104)

Nome Età Stipendio Matricola

Bianchi 37 38 5998

Rossi 34 45

7309

Bruni 43 42

5698

Neri 42 35

9553

Mori 45 50

4076

Lupi 46 60

8123

SELStipendio>40(Impiegati)

Bianchi 37 38 5998

Neri 42 35

9553

Rossi 34 45

7309

Bruni 43 42

5698

Mori 45 50

4076

Lupi 46 60

8123

Rossi 34 45

7309

Bruni 43 42

5698

Mori 45 50

4076

Lupi 46 60

8123

Trovare matricola, nome, età e stipendio degli impiegati che guadagnano più di 40 milioni

(105)

Nome Età Stipendio Matricola

Bianchi 37 38 5998

Rossi 34 45

7309

Bruni 43 42

5698

Neri 42 35

9553

Mori 45 50

4076

Lupi 46 60

8123

Bianchi 37 38 5998

Neri 42 35

9553

Rossi 34 45

7309

Bruni 43 42

5698

Mori 45 50

4076

Lupi 46 60

8123

Rossi 34 45

7309

Bruni 43 42

5698

Mori 45 50

4076

Lupi 46 60

8123

PROJ

Matricola, Nome, Età (

SEL

Stipendio>40(Impiegati))

Trovare matricola, nome ed età degli impiegati che guadagnano più di 40 milioni

(106)

Selezione con valori nulli

Cognome Filiale Età Matricola

Neri Milano 45 5998

Rossi Roma 32

7309

Bruni Milano

NULL

9553

Impiegati

SEL

Età > 40 (Impiegati)

• la condizione atomica è vera solo per valori non nulli

(107)

Un risultato non desiderabile

SEL

Età>30 (Persone) 

SEL

Età30 (Persone)  Persone

Perché? Perché le selezioni vengono valutate separatamente!

Ma anche

SEL

Età>30  Età30 (Persone)  Persone

Perché? Perché anche le condizioni atomiche vengono valutate separatamente!

(108)

Selezione con valori nulli: soluzione

SEL Età > 40 (Impiegati)

la condizione atomica è vera solo per valori non nulli

per riferirsi ai valori nulli esistono forme apposite di condizioni:

IS NULL IS NOT NULL

si potrebbe usare (ma non serve) una "logica a tre valori" (vero, falso, sconosciuto)

(109)

Quindi:

SEL

Età>30 (Persone) 

SEL

Età30 (Persone) 

SEL

Età IS NULL (Persone)

=

SEL

Età>30  Età30  Età IS NULL(Persone)

= Persone

(110)

Cognome Filiale Età Matricola

Neri Milano 45 5998

Rossi Roma 32

7309

Bruni Milano

NULL

9553

Impiegati

Neri Milano 45 5998

Bruni Milano

NULL

9553

SEL

(Età > 40) OR (Età IS NULL) (Impiegati)

Neri Milano 45 5998

Bruni Milano

NULL

9553

(111)

Sistemi per il recupero delle informazioni

DATABASE MANAGEMENT SYSTEM

(DBMS)

(112)

INTRODUZIONE

In questa sezione chiariremo qual è il significato tecnico del termine basi di dati e le funzionalità che offrono i sistemi che ne consentono la definizione e l’uso.

Iniziamo col chiarire cosa si intende per “base di dati”, visto che spesso questo termine viene usato per riferirsi ad un qualsiasi insieme di dati archiviati con un calcolatore.

(113)

INTRODUZIONE

Gli archivi costituiscono una memoria di lavoro indispensabile per gestire quantità ingenti di informazioni, per ordinare gli elementi utili, metterli in relazione e filtrare i dati che devono essere utilizzati nelle varie circostanze. Prima della diffusione dei sistemi informatici erano gestiti in forma cartacea, con schedari e registri, che permettevano di catalogare e ordinare i dati in base ad un unico criterio di ricerca e rendevano piuttosto disagevole il recupero e l’analisi dell’informazione.

L’avvento dei computer nella gestione degli archivi ha notevolmente migliorato i processi di memorizzazione e recupero dei dati: la creazione di software specifici per la gestione di banche dati, chiamati DBMS (Data Base Management System), ha infatti permesso di unificare in un unico programma le funzionalità di archiviazione e gestione dei dati. Se all’inizio i software per la gestione di database occupavano grande spazio di memoria e risultavano abbastanza complessi da utilizzare, oggi programmi come Microsoft Access uniscono sofisticate funzioni di archiviazione, ricerca e analisi dei dati a un interfaccia amichevole, e consentono un utilizzo versatile adatto alle più svariate esigenze.

(114)

Archivi e basi di dati

Gestione ricevimento

Gestione orario lezioni

Database

(115)

DATABASE

Accezione generica, metodologica

Insieme organizzato di dati utilizzati per il supporto allo svolgimento delle attività di un ente (azienda, ufficio, persona)

Accezione specifica, metodologica e tecnologica

Insieme di dati gestito da un DBMS

(116)
(117)
(118)

COS’E’ UNA BASE DATI

Una base di dati è una raccolta di dati permanenti suddivisi in due categorie:

I METADATI

I DATI

(119)

COS’E’ UNA BASE DATI

I METADATI

i metadati, ovvero lo schema della base di dati, sono una raccolta di definizioni che descrivono

 la struttura di alcuni insiemi dati,

le restrizioni sui valori ammissibili dei dati

 le relazioni esistenti fra gli insiemi.

Lo schema va definito prima di creare i dati ed è indipendente dalle applicazioni che usano la base di dati.

(120)

COS’E’ UNA BASE DATI

I DATI

i dati, le rappresentazioni dei fatti conformi alle definizioni dello schema, con le seguenti caratteristiche:

a) sono organizzati in insiemi omogenei, fra i quali sono definite delle relazioni.

b) sono molti, in assoluto e rispetto ai metadati, e non possono essere gestiti in memoria temporanea;

c) sono permanenti, cioè, una volta creati, continuano ad esistere finché non sono esplicitamente rimossi;

d) sono accessibili mediante transazioni;

e) sono protetti sia da accesso da parte di utenti non autorizzati, sia da corruzione dovuta a malfunzionamenti hardware e software;

f) sono utilizzabili contemporaneamente da utenti diversi.

(121)

Si consideri la base di dati degli studenti ed esami superati definiti dagli schemi di relazioni:

Studenti(Matricola, Cognome, Città, AnnoNascita) Esami(Materia, Candidato, Voto, Data)

Dovrebbe essere chiaro che una base di dati contiene i dati immessi, meno ovvio è il fatto che in una base di dati si memorizzano anche informazioni sui dati definiti, chiamati metadati.

Esempi di queste informazioni sono:

1. i nomi delle relazioni definite;

2. il tipo delle ennuple delle relazioni;

3. le chiavi primarie ed esterne definite;

4. i vincoli sui valori ammissibili degli attributi.

Queste informazioni sono memorizzate in tabelle predefinte che sono gestite automaticamente dal sistema.

ESEMPIO DATI e METADATI

Riferimenti

Documenti correlati

Q.3 E’ possibile che la relazione CASA contenga 0 instanze, e la relazione PROPRIETARIO contenga 5 istanze (senza violare i vincoli di integrita’ referenziale)..

Atleta(Codice, Nome, Cognome, Societa’), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta). Determinare la cardinalita’

Quando termina un noleggio, occorre modificare lo stato corrente dell’autovettura, che deve essere posto a libera e deve essere aggiornato il timestamp di fine per l’ultima attivit`

(a) Si deve aggiornare nella tabella TOTALE VENDITE LIBRERIA il numero complessivo di copie del libro vendute presso la libreria e l’importo complessivamente incassato dalla

(a) Considerando solo le filiali site in Italia, visualizzare per ogni filiale e modello di automobile, il fatturato mensile, il fatturato medio giornaliero per ogni mese, e

Ogni nodo dell'albero, ad eccezione di un nodo speciale detto radice, ha un nodo padre e zero, uno o più nodi figli.. • Se un nodo non ha nessun nodo figlio è detto nodo foglia

Propriet` a, associate a uno schema di base di dati, che devono essere soddisfatte da tutte le istanze che rappresentano informazioni corrette della base di dati. • Si

 Inizio anni ’60: Charles Bachman (General Eletric) progetta il primo DBMS (Integrated Data Store), basato sul modello reticolare..  Bachman vincerà il primo ACM Turing Award