introduzione alle basi di dati -...
TRANSCRIPT
Introduzionealle Basi di Dati
Credits Prof. Alessandro Campi
Materiale
• Teoria: bastano le slide– Materiale costruito partendo da:
• Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo Torlone«Basi di dati: Modelli e linguaggi di interrogazione»
• Esercizi: bastano le slide– Riusati identici in:
• Braga Brambilla Campi «Eserciziario basi di dati» Editrice Esculapio
Informazioni e dati
Facciamo subito una distinzione:
– informazione: notizia, dato o elemento che consente di avere conoscenza più o meno esatta di fatti, situazioni, modi di essere.
– dato: ciò che è immediatamente precedente alla conoscenza, prima di ogni elaborazione;
– dato in informatica: elementi di informazione costituiti da simboli che debbono essere elaborati
(definizioni dal Vocabolario della lingua italiana 1987)
Dal dato all’informazione
• Dato: <Stefano Ceri, Basi di dati, IIIA, I Sem>
• Informazione:
– Chi insegna basi di dati? Stefano Ceri
– Quando si tiene il corso? Al I semestre del III anno.
Dal dato all’informazione
Un esempio:
Mario 2753
su un foglio di carta sono due dati e non significano molto
Dal dato all’informazione
Un esempio:
Mario 2753
su un foglio di carta sono due dati e non significano molto
Se il foglio di carta viene fornito in risposta alla domanda “A chi mi devo rivolgere per abilitare il mio badge aziendale; qual è il suo numero di telefono interno?”, allora i dati possono essere interpretati per fornire informazione e arricchire la conoscenza
Informazioni e Dati
• I dati di per se non hanno alcun significato, ma una volta elaborati ed interpretati possono fornire informazioni, conoscenza.
• Tipicamente, nei sistemi informatici:
• i dati sono l’input, le informazioni l’output
• dati ed informazioni vengono immagazzinati allo stesso modo ma rappresentano comunque due entità distinte.
Il valore dei dati
I dati tipicamente sono più stabili delle applicazioni e di altre componenti del sistema informatico (processi, tecnologie, ruoli umani):
– ad esempio, la struttura dei dati delle banche o delle anagrafi è immutata, mentre le applicazioni cambiano rapidamente (e.g. homebanking)
I dati costituiscono spesso una risorsa strategica– Si pensi ad aziende come Google e FB…
Non a caso, fin dagli anni ’60 si studiano sistemi informatici specifici per gestire i dati
… e non bastano i files?
Non possiamo mettere tutto in uno (o più) files?
NO! I files hanno semplici meccanismi di
– Accesso
– Condivisione
Se le informazioni sono utilizzate da diverse applicazioni occorre avere files distinti, uno per ogni applicazione.
-> rischio ridondanza ed incongruenza
BASE DI DATI E FILE SYSTEM A CONFRONTO
PROGRAMMAAPPLICATIVO
FILE SYSTEM
DATI
DATI
DATI
DATI
DATI
DATI
PROGRAMMAAPPLICATIVO
DATI
PROGRAMMAAPPLICATIVO
PROGRAMMAAPPLICATIVO
PROGRAMMAAPPLICATIVO
PROGRAMMAAPPLICATIVO
DBMS
IL DBMS
Base di dati
• Accezione generica, metodologica
– Insieme organizzato di dati utilizzato per estrarre informazioni di interesse per un’applicazione (o per il supporto a specifiche attività)
• Accezione specifica, metodologica e tecnologica
– insieme di dati gestito da un Data Base Management System (DBMS)
Data Base Management System (DBMS)
Sistema che gestisce collezioni di dati: – Grandi:
• dimensioni (molto) maggiori della memoria centrale dei sistemi di calcolo utilizzati
• Il sistema deve poter gestire basi di dati che crescono nel tempo
– Condivise:• Applicazioni ed utenti diversi devono poter accedere secondo
opportune modalità a dati comuni
• La condivisione riduce la ridondanza ed il rischio di inconsistenze
• Garantisce accesso simultaneo mediante il controllo di concorrenza per evitare inconsistenze
– Persistenti: • hanno un tempo di vita indipendente dalle singole esecuzioni dei
programmi che le utilizzano
Data Base Management System (DBMS)
Il DBMS inoltre garantisce:
– Affidabilità: il contenuto della base dati viene preservato anche in caso di malfunzionamenti
– Privatezza: ogni utente/applicazione è abilitato a svolgere solo specifiche operazioni (accesso regolato da autorizzazioni)
– Efficienza: svolgono operazioni (e.g. caricamento, query, sort) utilizzando un numero limitato di risorse (tra cui spazio su disco e tempo di attesa).
– Efficacia: rendono produttive le attività degli utenti.
Data Base Management System (DBMS)
N.B il DBMS a sua volta utilizza files per immagazzinare i dati, anche se questi sono organizzati secondo specifici criteri per garantire le caratteristiche descritte in precedenza, e non come i files testuali.
DBMS
Molti software DBMS disponibili sul mercato;
Esempi:– Access
– DB2
– Oracle
– Informix
– Sybase
– SQLServer
– MySql
INTEGRAZIONE DEI DATI
OGNI DATO, A PRESCINDERE DALLE APPLICAZIONI DALLE QUALI VENGA UTILIZZATO, COMPARE UNA SOLA VOLTA
– ELIMINA INUTILI RIDONDANZE E SPRECHI DI MEMORIA
– MIGLIORA LA CONSISTENZA DEI DATI (non è infatti possibile che lo stesso dato abbia contemporaneamente due valori diversi)
Le ridondanze vengono evitate introducendo vincoli di integrità che preservano la qualità del dato.
Come si usa un DBMS ?
a definendo la struttura generale dei dati, i.e., lo schema che rimane fisso.
b definendo le specifiche operazioni sui dati, i.e.,
le istanze che possono variare.
STRUTTURA DEI DATI SUI CONTI CORRENTI
conto corrente di Giorgio Rossi
conto corrente di Paolo Bianchi……………………………………….
schema
istanza
Esempio : studenti universitari
studente
MATR
123
415
702
NOME
Carlo
Paola
Antonio
CITTA’
Bologna
Torino
Roma
C-DIP
Inf
Inf
Log
I linguaggi del DBMS
DATA DEFINITION LANGUAGE (DDL)es: CREATE, DROP, ALTER
usato per realizzare gli schemi logici, esterni e fisici e per gestire le autorizzazioni di accesso
DATA MANIPULATION LANGUAGE (DML)es: SELECT, INSERT, UPDATE, DELETE
Usato per l’aggiornamento, la manutenzione e l’interrogazione delle basi dati
DML: Query Language
select *
from Studente
where Città = ’Bologna’
Matr
123
Nome
Carlo
Città
Bologna
CDip
Inf
MODELLO LOGICO DEI DATI
MODELLI DEI DATII MODELLI COSTITUISCONO UNA STRUTTURAZIONE SEMPLIFICATA DELLA REALTA’ CHE NE ACCOGLIE ASPETTI SPECIFICI E AIUTA A COMPRENDERLA MEGLIO
MONDO REALE
MODELLO CONCETTUALE
MODELLI LOGICI (strutture astratte che rispecchiano una precisa organizzazione del dato)
GERARCHICO
RETICOLARE
RELAZIONALE
Cronologia dei modelliper la rappresentazione dei dati
• Modello gerarchico (anni 60)
• Modello reticolare (anni 70)
• Modello relazionale (anni 80)
• Modello a oggetti (anni 90)
• Modello XML (anni 00)
MODELLI LOGICI DEI DATI
GERARCHICO – I DATI SONO RAPPRESENTATI COME RECORD
– LE ASSOCIAZIONI TRA I DATI SONO RAPPRESENTATE CON PUNTATORI IN UNA STRUTTURA AD ALBERO
GERARCHICO
MODELLI LOGICI DEI DATI
RETICOLARE (CODASYL)
– I DATI SONO RAPPRESENTATI COME RECORD
– LE ASSOCIAZIONI TRA I DATI SONO RAPPRESENTATE CON PUNTATORI IN UNA STRUTTURA A GRAFO COMPLESSO
RETICOLARE
MODELLI LOGICI DEI DATIRELAZIONALE
– I DATI SONO RAPPRESENTATI COME TABELLE
• Ogni riga rappresenta un record,
• Ogni colonna rappresenta uno specifico campo dei record
– LE ASSOCIAZIONI TRA I DATI SONO OTTENUTE ASSOCIANDO VALORI DI ATTRIBUTI IN TABELLE DIVERSE
• Non vengono esplicitamente codificate le relazioni tra i datia differenza del modello gerarchico
RELAZIONALE
IL MODELLO RELAZIONALE
Cronologia del modello relazionale
• Inventato da T. Codd, 1970
(IBM Research di Santa Teresa, Cal)
• Primi progetti:
SYSTEM R (IBM), Ingres (Berkeley Un.)
• Principali scoperte tecnologiche: 1978-1980
• Primi sistemi commerciali:
inizio anni ‘80 (Oracle, IBM-SQL DS e DB2, Ingres, Informix, Sybase)
• Successo commerciale: dal 1985.
Definizione informale di relazione
31
’
Nomenclatura per la relazione
32
’
Definizione formale di relazione
• Dominio 𝐷:
– un qualunque insieme di valori
• Prodotto cartesiano di 𝑛 domini 𝑋 = 𝑥𝐷1 × 𝐷2 ×⋯× 𝐷𝑛– insieme delle 𝑛-ple (tuple) < 𝑑1, 𝑑2, … , 𝑑𝑛 >, con 𝑑𝑖 ∈ 𝐷𝑖 ,
𝑖 = 1 , . . , 𝑛
• Relazione R su 𝐷1 × 𝐷2 ×⋯× 𝐷𝑛:
– Un qualunque sottoinsieme di 𝐷1 × 𝐷2 ×⋯× 𝐷𝑛– 𝐷1, … , 𝐷𝑛 sono i domini della relazione. Una relazione su 𝑛
domini ha grado 𝑛.
– Il numero di 𝑛-uple in 𝑅 è la cardinalità della relazione. Nelle applicazioni reali la cardinalità è sempre finita
Esempio nel piano cartesiano
Domino: ℝ
Prodotto cartesiano: ℝ2 = ℝ ×ℝ
Relazione: un sottoinsieme / sottospazio di ℝ2
NB: I domini in un prodotto cartesiano non devono necessariamente distinti
Esempio
• Domini– D1 = {a,b}– D2 = {1,2,3}
• Prodotto cartesiano– D1 x D2 = { <a,1>, <b,1>, <a,2>, <b,2>, <a,3>, <b,3> }
• Esempi di relazione– R1 = { <a,1>, <b,3> }– R2 = { <a,1>, <b,3>, <a,2> }– R3 = { }– R4 = { <a,1>, <b,1>, <a,2>, <b,2>, <a,3>, <b,3> }
Relazioni
Osservazioni Importanti:
– una relazione non ammette duplicati perché è un insieme (tutte le tuple sono distinte)
– non esiste alcun ordinamento tra le tuple
– le tuple sono al loro interno ordinate: l’𝑖-simo valore proviene dall’𝑖-simo dominio. Non è possibile cambiare la posizione delle componenti.
Proprietà
• Grado della relazione:
– numero di domini (𝑛)
• Cardinalità della relazione:
– numero di 𝑛-tuple di una relazione
• Attributo:
– nome dato al dominio in una relazione
– I nomi di attributo in una relazione devono essere tutti distinti fra loro
38
Ecco cosa si intende nella definizione informale
Partite string × string × integer × integer
• Ciascuno dei domini ha due ruoli distinti, distinguibili attraverso la posizione: il primo e il terzo dominio si riferiscono a nome e reti della squadra ospitante; il secondo e il quarto a nome e reti della squadra ospitata.• La struttura è posizionale
Juve Lazio 3 1Lazio Milan 2 0Juve Roma 1 2Roma Milan 0 1
Nei DB, invece, associamo a ciascun dominio un nome (attributo), unico nella relazione, che “descrive” il ruolo del dominio.
– Nella rappresentazione tabulare, gli attributi possono essere usati come intestazioni delle colonne.
– L’ordinamento fra gli attributi è irrilevante per lo schema (a patto di modificare le tuple): la struttura è non posizionale
Casa Fuori RetiCasa RetiFuori
Juve Lazio 3 1
Lazio Milan 2 0
Juve Roma 1 2
Roma Milan 0 1
Relazioni (cnt.)
Osservazioni Importanti:
– le tuple sono al loro interno ordinate: l’𝑖-simo valore proviene dall’𝑖-simo dominio. Non è possibile cambiare la posizione delle componenti, nemmeno quando fanno riferimento allo stesso dominio. Con gli attributi si dà infatti un significato diverso ai valori delle istanze (e.g. squadra di casa, squadra ospiti)
Formalizzando
• L’associazione fra domini e attributi è definita da una funzione 𝑑𝑜𝑚(⋅) che associa a ciascun attributo un dominio 𝐷
• Una 𝒏-tupla su un insieme di attributi 𝑋 è una funzione che associa a ciascun attributo 𝐴 di 𝑋 un valore del dominio 𝑑𝑜𝑚(𝐴)
• Una relazione su 𝑋 è un insieme di ennuple su 𝑋
(definizione non posizionale, le tuple sono definite mediante i loro attributi, senza la nozione di posizione)
Formalizzando
• Se 𝑡 è una 𝑛-tupla su 𝑋 e 𝐴 ∈ 𝑋, allora
𝑡[𝐴] (o 𝑡. 𝐴 ) indica il valore che l’attributo 𝐴 assume nella 𝑛-tupla 𝑡.
• Nell’esempio, se 𝑡 è la prima ennupla della tabella
𝑡[Fuori] = Lazio
• La stessa notazione è estesa anche ad insiemi di attributi, nel qual caso denota ennuple:
𝑡[Fuori, RetiFuori] è una ennupla su due attributi e vale < Lazio, 1 >
Tabelle e Relazioni
• Una tabella rappresenta una relazione se
• i valori di ciascuna colonna sono fra loro omogenei (dallo stesso dominio)
• le righe sono diverse fra loro
• le intestazioni delle colonne sono diverse tra loro
• Inoltre, in una tabella che rappresenta una relazione
• l’ordinamento tra le righe è irrilevante
• l’ordinamento tra le colonne è irrilevante
Confronto della terminologia
DEFINIZIONE
FORMALE
relazione
attributo
tupla, n-pla
dominio
cardinalita'
grado
DEFINIZIONE
INFORMALE
tabella
colonna
riga
tipo di dato
numero di righe
numero di colonne
Una differenza significativa
DEFINIZIONEFORMALEassenzadi duplicati
DEFINIZIONEINFORMALE possibili duplicati
Esempio: gestione degli esamiuniversitari
’
Esempio: gestione degli esami universitari (v.2)
Il modello relazionale è basato su valori
• I riferimenti fra dati in relazioni diverse sono rappresentati per mezzo di valori dei domini che compaiono nelle ennuple.
Perché sui valori?
• Indipendenza dalle strutture fisiche (si potrebbe avere anche con puntatori di alto livello) che possono cambiare anche dinamicamente
• Si rappresenta solo ciò che è rilevante dal punto di vista dell’applicazione (dell’utente); i puntatori sono meno comprensibili per l’utente finale (senza, l’utente finale vede gli stessi dati dei programmatori)
• I dati sono portabili più facilmente da un sistema ad un altro
• I puntatori sono direzionali, le connessioni tra valori non lo sono
Interrogazioni
• Quali professori hanno esaminato Carlo?
studente
MATR
123
415
702
NOME
Carlo
Paola
Antonio
CITTA’
Bologna
Torino
Roma
INDIR
Inf
Inf
Log
esame
MATR
123
123
702
COD-CORSO
1
2
2
DATA
7-9-03
8-1-03
7-9-03
VOTO
10
8
5
corsoCOD-CORSO
1
2
TITOLO
matematica
informatica
DOCENTE
Barozzi
Meo
Interrogazioni 1/2
’
Interrogazioni
• Quali studenti hanno preso 10 in matematica?
studente
MATR
123
415
702
NOME
Carlo
Paola
Antonio
CITTA’
Bologna
Torino
Roma
INDIR
Inf
Inf
Log
esame
MATR
123
123
702
COD-CORSO
1
2
2
DATA
7-9-03
8-1-03
7-9-03
VOTO
10
8
5
corsoCOD-CORSO
1
2
TITOLO
matematica
informatica
DOCENTE
Barozzi
Meo
Interrogazioni 2/2
’
Esempio: gestione del personale
chi e' il manager di Piero?
chi e' il manager di Piero?
in quali tipi di progetti lavora Giovanni?
in quali tipi di progetti lavora Giovanni?
Riflessioni
a differenza fra schema e istanza
b due attività assai differenti:- progetto dello schema- gestione dell'istanza
c passaggio dai dati all'informazione(Query language)
Esempio: ricevuta fiscale
“Da Filippo”Via Roma 239100 ChissadoveP.I. 012345678
“Da Filippo”Via Roma 239100 ChissadoveP.I. 012345678
Rappresentazione relazionale v.1
’
Va bene…
Però dobbiamo sapere due cose:
– Perdiamo l’ordinamento delle portate nella ricevuta
– Assumiamo che in una ricevuta non compaiono due righe uguali (altrimenti avremmo due tupleidentiche nei dettagli)
Per risolvere il problema posso aggiungere per ogni dettaglio la posizione nella ricevuta
Rappresentazione relazionale v.2
’
Informazione incompleta
• ll modello relazionale impone ai dati una struttura rigida:– le informazioni sono rappresentate per mezzo
di 𝑛-uple
– solo alcuni formati di 𝑛-upla corrispondenti agli schemi di relazione sono ammessi
• I dati disponibili possono non corrispondere esattamente al formato previsto, per varie ragioni.
Informazione incompleta
• Firenze è provincia, ma non conosciamo l'indirizzo della prefettura
• Tivoli non è provincia: non ha prefettura• Prato è “nuova” provincia: ha la prefettura?
Informazione incompleta
• Non conviene (anche se spesso si fa) utilizzare valori ordinari del dominio (0, stringa nulla, “99”, etc), per vari motivi:
– potrebbero non esistere valori “non utilizzati”
– valori “non utilizzati” potrebbero diventare significativi
• Risulta necessario ogni volta tener conto del “significato” di questi valori
Informazione incompleta
• Si adotta una tecnica rudimentale ma efficace:– valore nullo: denota l’assenza di un valore del dominio (e
non è un valore del dominio)
• Formalmente, è sufficiente estendere il concetto di ennupla:
𝑡[𝐴], per ogni attributo 𝐴, è un valore del dominio 𝑑𝑜𝑚 𝐴 oppure il valore nullo 𝑁𝑈𝐿𝐿
• Si possono (e debbono) imporre restrizioni sulla presenza di valori nulli
Informazione incompleta
NULL
• Tre casi differenti
– valore sconosciuto: esiste un valore del dominio, ma non è noto (Firenze)
– valore inesistente: non esiste un valore del dominio (Tivoli)
– valore senza informazione: non è noto se esista o meno un valore del dominio (Prato)
• I DBMS non distinguono i tipi di valore nullo (e quindi implicitamente adottano il valore senza informazione)
• È utile usare NULL pre rappresentare anche le tuple che non matchano lo schema (per via di informazioni mancanti)
Vincoli di integrità
• Esistono istanze di basi di dati che, pur sintatticamente corrette, non rappresentano informazioni possibili per l’applicazione di interesse .
Vincoli di integrità
• Esistono istanze di basi di dati che, pur sintatticamente corrette, non rappresentano informazioni possibili per l’applicazione di interesse .
Vincoli di integrità
• Escludono alcune istanze in quanto non rappresentano correttamente il mondo applicativo
– VINCOLI SUI VALORI NULLI
– INTEGRITA' REFERENZIALE
– VINCOLI GENERICI
– CHIAVI
Vincoli di integrità
Definizione
proprietà che deve essere soddisfatta dalle istanze che rappresentano informazioni corrette per l’applicazione ogni vincolo può essere visto come una funzione booleana (o un predicato) che associa ad ogni istanza il valore vero o falso.
Vincoli di integrità
Tipi di vincoli:
– vincoli intra-relazionali; casi particolari:
• vincoli su valori (o di dominio)
• vincoli di 𝑛-upla
– vincoli inter-relazionali
• Risultano utili al fine di descrivere la realtà di interesse in modo più accurato di quanto le strutture permettano;
• Forniscono un contributo verso la “qualità dei dati”
• Costituiscono uno strumento di ausilio alla progettazione (“normalizzazione”)
• Sono utilizzati dal sistema nella scelta della strategia di esecuzione delle interrogazioni
• Non tutte le proprietà di interesse sono rappresentabili per mezzo di vincoli esprimibili direttamente
Vincoli di ennupla
• Esprimono condizioni sui valori di ciascuna ennupla, indipendentemente dalle altre ennuple.
• Una possibile sintassi: espressione booleana (con AND, OR e NOT) di atomi che confrontano valori di attributo o espressioni aritmetiche su di essi.
• Un vincolo di ennupla è un vincolo di dominio se coinvolge un solo attributo
• Esempi:
– (Voto >= 18) AND (Voto <= 30)
– (Voto =30) OR NOT (Lode = “e lode”)
– Lordo = (Ritenute + Netto)
Nozione di chiave
Sottoinsieme degli attributi dello schema che ha la proprietà di unicità e minimalità
unicità: non esistono due tuple con chiave uguale
minimalità: sottraendo un qualunque attributo alla chiave si perde la proprietà di unicità
Se il sottoinsieme non è minimale si parla di SUPERCHIAVE
Nozione di chiave
Spesso non esiste un solo attributo chiave!
Quindi, se tolgo un attributo chiave ottengo che alcune 𝑛-uple della relazione (i.e., righe della tabella) potrebbero violare il vincolo di unicità della chiave.
Vincoli di Chiave
Le tuple di una relazione hanno già un vincolo di unicità implicito: non possono esistere due tuple uguali
Spesso però è opportuno avere vincoli più stringenti e richiedere che l’unicità riguardi anche solo alcune colonne.
Ad esempio
Chiavi nell'esempio : gestione degli esami universitari
MATR COD-CORSO DATA VOTO
COD-CORSO TITOLO DOCENTE
studente
corso
esame
MATR NOME CITTA’ INDIR
Chiavi nell'esempio : gestione degli esami universitari
MATR COD-CORSO DATA VOTO
COD-CORSO TITOLO DOCENTE
studente
corso
esame
MATR NOME CITTA’ INDIR
Chiavi nell'esempio : gestione degli esami universitari
MATR COD-CORSO DATA VOTO
COD-CORSO TITOLO DOCENTE
studente
corso
esame
MATR NOME CITTA’ INDIR
Chiavi nell'esempio : gestione degli esami universitari
MATR COD-CORSO DATA VOTO CodIscrizione
COD-CORSO TITOLO DOCENTE
studente
corso
esame
MATR NOME CITTA’ INDIR
Con molteplici chiavi:
una è definita CHIAVE PRIMARIAle rimanenti chiavi sono SECONDARIE
CLIENTE(COD-CLIENTE, INDIRIZZO, P-IVA)
Chiave primaria: COD-CLIENTEChiave secondaria: P-IVA
Esiste sempre una chiave?
• Poiché le relazioni sono insiemi, ogni relazione non può contenere ennuple distinte ma uguali fra loro:– ogni relazione ha come superchiave l’insieme degli
attributi su cui è definita;
• Poiché l’insieme di tutti gli attributi è una superchiave per ogni relazione, ogni schema di relazione ha tale insieme come superchiave;
• Poiché l’insieme di attributi è finito, ogni schema di relazione ha (almeno) una chiave
Importanza delle chiavi
• L’esistenza delle chiavi garantisce l’accessibilità a ciascun dato della base di dati
• Ogni singolo valore è univocamente accessibile tramite:– nome della relazione
– valore della chiave
– nome dell’attributo
• Le chiavi sono lo strumento principale attraverso il quale vengono correlati i dati in relazioni diverse (“il modello relazionale è basato su valori”)
Esempio: gestione del personale
91
Esempio: gestione ordini
92
Chiavi e valori nulli
• In presenza di valori nulli, gli attributi che formano la chiave– non permettono di identificare le 𝑛-uple come
desiderato
– né permettono di realizzare facilmente i riferimenti da altre relazioni
• La presenza di valori nulli nelle chiavi deve essere limitata
• Soluzione pratica: per ogni relazione scegliamo una chiave (la chiave primaria) su cui non ammettiamo valori nulli
Foreign Key
• Informazioni in relazioni diverse sono correlate attraverso valori comuni
• In particolare, valori delle chiavi (primarie, di solito)
• Un vincolo di integrità referenziale fra un insieme di attributi X di una relazione R1 e un’altra relazione R2 impone ai valori su X di ciascuna ennupla dell’istanza di R1 di comparire come valori della chiave (primaria) dell’istanza di R2
Chiavi esterne: esempio
MATR COD-CORSO DATA VOTO
COD-CORSO TITOLO DOCENTE
studente
corso
esame
MATR NOME CITTA’ INDIR
Definizione di tabelle
• Una tabella consiste di:– un insieme ordinato di attributi
– un insieme di vincoli (eventualmente vuoto)
• Comando create table
– definisce lo schema di una relazione, creandone un’istanza vuota
create table Studente
( Matr character(6) primary key,
Nome varchar(30) not null,
Città varchar(20),
CDip char(3) )
Vincoli intra-relazionali
• I vincoli sono condizioni che devono essere verificate da ogni istanza della base di dati
• I vincoli intra-relazionali coinvolgono una sola relazione (distinguibili ulteriormente a livello di tupla o di tabella)– not null (su un solo attributo; a livello di tupla)
– unique: permette la definizione di chiavi candidate (opera quindi a livello di tabella); sintassi:• per un solo attributo:
unique, dopo il dominio
• per diversi attributi:unique( Attributo {, Attributo } )
– primary key: definisce la chiave primaria (una volta per ogni tabella; implica not null); sintassi come per unique
– check: può rappresentare vincoli di ogni tipo
Integrità referenziale
• Esprime un legame gerarchico (padre-figlio) fra tabelle
• Alcuni attributi della tabella figlio sono definiti FOREIGN KEY
• I valori contenuti nella FOREIGN KEY devono essere sempre presenti nella tabella padre
Una istanza scorrettaMatr
123
415
702
Nome Città CDip
Matr
123
123
123
702
702
714
CodCorso
1
2
2
2
1
1
Data
7-9-97
8-1-98
1-8-97
7-9-97
NULL
7-9-97
Voto
30
28
28
20
NULL
28
Esame
viola la chiave
viola il NULL
viola la integrità referenziale