+ All Categories
Home > Documents > Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad...

Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad...

Date post: 01-May-2015
Category:
Upload: cosima-blasi
View: 212 times
Download: 0 times
Share this document with a friend
37
Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni tupla. Non sempre questo è possibile. Es. Persone(Cognome, Nome, Indirizzo, Telefono) Potrebbe esserci una persona che non ha telefono, o di cui non conosciamo l’indirizzo. Oppure: Franklin Roosevelt Delano Nome Cognome SecondoNome Winston Churchill Charles De Gaulle Josip Stalin
Transcript
Page 1: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Informazione incompleta

Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un

valore in ogni tupla. Non sempre questo è possibile.

Es. Persone(Cognome, Nome, Indirizzo, Telefono)Potrebbe esserci una persona che non ha telefono, o di cui non conosciamo l’indirizzo.

Oppure:

Franklin RooseveltDelano

Nome CognomeSecondoNome

Winston Churchill

Charles De Gaulle

Josip Stalin

Page 2: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Informazione incompleta: soluzioni?

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

– potrebbero non esistere valori “non utilizzati” – valori “non utilizzati” potrebbero diventare significativi – in fase di utilizzo (nei programmi) sarebbe necessario

ogni volta tener conto del “significato” di questi valori

Page 3: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Informazione incompleta

Nel modello relazionale è definito un valore convenzionale, detto valore nullo, che indica la non disponibilità dell’informazione.

Il valore nullo può rappresentare 3 tipi di informazione:– sconosciuta– inesistente– indeterminata (nei DBMS disponibili si

considera in genere questo caso)

Page 4: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Vincoli di Integrità

Non tutte le combinazioni possibili di valori dei domini su cui è definita una relazione sono accettabili.

• Alcuni attributi possono assumere valori in un certo range

• Alcuni attributi devono essere diversi in ogni tupla della stessa relazione

Es. valori dell’attributo Matricola in una relazione del tipo

Studenti(Matricola, Cognome, Nome, DataNascita)

Page 5: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Vincoli di Integrità

• Alcuni valori possono essere incompatibili con altri all’interno della stessa relazioneEs. data la relazione

Esami(Matricola, Voto, Lode, CodCorso)– una stessa coppia Matricola,Corso può apparire una sola

volta– Il valore Vero per l’attributo Lode è corretto solo se Voto=30

• Alcuni valori possono essere incompatibili con i valori di un’altra relazioneEs. Data la relazione Esami e la relazione

Corsi(CodCorso, Titolo, Docente)ogni valore di CodCorso in Esami deve essere un valore esistente di CodCorso in Corsi

Page 6: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Vincoli di Integrità

Sono condizioni, sotto forma di predicati logici, che sono inserite nella base di dati per garantirne la consistenza.

Ogni istanza della base di dati deve soddisfare i vincoli di integrità (il predicato deve assumere valore vero).

Una istanza che soddisfi tutti i vincoli è detta corretta (o lecita o ammissibile)

Page 7: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Vincoli di Integrità

Possono essere di vario tipo:

•Intrarelazionale se coinvolge attributi della stessa relazione

– Vincoli di tuplapossono essere valutati su ciascuna tupla indipendentemente dalle altre

• Vincoli di dominio sono definiti su singoli valori

•Interrelazionale se coinvolge più relazioni

Page 8: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Vincoli di tupla

Possono essere definiti attraverso operatori booleani

Es.

(Voto >= 18) AND (Voto <= 30)

(NOT (lode=Vero)) OR (Voto=30)

oppure, data la relazione

Pagamenti(Data, Importo, Ritenute, Netto)

Netto = Importo - Ritenute

Page 9: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Identificazione delle tuple

– non ci sono due tuple con lo stesso valore sull’attributo Matricola

– non ci sono due tuple uguali su tutti e tre gli attributi Cognome, Nome e Data di Nascita

Matricola276557876365432

NomeMario

PieroMario87654

67653

Mario

CognomeRossi

NeriNeri

Rossi

Rossi Piero

CorsoIng Inf

Ing MeccIng Inf

Ing Inf

Ing Mecc

Nascita5/12/78

10/7/793/11/76

3/11/76

5/12/78

Page 10: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Chiavi

Una chiave è un insieme minimale di attributi utilizzato per identificare univocamente le tuple di una relazione.

Formalmente:

Un insieme di attributi K è superchiave per una relazione r se r non contiene due tuple t1 e t2 tali che

t1[K] = t2[K]

Un insieme di attributi K è chiave per r se è superchiave minimale, cioè se non esiste un’altra superchiave K’ che sia sottoinsieme di K

Page 11: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Una chiave

• Matricola è una chiave:– è superchiave– contiene un solo attributo e quindi è minimale

Matricola276557876365432

NomeMario

PieroMario87654

67653

Mario

CognomeRossi

NeriNeri

Rossi

Rossi Piero

CorsoIng Inf

Ing MeccIng Inf

Ing Inf

Ing Mecc

Nascita5/12/78

10/7/793/11/76

3/11/76

5/12/78

Page 12: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Chiavi

• Una chiave è tale se soddisfa la definizione per tutte le possibili tuple appartenenti alla relazione, e non solo per quelle che effettivamente appaiono come istanze della relazione stessa.

• Quindi la chiave è legata allo schema della relazione.

• Ogni relazione, per definizione, possiede una chiave.

Infatti l’insieme X su cui è definita è sicuramente superchiave.

Page 13: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Chiavi

La presenza di valori nulli in una chiave può creare può vanificare la proprietà di unicità delle tuple identificate da una certa chiave.

Si impone quindi che almeno una chiave non contenga valori nulli. Tale chiave è detta chiave primaria.

Di solito la chiave primaria è sottolineata nello schema di una relazione.

Es.

Studenti(Matricola, Cognome, Nome, Nascita, Corso)

Page 14: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Vincoli di Integrità Referenziale

In alcuni casi (corrispondenze fra relazioni) è necessario che i valori degli attributi di una relazione R1 si possano trovare anche in attributi corrispondenti di R2.

Un vincolo di integrità referenziale (o foreign key) fra un insieme di attributi X di R1 e un’altra relazione R2 è soddisfatto se i valori su X di ciascuna tupla di R1 compaiono come valori della chiave (primaria) di R2.

Non tutti i DBMS consentono di definire una chiave come primaria, in presenza di più chiavi. Quindi sarà necessario esprimere il vincolo specificando per esteso gli attributi dell’una e dell’altra relazione collegati da tale vincolo.

Page 15: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Algebra Relazionale

Linguaggio procedurale, in cui le operazioni vengono descritte descrivendo la procedura per ottenere la soluzione.

Operatori:

•unione intersezione differenza derivati dalla teoria degli insiemi

•ridenominazione selezione proiezione specifici dell’algebra relazionale

•join che può assumere diverse forme (naturale, theta-join, prodotto cartesiano)

Page 16: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Operatori derivati dagli insiemi

Le relazioni sono insiemi e quindi è naturale estendere ad esse le operazioni relative.

Tuttavia le relazioni sono insiemi di tuple omogenee, e quindi ha senso definire ed applicare tali operatori solo a tuple definite sugli stessi attributi.

Es. l’unione fra due relazioni su tuple non omogenee non è una relazione.

Page 17: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Operatori derivati dagli insiemi

• UnioneL’unione fra due relazioni r1 e r2 definite sullo stesso insieme di attributi X è indicata con r1 r2 ed è una relazione su X contenente le tuple che appartengono a r1 o r2 oppure ad entrambe.

• IntersezioneL’intersezione fra due relazioni r1 e r2 definite sullo stesso insieme di attributi X è indicata con r1 r2 ed è una relazione su X contenente le tuple che appartengono sia a r1 che a r2.

• DifferenzaLa differenza fra due relazioni r1 e r2 definite sullo stesso insieme di attributi X è indicata con r1 - r2 ed è una relazione su X contenente le tuple che appartengono a r1 e non a r2.

Page 18: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Laureati

Matricola

74329824

Età

5445

Nome

NeriVerdi

7274 42Rossi

Quadri

Matricola

74329824

9297Età

5445

33Nome

NeriVerdi

Neri

Laureati Quadri

Matricola EtàNome

7432 54Neri9824 45Verdi9297 33Neri

7274 42Rossi7432 54Neri9824 45Verdi

7274 42Rossi7432 54Neri9824 45Verdi9297 33Neri

7432 54Neri9824 45Verdi9297 33Neri

7274 42Rossi

Unione

Page 19: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Laureati

Matricola

74329824

Età

5445

Nome

NeriVerdi

7274 42Rossi

Quadri

Matricola

74329824

9297Età

5445

33Nome

NeriVerdi

Neri

Laureati Quadri

Matricola EtàNome7432 54Neri9824 45Verdi

7432 54Neri9824 45Verdi

7432 54Neri9824 45Verdi

7432 54Neri9824 45Verdi

Intersezione

Page 20: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Laureati

Matricola EtàNome

7432 54Neri9824 45Verdi

7274 42Rossi

Quadri

Matricola

74329824

9297Età

5445

33Nome

NeriVerdi

Neri

Laureati – Quadri

Matricola EtàNome

7432 54Neri9824 45Verdi

7274 42Rossi7432 54Neri9824 45Verdi

7274 42Rossi

Differenza

Page 21: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Ridenominazione

E’ un operatore che consente di modificare i nome di un attributo per poterlo associare ad un altro attributo in una operazione algebrica.

Si indica con nuovonome vecchionome (Relazione)

Es. date le relazioni

Paternità(Padre, Figlio) e Maternità(Madre, Figlio)

è possibile ottenere Genitore Padre(Paternità) Genitore Madre (Maternità)

Page 22: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

RENGenitore Padre (Paternità)

RENGenitore Madre (Maternità)

Genitore Figlio

Adamo CainoAbramo Isacco

Adamo Abele

Genitore Figlio

Eva SetSara Isacco

Eva Abele

Genitore Figlio

Adamo CainoAbramo Isacco

Adamo Abele

Eva SetSara Isacco

Eva Abele

RENGenitore Padre (Paternità)

RENGenitore Madre (Maternità)

Page 23: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Selezione e Proiezione

Le operazioni di selezione e di proiezione si applicano ad una relazione e ne restituiscono una porzione.

Possono essere considerate ortogonali o complementari, in quanto una opera sulle righe e l’altra sulle colonne.

La selezione produce un insieme di tuple, su tutti gli attributi.

La proiezione produce un risultato definito su un insieme di attributi, cui contribuiscono tutte le tuple.

Page 24: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Selezione

La selezione produce una nuova relazione definita sugli stessi attributi, contenente solamente le tuple di una relazione che soddisfano una specifica condizione di selezione.

Si indica con F ( r )

dove:

F è una condizione da verificare

r è la relazione a cui la selezione è applicata

Quindi, F ( r ) produce una relazione sugli stessi attributi di r contenente le tuple su cui F è vera.

Page 25: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Selezione, sintassi e semantica

• sintassi

SEL Condizione (Operando)

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

• semantica– il risultato contiene le tuple dell'operando che

soddisfano la condizione

Page 26: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Selezione

F è una formula preposizionale su X, cioè una formula ottenuta combinando con i simboli (and) (or) (not) espressioni del tipo

A B o A c

dove :• è un operatore di confronto (, , , , )• A e B sono attributi di X su cui i confronto abbia senso• c è una costante tale che il confronto con A sia definito

E’ definito un valore di verità di F su una tupla t:• A B è vera se e solo se t[A] t[B] è vero• A c è vera se t[A] c è vera

• F1 F2, F1 F2, F hanno l’usuale significato

Page 27: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Impiegati Cognome Filiale StipendioMatricola

Neri Milano 645998Rossi Roma 557309

Neri Napoli 645698Milano Milano 449553

Cognome Filiale StipendioMatricola

Neri Milano 645998Rossi Roma 557309

Neri Napoli 645698Milano Milano 449553

Impiegati (che guadagnano piu’ di 50)

Milano Milano 449553 Neri Napoli 645698

SELStipendio > 50 (Impiegati)

Page 28: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Selezione con valori nulli

Cognome Filiale EtàMatricola

Neri Milano 455998Rossi Roma 327309

Bruni Milano NULL9553

Impiegati

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!

Page 29: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Selezione con valori nulli

Per riferirsi ai valori nulli esistono forme apposite di condizioni:

IS NULLIS NOT NULL

SEL Età>30 (Persone) SEL Età30 (Persone) SEL Età IS NULL

(Persone) =

SEL Età>30 Età30 Età IS NULL (Persone) =

Persone

Page 30: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Proiezione

Dati una relazione r(X) e un sottoinsieme Y di X

la proiezione di r su Y si indica con Y ( r ) ed è l’insieme di tuple su Y ottenute dalle tuple di r considerando solo i valori su Y.

Y ( r ) = { t[Y] | t r }

Una proiezione ha un numero di tuple minore o uguale rispetto alla relazione r cui è applicata. Il numero di tuple è uguale se e solo se Y è superchiave per r.

Page 31: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Proiezione• operatore monadico• produce un risultato che

– ha parte degli attributi dell'operando– contiene tuple cui contribuiscono tutte le tuple

dell'operando

• sintassiPROJ ListaAttributi (Operando)

• semanticail risultato contiene le tuple ottenute da tutte le tuple dell'operando ristrette agli attributi nella lista

Page 32: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Cognome Filiale StipendioMatricola

Neri Milano 645998Neri Napoli 557309

Rossi Roma 645698Rossi Roma 449553

– visualizzare matricola e cognome di tutti gli impiegati

PROJ Matricola, Cognome (Impiegati)

Cognome Filiale StipendioMatricola

Neri Milano 645998Neri Napoli 557309

Rossi Roma 645698Rossi Roma 449553

PROJ Cognome, Filiale (Impiegati)

Page 33: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Join

E’ l’operatore più caratteristico, che evidenzia la proprietà del modello relazionale di essere basato su valori.

L’operatore di join (naturale) correla dati in relazioni diverse, producendo una relazione definita sull’unione degli insiemi di attributi degli operandi, le cui tuple sono ottenute combinando le tuple degli operandi con valori uguali su attributi comuni.

Page 34: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Join

Il join naturale r1 r2 di r1(X1) e r2(X2) è una relazione definita su X1X2 ( che si può scrivere X1X2 ) :

r1 r2 = { t su X1X2 | t[X1] r1 e t[X2] r2}

Il grado della relazione ottenuta è minore o uguale al grado della somma dei gradi delle due relazioni in quanto gli attributi omonimi compaiono una sola volta.

Se X1 X2 è vuoto il join naturale equivale al prodotto cartesiano fra le relazioni.

Se X1=X2 il join naturale equivale all’intersezione fra le relazioni

Page 35: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Join

Se ciascuna tupla di ciascuno degli operandi contribuisce ad almeno una tupla del risultato il join si dice completo.

Se per alcune tuple non è verificata la corrispondenza e non contribuiscono al risultato, le tuple si dicono dangling.

Ai due estremi si pongono il join vuoto in cui nessuna tupla degli operandi è combinabile, e quello in cui ciascuna delle tuple di un operando è combinabile con tutte le tuple dell’altro. In questo caso la cardinalità della relazione risultante è pari al prodotto della

cardinalità degli operandi

Page 36: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Join

Proprietà

• se il join di r1 e r2 è completo allora contiene un numero di tuple pari almeno al massimo fra |r1|e |r2|

• se X1X2 contiene una chiave per r2, allora il join di r1 (X1) e r2(X2) contiene al più |r1| tuple.

• r1 r2 = r1 r2 il join è commutativo

• (r1 r2) r3 = r1 (r2 r3) il join è associativoQuindi sequenze di join possono essere scritte senza parentesi

Page 37: Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.

Join

Se si devono correlare attributi con nome diverso è possibile fare il theta-join, definito come un prodotto cartesiano seguito da una selezione

r1 F r2 = F (r1 r2 )

Se F è una relazione di uguaglianza, con un attributo della pima relazione e uno della seconda, allora siamo in presenza di un equi-join.

Sono importanti formalmente:

il join naturale è basato sui nomi degli attributi

equi-join e theta-join sono basati sui valori


Recommended