vuoi
o PayPal
tutte le volte che vuoi
Schema di base di dati
D→ 1 2 nche associa ad ogni nome di attributo in {A ,A ,1 2. . . ,A } il corrispondente dominionLa coppia (R(A ,A , . . . ,A ), dom) e` uno1 2 nschema di relazione 12 6 Siano S , S , . . . , S schemi di relazioni, con 1 2 nnomi di relazione distintiS = {S , S , . . . , S } e` detto1 2 nschema di base di dati 13 EsempioSchema: Film(titolo,regista,anno,genere,valutaz)dom(titolo) = dom(regista) = dom(genere) = stringdom(anno) = intdom(valutaz) = realRelazione string × string × int × string × real⊆Tupla: [titolo:‘ed wood’,regista:‘tim burton’,anno:1994,genere:’drammatico’,valutaz:4.00] 14 7 Valori nulliNon sempre sono disponibili informazioni sulle entità del dominio applicativorappresentato nella base di datialcune tuple possono non avere un valore per un qualche attributo nullo)Si introduce un valore speciale (valore che denota la mancanza di valore 15 Valori nulli – quale valore?Usareun valore legale per almeno un dominio non è una buona soluzione
Se scegliamo 0, 0 è un valore legale per i domini numerici il suo uso non permetterebbe di distinguere il caso in cui 0 sia effettivamente il valore dell'attributo dal caso in cui 0 indichi il valore nullo
Assumiamo di denotare il valore nullo con il simbolo '?'
Esempio
Noleggio(colloc,dataNol,codCli,dataRest )
odom(codCli) = dom(colloc) = int
dom(dataNol)= dom(dataRest)= date
Notazione
negli schemi evidenziamo con un circoletto gli attributi che possono assumere valori nulli
Chiavi
Una chiave di una relazione è un insieme di attributi che distingue fra loro le tuple della relazione
Sia R(A , ...,A ) uno schema di relazione
1 n chiave
Un insieme X di attributi di R è di R se verifica entrambe le seguenti proprietà:
qualsiasi sia lo stato di R, non esistono due tuple distinte di R che abbiano lo stesso valore per tutti gli attributi in X
nessun sottoinsieme proprio di X verifica la proprietà (1)
2. Un
Un insieme di attributi che verifica la proprietà (1) super-chiave ma non la proprietà (2), è detto di R 18 9
Chiavi candidate:
Una relazione può avere più di un insieme S di attributi che verificano le proprietà (1) e (2)
Le chiavi delle relazioni vengono individuate mediante esame del dominio applicativo e dei relativi vincoli
Una relazione ha sicuramente almeno una chiave. Essendo R un insieme, non esistono tuple duplicate, quindi l'insieme di tutti gli attributi di R soddisfa la proprietà (1)
Chiave primaria:
Criteri di scelta della chiave primaria: Chiave candidata contenente il minor numero di attributi
Chiave candidata più frequentemente utilizzata nelle interrogazioni
Le chiavi primarie non possono assumere valori nulli
Le chiavi alternative possono assumere valori nulli
Esempio:
Cliente(codCli, nome, cognome, telefono, dataN, residenza)
Film(titolo, regista, anno, genere, valutaz
Noleggio(colloc,dataNol,codCli,dataRest)
21 Chiavi esterne
Permettono di modellare le associazioni. Siano R ed R′ due relazioni. Y una chiave per R′. X un insieme di attributi di R tale che Y e X contengano lo stesso numero di attributi e di dominio compatibile. Chiave esterna X e` una di R su R′ se, qualsiasi siano gli stati di R ed R′, per ogni tupla t di R esiste una tupla t′ di R′ tale che [X] = t′[Y].
Relazione referente: R viene detta relazione riferita. R′ viene detta relazione referente.
22 Chiavi esterne - schema
XR(A,B,C,D,E)
R’(F,G,H,I)
(D,E) e (F,G) domini compatibili
(D,E) pu` essere definita come chiave esterna di R su R’.
23 Chiavi esterne - istanza
R R’
A B C D E F G H I
a1 b1 c1 d1 e1 d1 e1 h1 i1
a2 b1 c2 d2 e1 d1 e2 h2 i2
a3 b2 c3 d1 e1 d2 e1 h1 i3
a4 b2 c3 d2 e3 d2 e4 h3 i4
d2 e2 h1 i1
d2 e3 h2 i1
24 Chiavi esterne
Le chiavi esterne permettono di collegare tra loro tuple di relazioni diverse. Meccanismo per...
realizzare le associazioni per valore 25Integrità referenzialeQualsiasi siano gli stati di R ed R', per ogni tupla t di R esiste una tupla t' di R' tale che t[X] = t'[Y]Vincolo di integrità referenziale 26 13EsempioCliente(codCli,nome,cognome,telefono,dataN,residenza)Film(titolo,regista,anno,genere,valutaz)◦Film FilmVideo(colloc,titolo,regista,tipo)Video Cliente,dataNol,codCli,dataRest)Noleggio(colloc ◦ 27Esempio Vincolo di integrità referenziale soddisfatto 28 14Vincolo di integrità referenzialeEsempio soddisfatto 29EsempioVincolo di integrità referenzialeNON soddisfatto 1126 22-Mar-2006 6655 ? 30 15Violazioni integrità referenzialeL'integrità referenziale può essere violata da inserimenti e modifiche (del valore della chiave esterna) nella relazione referente da cancellazioni e modifiche (del valore della chiave) nella relazione riferitaI linguaggi per basi di dati quali SQL permettono all'utente, nella definizione di chiavi esterne,dispecificare quali azioni eseguire nel caso in cuioperazioni di modifica violino l'integrita` referenziale
31ViolazioniVincolo diintegrita` referenzialeviolato da inserimentoin tabella referente 1126 22-Mar-2006 6655 ? 32 16ViolazioniVincolo diintegrita` referenzialeviolato da modificain tabella referente 661066606660 non appare 33ViolazioniVincolo diintegrita` referenzialeviolato da cancellazionein tabella riferita 34 17ViolazioniVincolo diintegrita` referenzialeviolato da modificain tabella riferita6630 35Osservazione 1I nomi degli attributi nella chiave e nella chiave esterna non devono necessariamente essere gli stessiSe lo sono, semplificano alcune operazioni (join naturale)Esempio Cliente(codCli,nome,cognome,telefono,dataN,residenza) ClienteNoleggio(collocVideo,dataNol,cliente ,dataRest ) oGli attributi avranno sicuramente nomi diversi tutte le volte che la relazione referente e la relazione riferita coincidono, cioe` la chiaveesterna contiene un riferimento alla relazione
stessaEsempio
oFilm oFilmFilm(titolo,regista,anno,genere,valutaz ,titoloPre ,registaPre )
o(titoloPre,registaPre) contengono titolo e regista del film di cui il film e` eventualmente il seguito
36 18