68
Basi di dati Basi di dati Claudia Raibulet [email protected]

Basi di dati

Embed Size (px)

DESCRIPTION

Basi di dati. Claudia Raibulet [email protected]. Gestione delle informazioni. Le informazioni possono essere gestite (registrate e scambiate) in forme diverse: Idee informali Linguaggio naturale (scritto e parlato, formale o colloquale, in diverse lingue, ecc.) - PowerPoint PPT Presentation

Citation preview

Page 1: Basi di dati

Basi di datiBasi di dati

Claudia Raibulet

[email protected]

Page 2: Basi di dati

Gestione delle informazioniGestione delle informazioni Le informazioni possono essere gestite (registrate

e scambiate) in forme diverse:• Idee informali

• Linguaggio naturale (scritto e parlato, formale o colloquale, in diverse lingue, ecc.)

• Disegni, grafici, schemi,

• Numeri, codici, …

E su vari supporti:• Memoria umana, carta, dispositivi elettronici, …

Page 3: Basi di dati

Gestione delle informazioniGestione delle informazioni Nelle attivita’ standardizzate dei sistemi informativi

complessi sono state introdotte col tempo forme di organizzazione e codifica delle informazioni via via piu’ precise

Ad esempio, nei servizi anagrafici si e’ iniziato con registrazioni discorsive e poi:• Nome e cognome• Estremi anagrafici• Codice fiscale• …

Page 4: Basi di dati

Informazioni e datiInformazioni e dati Nei sistemi informatici, le informazioni sono

rappresentate in un modo essenziale attraverso i dati Definizioni:

• Informazione: notizia, dato o elemento che consente di avere conoscenza piu’ o meno esatta di fatti, situazioni, modi di essere, …

• Dato: cio’ che e’ immediatamente presente alla conoscenza prima di ogni elaborazione

Page 5: Basi di dati

Informazioni e datiInformazioni e dati I dati hanno bisogno di essere interpretati Esempio:

• “Mario”, “6756” su un foglio di carta sono due dati

• Se il foglio di carta rappresenta la risposta alla domanda “A chi mi devo rivolgere per risolvere il problema X e qual’e’ il suo numero di telefono?” allora i dati vengono interpretati per fornire informazioni e arricchire la conoscenza

Page 6: Basi di dati

Basi di datiBasi di dati

L’elemento chiave e’ il dato I dati rappresentano spesso una risorsa strategica

perche’ piu’ stabili nel tempo di altri componenti (processi, tecnologie, …)

I dati rimangono gli stessi nella migrazione da un sistema al successivo

Page 7: Basi di dati

Basi di datiBasi di dati Basi di dati (database) rappresentano un insieme

di dati, raccolti in base a precise regole, e organizzate in strutture rigide ben definite

Basi di dati - gestite da un DBMS (DataBase Management System) che: • Opera al di sopra del sistema operativo

• Offre linguaggi specifici per l’organizzazione e la gestione dei dati

• Offre meccanismi efficienti per l’accesso ai dati

Page 8: Basi di dati

Basi di datiBasi di dati

Ancora una definizione:• Basi di dati = insieme di archivi in cui un dato

e’ rappresentato logicamente una sola volta e puo’ essere utilizzato da un insieme di applicazioni da diversi utenti secondo opportuni criteri di riservatezza

Page 9: Basi di dati

Gestione di basi di datiGestione di basi di dati Tramite software scritti in un linguaggio di

programmazione come per esempio Java (JDBC – Java DataBase Connectivity)

Esempi di DBMS:• Access

• DB2

• Oracle

• Informix

• Sybase

• SQLServer

• MySQL

• …

Page 10: Basi di dati

DBMS – Gestione di basi di datiDBMS – Gestione di basi di dati Sono applicazioni software in grado di gestire collezioni

di dati che siano:• Grandi – di dimensioni molto maggiori della memoria

centrale dei sistemi di calcolo utilizzati• Persistenti – con un periodo di vita indipendente dalle singole

esecuzioni dei programmi che le utilizzano• Condivise – utilizzate da applicazioni diverse

Garantiscono: • Affidabilita’ – resistenza a malfunzionamenti HW e SW• Privatezza – con una disciplica e un controllo degli accessi

I DBMS sono:• Efficienti – utilizzano al meglio le risorse di spazio e tempo

del sistema• Efficaci - rendono produttiva l’attivita’ dei utilizzatori

Page 11: Basi di dati

Basi di dati – risorsa condivisaBasi di dati – risorsa condivisa Una basi di dati e’ una risorsa integrata e condivisa

fra le varie applicazioni Conseguenze:

• Attivita’ diverse su dati in parte condivisi -> richiesti meccanismi di autorizzazione

o L’utente A e’ autorizzato a leggere tutti i dati e a modificare quelli sul ricevimento

• Attivita’ multi-utente su dati condivisi -> controllo della concorrenza

o l’effetto di transizioni concorrenti deve essere coerente

Page 12: Basi di dati

Efficienza e EfficaciaEfficienza e Efficacia Efficienza

• Si misura in termini di tempo di esecuzione (tempo di risposta) e spazio di memoria

• A causa della varieta’ delle funzioni i DBMS non sono necessariamente piu’ efficienti del file system

• L’efficienza e’ il risultato della qualita’ del DBMS e delle applicazioni che lo utilizzano

Efficacia• Difficile da quantificare

• Una applicazione e efficace se risponde agli obiettivi per cui e’ stata progettata

Page 13: Basi di dati

Descrizione dei dati nel DBMSDescrizione dei dati nel DBMS I dati sono descritti e rappresentati a livelli diversi

che permettono l’indipendenza dai dati dalla rappresentazione fisica

I programmi fanno riferimento alla struttura di livello piu’ alto e le rappresentazioni sottostanti possono essere modificate senza necessita’ di modifica dei programmi

Concetto di modello dei dati

Page 14: Basi di dati

Modello dei datiModello dei dati Insieme di costrutti utilizzati per organizzare i dati e

descrivere la dinamica Componente fondamentale: meccanismi di

strutturazione (o costrutti di tipo) Come nei linguaggi di programmazione esistono

meccanismi che permettono di definire nuovi tipi, cosi ogni modello dei dati prevede alcuni contruttori

Esempio: il modello relazionale prevede il costruttore relazione, che permette di definire insiemi di record omogenei

Page 15: Basi di dati

Schemi e istanzeSchemi e istanze

In ogni base di dati esistono:• Lo schema, sostanzialmente invariante nel

tempo, che ne descrive la struttura, il significato• L’istanza, i valori attuali, che possono

cambiare nel tempo anche molto rapidamente

Page 16: Basi di dati

Due tipi principali di modelliDue tipi principali di modelli Modelli logici che sono utilizzati nei DBMS

esistenti per l’organizzazione dei dati• Utilizzati dai programmi• Indipendenti dalle strutture fisiche• Esempi: relazionale, gerarchico, a oggetti, …

Modelli concettuali che permettono di rappresentare i dati in modo indipendente da ogni sistema• Descrivono i concetti del mondo reale• Utilizzati nelle fasi preliminari di progettazione• Esempio: entity-relationship

Page 17: Basi di dati

Architettura di un DBMSArchitettura di un DBMS

Schema logico

Schema interno

DB

Schema logico – descrive la base dati nel modello logico (ad esempio, la struttura di una tabella)

Schema interno – rappresenta lo schema logico per mezzo di strutture di memorizzazione (ad esempio, file)

Schema esterno – descrive una parte della base di dati in un modello logico (viste parziali, …)

Schema esterno

Page 18: Basi di dati

Indipendenza dei datiIndipendenza dei dati

Il modello logico e il modello esterno sono indipendenti dal modello fisico -> una tabella e’ utilizzata nello stesso modo qualunque sia la sua rappresentazione fisica (che puo’ anche cambiare nel tempo)

Page 19: Basi di dati

Linguaggi per basi di datiLinguaggi per basi di dati

Linguaggio per definire i dati• Data Definition Language – DDL

• Usati per definire gli schemi logici, fisici e le autorizzazioni di accesso

Linguaggio per manipolare i dati• Data Manipulation Lanuage – DML

• Usati per interrogare e aggiornare la basi di dati

SQL – Structured Query Language – fornisce funzioni per entrambe le categorie

Page 20: Basi di dati

Sviluppatori e utenti di DBMSSviluppatori e utenti di DBMS Progettisti e realizzatori di un DBMS Progettisti della base di dati Amministratori della base di dati (DBA) Progettisti e programmatori di applicazioni Utenti finali – eseguono applicazioni predefinite

(transazioni) Utenti casuali – eseguono operazioni non previste

a priori utilizzando linguaggi interattivi

Page 21: Basi di dati

TrasazioniTrasazioni Programmi che realizzano attivita’ frequenti e

predefinite, con poche eccezioni, previste a priori Esempi:

• Versamento presso uno sportello bancario• Emissione di certificato anagrafico• Prenotazione aerea

Osservazione: il termine transazione ha anche un altro significato: sequenza indivisibile di operazioni (o vengono eseguite tutte o nessuna)

Page 22: Basi di dati

Transazioni – l’altro significatoTransazioni – l’altro significato Transazioni: non lasciano mai la base di dati in uno

stato inconsistente Proprietà delle transazioni:

• Atomicità: vi sono solo due possibili terminazionio Successo: tutte le attività della transazione sono andate a buon fine,

la base di dati è aggiornata (commit)o Fallimento: qualche attività della transazione non va a buon fine, la

transazione fallisce tutta, la base di dati non viene modificata (rollback)

• Consistenza: i vincoli di integrità dei dati non sono mai violati

• Isolamento: transazioni concorrenti sono isolate le une dalle altre

• Durabilità: una volta completata con successo, l’effetto della transazione sulla base di dati è permanente

Page 23: Basi di dati

Basi di dati Basi di dati Una base di dati e’ una collezione di dati (rappresentati in

un forma di tabella se e’ relazionale) che rappresentano informazioni di interessa per un’organizzazione

Progettare una base dati significa travare una soluzione ottima per strutturare i dati, che rispetti i requisiti propri del sistema informativo dell’organizzazione sia i vincoli che sui dati vengono imposti

Un DBMS e’ un software che gestisce una base dati Per eseguire operazioni su una base di dati si scrivono

istruzioni in un linguaggio supportato dal DBMS (esempio: SQL)

Page 24: Basi di dati

DBMSDBMS Vantaggi:

• Gestione centralizzata dei dati come risorsa comune con opportune forme di controllo

• Riduzione di ridondanze e inconsistenze

• Indipendenza dei dati

Svantaggi• Costo dei prodotti

• Non scorporabilita’; delle funzionalita’

Page 25: Basi di dati

Basi di dati relazionaliBasi di dati relazionali Relazione, una tabella caratterizzata da:

• Un numero fisso di colonne (dette attributi); ciascuna colonna assume valori estratti da uno stesso dominio

• Un numero variabile di righe (dette tuple)

• Grado di una relazione: il numero di colonne

• Cardinalità di una relazione: il numero di righe

• Schema di una relazione: il nome della relazione seguito dai nomi dei suoi attributi; a ciascun attributo è associato un dominio

• Istanza di una relazione: insieme delle tuple presenti nella base di dati in un determinato istante (quindi, varia nel tempo)

Base di dati relazionale, un insieme di relazioni:• Schema di una base di dati: l’elenco delle relazioni

• Istanza di una base di dati: insieme delle istanze delle relazioni

Page 26: Basi di dati

Esempio schema base datiEsempio schema base datiRelation CONTO-CORRENTE

(NUMERO-CC: integer, NOME: char (20), INDIRIZZO: char (20), SALDO: decimal (14, 2)).

Relation MOVIMENTO(NUMERO-CC: integer, DATA-MOV: date, NUMERO-MOV: integer, IMPORTO: decimal (14, 2), CAUSALE: char (1)).

Page 27: Basi di dati

Esempio istanza base datiEsempio istanza base dati

NUMERO-CC NOME INDIRIZZO SALDO

1 Rossi v. Anemoni 5 3,678.00

2 Bianchi v. Bolla 64 664.00

3 Brunelli v. Po 41 6,777.50

4 Grandi v. Romolo 3 3,400.00

NUMERO-CC DATA-MOV NUMERO-MOV IMPORTO CAUSALE

1 14-01-03 1 +200.00 V

1 14-01-03 2 -500.00 P

1 27-01-03 1 +2,700.00 S

4 27-01-03 1 +1,850.40 S

3 25-01-03 1 -650.00 A

CONTO-CORRENTE

MOVIMENTO

Page 28: Basi di dati

SQL SQL Structured Query LanguageStructured Query Language

Page 29: Basi di dati

SQLSQL

Definizione:

Il linguaggio SQL è un linguaggio per la definizione e la manipolazione dei dati in database relazionali, sviluppato originariamente presso il laboratorio IBM a San Jose’ (California).

Page 30: Basi di dati

SQLSQL

E‘ un linguaggio con varie funzionalità che contiene:• DDL: definizione di domini, tabelle, autorizzazioni,

vincoli, procedure, ecc.

• DML: linguaggio di query, modifica, comandi transizionali

SQL è un linguaggio dichiarativo (non-procedurale)• Non specifica la sequenza di operazioni da compiere per

ottenere il risultato

Page 31: Basi di dati

Definizioni di schemiDefinizioni di schemi Uno schema è una collezione di oggetti:

• domini, tabelle, indici, asserzioni, viste, privilegi

Uno schema ha un nome e un proprietario

CREATE SCHEMA

[ NomeSchema ]

[ [ authorization ] Autorizzazione ]

{ DefinizioneElementoSchema }

Page 32: Basi di dati

Dedinizioni di tabelleDedinizioni di tabelle L‘istruzione CREATE TABLE definisce uno

schema di relazione e ne crea un’istanza vuota Per ogni attributo va specificato il dominio, un

eventuale valore di default ed eventuali vincoli Possono essere espressi altri vincoli a livello di

tabellaCREATE TABLE NomeTabella (

NomeAttributo Dominio [ Default ] [ Constraints ]{,NomeAttributo Dominio [ Default ] [ Constraints ] }

[ AltriConstraints ] )

Page 33: Basi di dati

Definizione di tabelleDefinizione di tabelle Esempio:

CREATE TABLE Impiegato (

Matricola CHAR(6) PRIMARY KEY,

Nome CHAR(20) NOT NULL,

Cognome CHAR(20) NOT NULL,

Dipart CHAR(15) REFERENCES Dipartimento(NomeDip),

Stipendio NUMERIC(9) DEFAULT 0,

UNIQUE (Cognome,Nome)

)

Page 34: Basi di dati

DominiDomini I domini specificano i valori ammissibili per gli

attributi di una relazione: Domini elementari:

• Bit

• Carattere

• Numerico Esatto

• Numerico Approssimato

• Data/Ora

• Intervallo Temporale

Page 35: Basi di dati

Il tipo BITIl tipo BIT Corrisponde ad attributi che possono assumere solo

due valori (0,1). Attributi di questo tipo (flag) indicano se l’oggetto rappresentato possiede o meno una certa proprietà

bitbit(lunghezza)varbit (lunghezza)

Esempio: L’attributo Lavoratore nella relazione STUDENTI indicase lo studente è o meno lavoratore:

Lavoratore bit

Page 36: Basi di dati

Il tipo CHARIl tipo CHAR Rappresenta singoli caratteri alfanumerici oppure

stringhe di lunghezza fissa o variabilecharchar(lunghezza)varchar(lunghezza)

Esempio: L’attributo Nome della relazione IMPIEGATI rappresenta sequenza di caratteri di lunghezza massima 20

Nome char(20) -> Paolo Rossi_ _ _ _ _ _ _ _ _ Nome varchar(20) -> Paolo Rossi

Page 37: Basi di dati

Tipi numerici esattiTipi numerici esatti Rappresentano numeri interi o numeri decimali in virgola fissa

(con un numero prefissato di decimali)integer smallint

numeric numeric(precisione)

numeric(precisione,scala) decimal(precisione)

decimal decimal(precisione,scala

Esempi: L’attributo Eta nella relazione IMPIEGATI: Eta decimal(2) Rappresenta tutti i numeri fra -99 e +99

L’attributo Cambio nella relazione PAGAMENTO indica il valore del cambio del dollaro preciso al centesimo di lira:

Cambio numeric(6,2) Rappresenta tutti i numeri fra -9999,99 e +9999,99

Page 38: Basi di dati

Tipi numerici approssimatiTipi numerici approssimati Sono utili per rappresentare ad esempio grandezze fisiche

(rappresentazione in virgola mobile).

float

float(precisione)double precisionreal

L’attributo Massa nella relazione ASTEROIDI:

Massa real

0,17E16 = 1,7 1015

Page 39: Basi di dati

I tipi Date/TimeI tipi Date/Time Permettono di rappresentare istanti di tempo

datetime time(precisione)timestamp timestamp(precisione)

Ciascuno di questi domini è decomponibile in un insieme di campi (anno, mese, giorno, ora, minuti, secondi):

DataDiNascita date

OraDiConsegna time

18/09/99

19.24.16

Arrivo timestamp 18/09/00 21.15.20

Page 40: Basi di dati

I tipi BLOB e CLOBI tipi BLOB e CLOB

Permettono di includere direttamente nel database oggetti molto grandi:• Binary Large Object (BLOB)

• Character Large Object (CLOB)

fotografia BLOB(10M)descrizione CLOB(100k)

Figure e documenti descrittivi

Page 41: Basi di dati

Valori di DEFAULT per un dominioValori di DEFAULT per un dominio Definiscono il valore che deve assumere

l’attributo quando non viene specificato un valore durante l’inserimento di una tupla

DEFAULT < ValoreGenerico | user | null >

ValoreGenerico rappresenta un valore compatibile con il dominio, rappresentato come una costante o come un’espressione.

User è la login dell’utente che effettua il comando

Page 42: Basi di dati

Domini definiti dagli utentiDomini definiti dagli utenti Paragonabile alla definizione dei tipi nei linguaggi di

programmazione Un nuovo dominio è caratterizzato dalle seguenti

informazioni: nome, dominio elementare, valore di default, insieme di vincoli (constraints)

CREATE DOMAIN NomeDominio as DominioElementare

[ ValoreDefault ] [ Constraints ]

Page 43: Basi di dati

Esempio: CREATE DOMAINEsempio: CREATE DOMAINCREATE DOMAIN Voto AS SMALLINT

DEFAULT 0

NOT NULL)

Il nuovo dominio Voto è definito come uno SMALLINT con valore di default e che non deve essere nullo.

I “nuovi domini” sono utili perché, ad esempio, modifiche alla definizione di Voto si ripercuotono in tutte le occorrenze di questo dominio nello schema del Database.

Page 44: Basi di dati

Il valore NULLIl valore NULL E’ un valore polimorfico (che appartiene a tutti i

domini) col significato di valore non noto:

1) il valore esiste in realtà ma è ignoto al database (es.: data di nascita)

2) il valore è inapplicabile (es.: numero patente per minorenni)

3) non si sa se il valore è inapplicabile o meno (es.: numero patente per un maggiorenne)

Page 45: Basi di dati

Vincoli/ContraintsVincoli/Contraints Un vincolo è una regola che specifica delle

condizioni sui valori di un elemento dello schema del database.

Un vincolo può essere associato ad una tabella, ad un attributo, ad un dominio.

I vincoli possono essere di due tipi:• Vincoli Intrarelazionali

o Si applicano all’interno di una relazione

• Vincoli Interrelazionali o Si applicano tra relazioni diverse

Page 46: Basi di dati

Vincoli intrarelazionaliVincoli intrarelazionali

NOT NULL (Il valore non deve essere nullo)

UNIQUE (I valori non devono essere ripetuti)

PRIMARY KEY (Chiave primaria)

CHECK (Condizioni complesse)

Page 47: Basi di dati

EsempioEsempio

CREATE TABLE Impiegato (

Matricola CHAR(6) PRIMARY KEY,

Nome CHAR(20) NOT NULL,

Cognome CHAR(20) NOT NULL,

Stipendio NUMERIC(9) DEFAULT 0,

UNIQUE (Cognome, Nome)

)

Vincolo su più attributiVincolo su un attributo

Page 48: Basi di dati

Vincoli intrarelazionaliVincoli intrarelazionali

CREATE TABLE Impiegato (

Matricola CHAR(6) PRIMARY KEY,

Nome CHAR(20) NOT NULL,

Cognome CHAR(20) NOT NULL,

Stipendio NUMERIC(9) DEFAULT 0,

UNIQUE (Cognome, Nome)

)

L’attributo o la n-pla di attributi su cui è definito il vincolo UNIQUE non possono avere istanze uguali ripetute.

Page 49: Basi di dati

Vincoli intrarelazionaliVincoli intrarelazionaliCREATE TABLE Impiegato (

Nome CHAR(20) NOT NULL,

Cognome CHAR(20) NOT NULL,

Stipendio NUMERIC(9) DEFAULT 0,

PRIMARY KEY (Cognome, Nome)

In alcune implementazioni di SQL potrebbe essere necessario specificare comunque anche il vincolo NOT NULL per tutti gli attributi coinvolti.

Page 50: Basi di dati

OSSERVAZIONEOSSERVAZIONE

Nome CHAR(20) NOT NULL,

Cognome CHAR(20) NOT NULL,

UNIQUE (Cognome, Nome),

Non è la stessa cosa di:

Nome CHAR(20) NOT NULL UNIQUE,

Cognome CHAR(20) NOT NULL UNIQUE,

Nome

Luca

Francesca

Emilio

Giovanni

Cognome

Neri

Bianchi

Verdi

Rossi

Nome

Luca

Emilio

Emilio

Giovanni

Cognome

Rossi

Bianchi

Verdi

Rossi

Page 51: Basi di dati

Vincoli intrarelazionaliVincoli intrarelazionali

CREATE DOMAIN Voto AS SMALLINT

DEFAULT 0

NOT NULL)

CREATE DOMAIN Voto AS SMALLINT

DEFAULT 0

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

Page 52: Basi di dati

Vincoli interrelazionaliVincoli interrelazionali

Coinvolgono più relazioni / tabelle.

Definiamo tre tabelle con le informazioni degli esami sostenuti dagli studenti:• Tabella Studente

• Tabella Esame

• Tabella Corso

Page 53: Basi di dati

Tabella StudenteTabella StudenteCREATE TABLE Studente ( Matr CHAR(6) PRIMARY KEY,Nome VARCHAR(30) NOT NULL,Città VARCHAR(20),CDip CHAR(3) )

Matr

34321

73321

64521

53524

Nome

Luca

Giovanni

Emilio

Francesca

Città

Mi

To

Ge

Vr

CDip

Inf

Mat

Ing

Mat

Page 54: Basi di dati

Tabella EsameTabella EsameCREATE TABLE Esame ( Matr CHAR(6),CodCorso CHAR(6),Data DATE NOT NULL,Voto Voto,PRIMARY KEY (Matr, CodCorso) )

CodCorso

1

2

1

Data

25/02/01

14/12/01

12/03/02

Voto

28

30

24

18/01/02 184

Matr

34321

73321

64521

34321

Page 55: Basi di dati

Tabella CorsoTabella CorsoCREATE TABLE Corso ( CodCorso CHAR(6) PRIMARY KEY,Titolo VARCHAR(30) NOT NULL,Docente VARCHAR(20) )

CodCorso

1

2

3

Titolo

matematica

informatica

ingegneria

Docente

Barozzi

Meo

Neri

Matematica Bianchi4

Page 56: Basi di dati

Vincoli interrelazionaliVincoli interrelazionaliREFERENCES Permettono di definire vincoli di integrità

FOREIGN KEY referenziale

CHECK (Vincoli complessi)

Si hanno due sintassi• per singoli attributi

• su più attributi

E' possibile definire politiche di reazione alle violazioni.

Page 57: Basi di dati

Vincoli interrelazionaliVincoli interrelazionaliMatr

34321

73321

64521

53524

Nome

Luca

Giovanni

Emilio

Francesca

Città

Mi

To

Ge

Vr

CDip

Inf

Mat

Ing

MatCodCorso

1

2

1

Data

25/02/01

14/12/01

12/03/02

Voto

28

30

24

18/01/02 184

Matr

34321

73321

64521

34321

CodCorso

1

2

3

Titolo

matematica

informatica

ingegneria

Docente

Barozzi

Meo

Neri

Matematica Bianchi4 Corso

Esame

Studente

Page 58: Basi di dati

Vincoli interrelazionaliVincoli interrelazionali

CREATE TABLE Esame (

Matr CHAR(6),

CodCorso CHAR(6),

Data DATE NOT NULL,

Voto Voto,

PRIMARY KEY (Matr, CodCorso)

FOREIGN KEY (Matr) REFERENCES Studente

FOREIGN KEY (CodCorso) REFERENCES Corso

)

Page 59: Basi di dati

Vincoli interrelazionaliVincoli interrelazionali

CREATE TABLE Esame ( Matr CHAR(6) REFERENCES

Studente,

CodCorso CHAR(6) REFERENCES Corso,

Data DATE NOT NULL,

Voto Voto,

PRIMARY KEY (Matr, CodCorso)

)

Page 60: Basi di dati

Vincoli interrelazionaliVincoli interrelazionali

Matr

34321

73321

64521

53524

Nome

Luca

Giovanni

Emilio

Francesca

Città

Mi

To

Ge

Vr

CDip

Inf

Mat

Ing

Mat

CodCorso

1

2

1

Data

25/02/01

14/12/01

12/03/02

Voto

28

30

24

18/01/02 184

Matr

34321

73321

64521

34321

Esame

Studente

Se eliminiamo da Studente la tupla con matricola 34321, cosa succede alla tabella Esame?

Problema degli orfani!

Page 61: Basi di dati

Vincoli interrelazionali: Vincoli interrelazionali: reazioni alle violazionireazioni alle violazioni

Le reazioni operano sulla tabella figlio (es Esami), in seguito a modifiche alla tabella padre (es Studente)

Reazioni previste:

CASCADE : propaga la modifica

SET NULL: annulla l’attributo che fa riferimento

SET DEFAULT: assegna il valore di default all’attributo

NO ACTION : impedisce che la modifica possa avvenire Le violazioni possono essere introdotte:

1. da modifica (update) dell’attributo cui si fa riferimento

2. da cancellazioni di tuple

Page 62: Basi di dati

Vincoli interrelazionaliVincoli interrelazionaliMatr

123

120

789

456

Nome Città CDip

StudenteCodCorso

1

2

Data

25/02/01

14/12/01

Voto

28

30

18/01/02 254

Matr

123

120

123

Esame

1 12/03/02 NULL

18/01/02 234555

456

1 12/03/02 24123Viola la chiave

Viola il NULL

Viola integrità referenziale

Una istanza scorretta

Page 63: Basi di dati

Vincoli interrelazionaliVincoli interrelazionali

Matr

123

120

789

456

Nome Città CDip

StudenteCodCorso

1

2

Data

25/02/01

14/12/01

Voto

28

30

18/01/02 254

Matr

123

120

123

Esame

Una istanza corretta

Page 64: Basi di dati

Modifiche degli schemiModifiche degli schemi Necessarie per garantire l’evoluzione della base di

dati a fronte di nuove esigenze. Ci sono due comandi SQL appositi:

ALTER: modifica oggetti persistenti

DROP: cancella oggetti dallo schema

Page 65: Basi di dati

Modifiche degli schemiModifiche degli schemi

Si applica su domini e tabelle: ALTER TABLE NomeTabella <

ALTER COLUMN NomeAttributo |

DROP COLUMN NomeAttributo |

ADD COLUMN DefAttributo |

DROP CONSTRAINT NomeVincolo

ADD CONSTRAINT DefVincolo >

Page 66: Basi di dati

Modifiche degli schemiModifiche degli schemi Cancella oggetti DDL, si applica su domini, tabelle, indici,

view, asserzioni, procedure,...

DROP < schema, domain, table, view, ...> NomeElemento

[ RESTRICT | CASCADE ]

Opzioni:RESTRICT Impedisce drop se gli oggetti comprendono istanze

CASCADE Applica drop agli oggetti collegati

Page 67: Basi di dati

EsercizioEsercizio

Si consideri il seguente schema relazionale:

Implementare in SQL lo schema relazionale dell’esercizio con gli opportuni vincoli di integrità

Page 68: Basi di dati

EsercizioEsercizio

CREATE TABLE PRODOTTO (cod-prod char(3) PRIMARY KEY,descrizione char(25),prezzo-unitario integer CHECK (prezzo-unitario > 0))

CREATE TABLE FATTURA (cod-fatt char(3),cliente char(25),cod-prod char(3) REFERENCES Prodotto (cod-prod),quantità smallint CHECK (quantità > 0),PRIMARY KEY (cod-fatt, cod-prod))