Download Database relazionali - Dipartimento di Matematica

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2015/2016
CorsodiLaureainMatematica
Dipartimento di MatematicaeFisica
Sistemiperl’elaborazionedelleinformazioni
5.Databaserelazionali
DispensedelcorsoIN530a.a.2015/2016
prof.MarcoLiverani
Archiviinformatici(digitali)
•
•
L’archiviazione deidatiè unadelle applicazionipiùdiffuseedimportantideicalcolatori
Tra gli obiettividell’archiviazione informaticadeidatievidenziamo iseguenti:
Garantireunaelevatacapacitàdiarchiviazione
Garantireilrecuperoefficientedelleinformazioniarchiviate
Garantirelapossibilitàdiselezionareinmodoefficienteleinformazionidesiderate
Garantirel’integritàfisicae logica delleinformazioniarchiviate
Garantirelapossibilitàdiutilizzareleinformazioniarchiviateattraversodiversistrumenti
informatici
– Garantirelaprotezionedelleinformazioniarchiviate,impedendolaletturaol’alterazionedelle
informazioni dapartedipersonenonautorizzateafarlo
–
–
–
–
–
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
1
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2015/2016
Archiviazione sufile
•
•
Ogniprogramma applicativopuòarchiviaresufileidatidipropriacompetenza
Questotipodiarchiviazionetuttavianontienecontodialcuniaspettiimportanti:
– Ilformatoconcui sonomemorizzateleinformazionisufileèarbitrario,nonstandard
– Altreapplicazionisoftwarepossonoaccedereaidatisoloseilformatodeidatiedillorosignificato
vengonoresinotidachihaprogettatol’applicazionediarchiviazione(oggisiusafrequentemente
unacodifica XML,che inparterisolvequestaproblematica)
– Devonoesseregestitesituazionidiaccessoconcorrente
– Chisviluppailsoftwarediarchiviazionedevefarsicaricoanchedegliaspetti“fisici”: efficienzanella
scritturaenellaselezionedelleinformazioni,protezionedelleinformazioniriservate,modalitàdi
accesso aifile,ecc.
DatabaseManagement System
•
•
Perfarfronteaquestiproblemi,apartire dagli anni’70sonostatesviluppateapplicazioni
dedicate all’archiviazione diinformazioni:DBMS,DataBase ManagementSystem
Caratteristichediunabasedatigestita attraversounDBMS:
–
–
–
–
–
–
–
–
–
•
Puòavereunagrandedimensione(anchesuperioreaquelladiunsingolodiscodelcomputer)
Puòesserecondivisa trapiùapplicazioni
Èpersistente
Èaffidabile,ilDBMSforniscestrumentipermantenereintegroegestiredeibackup dellabasedati
Èsicuroegarantiscelariservatezza,consenteilcontrollodegliaccessi,sologliutentiautorizzati
possono accedereaidati
Èefficiente:leoperazionielementarisull’archiviovengonoeseguitemoltorapidamente
Èstandard:iprogrammihannoun’interfacciaastrattaedialtolivelloperscrivereeleggere
informazioni sull’archiviopresentesullamemoriasecondaria
Èdisaccoppiato dall’applicazione: lacomponente softwaredigestionedeidatisull’archivio
informaticoèdistintadallacomponentesoftwarecheimplementala“logicadibusiness”concuisi
operasuidati
Èaccessibile viarete:ilDBMSpuòoperaresuunamacchinadistintadaquellasucuivieneeseguita
l’applicazioneche utilizzaidatidell’archivio;l’applicazioneèinconsapevoledelladislocazionefisica
delDBMS,sicollegaalDBMScomunqueviarete,ancheseilDBMSèsullastessamacchinasucui
giral’applicazione
Oggi sulmercatoesuicanalidelsoftwareopensourceesistononumerosissimiprodotti
DBMS affidabili:Oracle Database,MicrosoftSQLServer, IBMDB/2,MySQL,PostgreSQL,ecc.
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
2
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2015/2016
Modello di database
•
•
OgniDBMSutilizzaunmodelloastrattoattraversocuirappresentareleinformazioni(e
trasformareisingolidatiinvere eproprieinformazioni)
Negli corsodegliannisonostatipropostidiversimodelli,traiquali:
–
–
–
–
Gerarchico,adalbero
Reticolare
Relazionale
Relazionaleadoggetti
•
Ilmodello checiinteressaèilmodellorelazionale,progettatoneilaboratoridiricerca diIBM
negli anni’70edoggidivenutolostandarddifatto perlebasididatiedeglistrumenti
DBMS:siparlainfattidiRDBMS:relational databasemanagementsystem
•
Ilmodello relazionaleè basatosulconcettodirelazione (nelsensoalgebricodeltermine)e
ditabella (concettointuitivo)
DataunacollezionediinsiemiA1,A2,…, An, ilprodottocartesianoA1xA2 x…xAn è l’insieme
delle n-ple {(a 1,a 2,…,a n)talichea i 2 Ai ∀ i=1, …,n}
Unarelazione suA1,A2,…,An è unsottoinsiemedelprodottocartesianoA1xA2 x…xAn
•
•
Relazionitrainsiemi
Corsi
Studenti
Olivieri
IN110
CR210
Simeone
AL110
Pestrin
Piroso
Fabrianesi
IN440
AM110
Nunzi
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
3
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2015/2016
Relazionieprodotto cartesiano
Studente
Relazione
Corso
Olivieri
IN110
Olivieri
CR210
Olivieri
AL110
Olivieri
AM110
Olivieri
IN440
Simeone
IN110
Simeone
CR210
Simeone
AL110
…
…
Prodotto
cartesiano
Dominieattributi
•
•
•
•
Nell’ambito della teoria relazionale deidatiè utilepoterconsiderarele n-ple diunarelazione
comesequenzenonordinate(adifferenzadiquantoavvienenellateoria degliinsiemi)
Quindiadesempio(a 1,a 2,a 3)=(a 3,a 1,a 2)
Inquestocaso,perdistinguereidatipresentiinunan-pla,èutileassegnare deinomi ai
valoridelle n-ple;tali nomivengonodettiattributi
L’insieme Ai (finitooinfinito)deivaloricheuncertoattributopuòassumereèildominio
dell’attributo stesso
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
4
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2015/2016
Relazionietabelle
•
Èpossibilerappresentareunarelazione mediante unatabella:
RelazioneX
Attributo A Attributo B Attributo C
•
•
•
A1
B7
C4
A9
B7
C1
Ilnumerodicolonne(ilnumerodiattributi)èilgrado della relazione
Ilnumerodirighe è lacardinalità della relazione
Larelazione dell’esempio hacardinalità 2egrado3
Chiaviprimarie
•
Consideriamolaseguente relazionerappresentata mediante unatabella:
Esami
•
•
Studente
Matricola
Corso
Docente
Voto
Bianchi
102030
IN110
Liverani
24
Verdi
213243
AL210
Fontana
27
Rossi
376114
IN110
Liverani
25
Bianchi
102030
AL210
Fontana
22
Unachiaveprimaria (primary key)èuncampo(attributo)ouninsiemedicampidellatabella
chepermettonodiindividuareunivocamente unrecord(rigadellatabella)
Nell’esempio la chiaveprimaria è lacoppia“Matricola”+“Corso”
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
5
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2015/2016
Chiaviesterneecorrelazioni fratabelle
•
Perridurre laridondanzadeidati(evitare ripetizioniinutili)èpossibilesuddividerele
informazionisupiùtabelle:
Studente
•
Corso
Esame
Matricola
Nome
Nome
Docente
Corso
Matricola
Voto
102030
Bianchi
AL110
Fontana
IN110
102030
24
213243
Verdi
IN110
Liverani
376114
Rossi
AL110
213243
27
IN110
376114
25
AL110
102030
22
Lechiavi esterne(foreign key)sonoattributidiunatabellaX checonsentonodicorrelare il
recordconunrecorddiunatabellaY attraversolaripetizionedel valoredella chiaveprimaria
della tabella Y
DiagrammaEntità/Relazioni
•
•
Inquestomodoèpossibilecostruireunarappresentazionedeidatiattraversoundiagramma
(ungrafo)cherappresentalerelazioniesistentifralevarieentità
Lerelazioni possonoessereditretipi:
– “1:1”: adognirecorddell’entitàA corrispondeunoedunsolorecorddell’entitàB
– “1:M”: adognirecorddell’entitàA corrispondonodiversirecorddell’entitàB
– “M:M”: adognirecorddiA corrispondonomoltirecorddiB eviceversa.
Studente
Corso
1:M
M:1
Esame
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
6
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2015/2016
DiagrammaEntità/Relazioni
•
•
Larelazione viene espressamedianteunverboounsostantivo,rappresentatoconunrombo
collegatoa dueentità
Anchele relazioni,comele entità, possonoesserecaratterizzatedaattributi
Nome
Matr.
Anno
Docente
Studente
CFU
Corso
SSD
Sostiene
Appello
Esame
Aula
n.
iscritti
Voto
Data
Data
DiagrammaEntità/Relazioni
•
DiseguitounmodelloE/R piùcomplesso,partediundatabaserelazionalediunsistema
aziendale
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
7
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2015/2016
Modello fisicodellabasedati
•
Nelmodellofisicoleentità ele relazioni sonorappresentatemediantetabelle collegatetra
loromediante lechiavi primarie ele chiaviesterne
Modello fisicodellabasedati
•
Adesempioil modelloE/R relativo agli studenti,aicorsieagliesami, puòesseretradottonel
modellofisicorappresentatoinfigura
Iscritto
Studente
IdStudente (FK)
IdCorso (FK)
Anno
Matricola (PK)
Nominativo
E-mail
Sostiene
IdStudente (FK)
IdEsame (FK)
Data
Voto
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
Corso
IdCorso (PK)
Anno (PK)
Nome
Docente
CFU
SSD
Esame
IdCorso (FK)
Anno (FK)
IdEsame (FK)
Data
N_iscritti
Aula
8
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2015/2016
Ottimizzazionediunabasedati
•
•
•
Lapossibilitàdidefinirecorrelazionitraleentitàdel databasecipermette diottimizzarnela
struttura
L’operazione diottimizzazioneconsistenellasuddivisionedeidatisutabelledistinte,in
mododaridurrelaridondanza;questaattivitàsichiamanormalizzazionedellabasedati
Esempiodibasedatinon normalizzata
Esami
Nome
Matricola AL210
Prof_AL210
IN110
Prof_IN110
GE110
Prof_GE110
24
Fontana
22
Liverani
-
Lopez
Rossi
203040
Verdi
251497
-
Fontana
-
Liverani
27
Lopez
Bianchi
337782
29
Fontana
30
Liverani
26
Lopez
Finalitàdellanormalizzazione
•
Perchénormalizzarela basedati?Perrisolvere iseguentiproblemi:
– ridondanza: inutileripetizionediunostessodato
– anomaliadiaggiornamento:permantenereintegreecoerentileinformazioniènecessario
modificare piùvolteunostessodato
– anomaliadicancellazione: eliminandoun’informazione daldatabaseseneperdonoanchealtre
– anomaliadiinserimento:nonèpossibileinserireinformazioniincomplete,anchequando sarebbe
necessariofarlo
Esami
Nome
Prof_AL210
IN110
Prof_IN110
GE110
Prof_GE110
Rossi
Matricola AL210
203040
24
Fontana
22
Liverani
-
Lopez
Verdi
251497
-
Fontana
-
Liverani
27
Lopez
Bianchi
337782
29
Fontana
30
Liverani
26
Lopez
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
9
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2015/2016
Formenormali
•
Esistonodelleregole chedevonoessererispettatedalla basedatiaffinchéquestasia
correttamente normalizzata;questeregole sononotecomeformenormali
•
Primaformanormale
inunatabellanonpossonoesisterecolonnedefinitepercontenereunamolteplicitàdivalori
NO!
Esami
Esami sostenuti
Matr
OK!
Esame
Matr
Corso
Voto
GE110
IN530
102030
AL110
25
102030
25
27
22
30
123987
GE110
29
123987
28
21
29
20
102030
IN110
27
874329
25
26
26
24
874329
IN430
24
AL110 IN110
Formenormali
•
Secondaformanormale
inunatabellaincuilachiaveprimariaècompostadapiùattributituttelecolonnedevono
dipenderedallachiaveprimaria
Esame
NO!
Matr
Esame
Matr
Corso
Voto Docente
102030
AL110
25
Fontana
123987
GE110
29
Lopez
102030
IN110
27
Liverani
874329
AL110
24
Fontana
Corso
Voto
102030 AL110
25
123987 GE110
29
102030 IN110
27
874329 IN530
24
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
OK!
Corso
Nome
Docente
AL110
Fontana
GE110
Lopez
IN110
Liverani
10
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2015/2016
Formenormali
•
Terza formanormale
Nonesistonodipendenzetracolonnediunatabellasenonbasatesullachiaveprimaria
NO!
Esame
Esame
Matr
Corso
Voto
Crediti
102030
AL410
25
6
102030 AL110
25
123987 GE110
29
10
123987 GE110
29
102030
IN110
27
10
102030 IN110
27
874329
IN440
24
7
874329 IN440
24
Matr
Corso
Nome
Docente
AL110
GE110
IN110
Corso
Voto
OK!
Corso
Nome
Docente
Crediti
Fontana
AL410
Fontana
6
Lopez
IN440
Liverani
7
Liverani
IN110
Liverani
10
Formenormali
•
FormanormalediBoyce e Codd
Unatabellaèinformanormaleseperognidipendenzafunzionale A→B definitasudiessa,A
contieneunachiavedellatabella.
Dipendenzefunzionali:
Esame
Matr
Corso
Voto Docente Crediti
Studente
A→B:il valorediA determinail
valorediB
102030 AL110
25
Fontana
10
Rossi
123987 GE110
29
Lopez
10
Bianchi
102030 IN110
27
Liverani
10
Rossi
Corso→ Crediti✗
874329 IN440
24
Fontana
7
Verdi
Matricola,Corso→ Voto✔
Corso→ Docente✗
Matricola→ Studente✗
NO!
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
11
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2015/2016
Formenormali
•
FormanormalediBoyce e Codd
UnatabellaèinformanormaleseperognidipendenzafunzionaleA→B definitasudiessa,A
contieneunachiavedellatabella.
Esame
Matr
Corso
Dipendenzefunzionali:
Voto
102030 AL110
25
123987 GE110
29
102030 IN110
27
874329 IN440
24
Studente
Matricola
Nome
102030
Bianchi
213243
Verdi
376114
Rossi
Corso
A→B:il valorediA determinail
valorediB
Nome
Docente
Crediti
AL110
Fontana
10
Corso→ Docente✔
GE110
Lopez
10
Corso→ Crediti✔
IN110
Liverani
10
Matricola,Corso→ Voto✔
OK!
Matricola→ Studente✔
LinguaggioSQL:caratteristiche
•
Peroperare suunabasedatirelazionaleè statoprogettatounlinguaggiostandard:
SQL (Structured QueryLanguage)
•
Èunlinguaggio diinterrogazioneemanipolazionedellabasedatiedelleinformazioniin
essacontenute
Nonèunlinguaggioimperativo/procedurale, èunlinguaggio dichiarativo: manca dei
concettidivariabile edistrutturadicontrolloalgoritmica,tipicadeilinguaggiimperativie
della programmazionestrutturata
•
Ècostituitodatreinsiemidiistruzioni:
•
– DDL (DataDefinitionLanguage): perdefinirelastrutturadellabasedati
– DCL (DataControlLanguage):pergestireicriteridiprotezioneediaccessoaidati
– DML (DataManipulation Language): peroperaresuidati
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
12
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2015/2016
DataDefinitionLanguage
•
•
Èil setdiistruzionidiSQLperladefinizionedellastrutturadellabasedati.
Sonotrele istruzioniprincipalidelDDL:
– create: perlacreazionedidatabase,tabelle,indici,viste,ecc.
– alter: perlamodificadellastrutturadiunatabellaodialtrioggettiinterniadunabasedati
– drop: perl’eliminazione diunatabelle,diuninterodatabaseodialtrioggetti
•
Creazionediundatabase:
•
create database studenti;
Cancellazionediundatabase:
drop database studenti;
Dominiodidefinizione degliattributi
•
•
Definireunatabella significadefinirnegliattributi e ildominio degli stessiattributi
Idominisonoquellitipicidiognilinguaggiodiprogrammazione:
–
–
–
–
numeriinteri(int,integer)
numerifloating point (float,real,double)
stringhedicaratteri(char,varchar)
date (date,time,timestamp)
•
Altri tipipossonoesseredefinitisullabasedispecifichetipichediundeterminatoRDBMS
•
Ogniattributopuòessereanchecaratterizzatodaunvaloredidefaulteunaseriedivincoli
(es.“not null”pericampiobbligatoridiunatabella)
Tra ivincoliviè lapossibilitàdiaggiungereunattributoallachiaveprimaria della tabella o
l’attributodichiaveesternareferenziandounoopiùcampichiavediun’altratabella
•
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
13
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2015/2016
Creazione diunatabella
•
Nell’esempio riportatodiseguitovengonocreatedue tabelle denominate“corso”ed
“esame”(usandolasintassidiMySQL):
create table corso (
sigla char(5) not null primary key,
nome char(20) not null,
docente char(30),
crediti integer default 6
) engine=innodb;
create table esame (
s_corso char(5) not null references corso.sigla,
matr_studente char(10) not null references studente.matricola,
voto integer not null,
primary key (s_corso, matr_studente),
foreign key (s_corso) references corso(sigla) on update cascade
on delete restrict,
foreign key (matr_studente) references studente(matricola)
on update cascade on delete cascade
) engine=innodb;
Indici sulletabelle
•
•
•
•
•
•
•
Perrendere piùefficientel’operazionediselezionedeidatipresentisuunatabella,è
possibilecreareunoopiùindici suunastessatabella
Se unatabella èprivadiindici,l’unicometodopercercare datichecorrispondonoadun
determinato criterio,è quellodieseguire un“fulltable scan”,ossiaunascansionedell’intera
tabella sucuisieseguelaricerca: iltemporichiestoèlineare nelnumerodirighe della
tabella (complessitàO(n))
L’indiceè unastrutturadaticheconsentedimigliorareitempidiricerca delle informazioni
presentiinunatabella
L’indiceè spessounastrutturadati“adalbero”(alberibinari,alberiR-B,ecc.)costruitasui
valoridiunaspecificacolonnadiunatabelladidatabase(es.:ilcampo“cognome”diuna
tabella anagrafica): inquestomodoiltempodiricercadiventalogaritmico,anzichélineare:
O(log2n)
Suunastessatabellapossonoesseredefinitipiùindicisupiùcampi
Esempio:
create index nominativo on studente (cognome)
Dopovarieoperazionidiinserimentoecancellazionesuirecorddiunatabella,l’indice è
probabilmente“sbilanciato”equindinonpiùefficace:intalicasièsufficienteeliminare
l’indice(drop index nominativo)ericrearlo dopoqualcheistante
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
14
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2015/2016
Indici sulletabelle
Studente
Matricola
Nome
Cognome
Email
102030
Mario
Rossi
m.rossi@...
123987
Anna
Bianchi
anna90@...
102030
Elena
Neri
nerielena@...
874329
Chiara
Aldi
chi.aldi@...
103611
Ugo
Mei
ugo.mei@...
510098
Aldo
Bruni
aldobru@...
241265
Irene
Sassi
irene.s@...
...
...
...
...
Indicesull’attributo“cognome”:
èunalberoparzialmente
ordinatolacuialtezzaè
vicinaalog2 n
Tabella conn righe:percercare
undatodevoscorrerlaper
intero(n operazionidi
confronto)
Mei
Bianchi
Aldi
Bruni
Rossi
Neri
Sassi
DataControl Language
•
•
Èil setdiistruzionidiSQLperladefinizionedeipermessidiaccessosuidatabaseesulle
tabelle e perla gestionedegliaccountutente.
SonodueleistruzioniprincipalidelDCL:
– grant: perassegnareundeterminatopermessoadunutente
– revoke: revocareundeterminatopermessoadunutente
•
Concessionedipermessi:
grant privilegi on risorsa to utenti with grant option;
•
Esempio:
grant select on studenti to liverani;
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
15
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2015/2016
DataManipulation Language
•
Èil setdiistruzionidiSQLperlagestionedelleinformazionipresentinellabasedati
•
SonoquattroleistruzioniprincipalidelDML:
–
–
–
–
insert: perinseriredatiinunatabella
select: perselezionareinbaseadeterminaticriteriocondizioniidatipresentiinunaopiùtabelle
update: permodificare idatidiunatabellasullabasediundeterminatocriteriodiselezione
delete: pereliminareirecorddiunatabellacorrispondentiadunadeterminatacondizione
Inserimento dati
•
•
L’istruzioneinsert consentediinserireuninsiemedivalorineicampidiunsolorecordin
unatabella: l’ordine concuivengonofornitiivaloriaidiversicampi,sonospecificati
elencandonellostessoordineinomidegliattributicorrispondenti
Lestringhedicaratteridevonoesseredelimitate daapici;sela stringacontieneunapice,
questovariportatoduevolte
– esempio: ‘Maria Giovanna’, ‘Guido Dell’’Acqua’,
•
Ledate devonoessereindicatenel formatospecificodelDBMS(es.:‘aaaa-mm-gg’,come
‘2015-06-20’)
•
Sintassidell’istruzioneinsert:
insert into tabella (campo 1, …, campo k) values (valore1, …, valorek);
•
Esempio:
insert into corso (sigla, cfu, nome, docente)
values (‘IN110’, 10, ‘Informatica 1’, ‘Liverani Marco’);
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
16
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2015/2016
Selezionedirecord
•
L’istruzioneselect consentedileggere informazionipresentisuldatabase,selezionandoil
risultatodaunaopiùtabelle,mediante appositecondizionicheconsentonodisceglieretrai
recordpresentiinarchivio,quellidavisualizzareinoutput
•
Sintassidell’istruzioneselect:
select tabella 1.campo 1, …, tabella h.campo k
from tabella 1, …, tabella h
where condizione
order by tabella i.campo i, …, tabella j.campo j;
•
•
Esempio:
select (corso.sigla, corso.nome, corso.docente) from corso where
ssd=‘INF/01’ order by corso.docente, corso.sigla;
Ancheilrisultatodiunaselect èunatabella: unaselect suunaopiùtabelleproduce
unatabella
Join
•
•
•
Èpossibile eseguireoperazioni diselezione checoinvolganopiù tabelle graziealle
correlazioni stabilitetraquesteattraversolechiaviprimarie elechiaviesterne
Questaoperazione sichiamajoin
Esempio:
select studente.nome, studente.cognome, corso.nome, esame.voto
from studente, corso, esame
where studente.matricola=esame.matr_studente and
esame.s_corso=corso.sigla
order by esame.voto;
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
17
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2015/2016
Join eprodotto cartesiano ditabelle
•
•
•
Ognioperazionedijoin frapiùtabelleconsisteinnanzituttoinunprodottocartesiano trale
tabelle coinvoltenellaselect
Dallarelazione (tabella)ottenutacomeprodottocartesianosiselezionanosololerighe che
corrispondonoconla“where condition”
Unaoperazionedijoin puòesserequindimoltoonerosaperlamacchina:labasedatideve
essere progettatainmododaminimizzareilnumerodijoin necessarieperottenere le
informazionidiinteresse
Join eprodotto cartesiano ditabelle
Esame
Matr
Corso
Studente
Voto
Matricola
Nome
102030 AL110
25
102030
Bianchi
123987 GE110
29
123987
Verdi
102030 IN110
27
376114
Rossi
select esame.corso, esame.voto, studente.nome
from esame, studente
where esame.matr=studente.matricola;
Join: esame ´ studente
Voto
Matricola
Nome
102030 AL110
Matr
Corso
25
102030
Bianchi
102030 AL110
25
123987
Verdi
102030 AL110
25
376114
Rossi
123987 GE110
29
102030
Bianchi
123987
29
123987
Verdi
GE1
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
18
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2015/2016
Aggiornamento
•
L’istruzioneupdate consentedimodificarealcunideivaloriassegnatiaicampidiunatabella
deirecordchesoddisfanodeterminatecondizioni
•
Sintassidell’istruzioneupdate:
update tabella
set campo 1=valore1, …, campo k=valorek
where condizione;
•
Esempio:
update studente set nome=‘Mori’ where matricola=102030;
•
Attenzione:unaistruzioneupdate privadiunacondizioneeseguel’aggiornamentosututte
le righe(record)dellatabella
Cancellazione
•
L’istruzionedelete permette dieliminare irecorddiunatabella chesoddisfanouna
determinata condizione
•
Sintassidell’istruzionedelete:
delete from tabella
where condizione;
•
Esempio:
delete from studente where nome like ‘Mo%’ or matricola=213243;
•
Attenzione:unaistruzionedelete privadiunacondizioneeseguelacancellazionedituttii
record (tuttelerighe)della tabella
L’operatore “like”permette diconfrontareilvalorediuncampoconunapartediuna
stringa,utilizzandoilcaratterejolly “%”
•
– Nell’esempio eliminairecorddellatabellastudenteincuiilcamponomeiniziaconlastringa“Mo”
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
19
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2015/2016
Operazioni digruppo
•
•
Èpossibileottenereattraversounaselect anchevalorinonpresentineicampidella
tabella, ma calcolati raggruppandopiùrecordsullabasediuncriteriodiaggregazione
Esempio:
select studente.nome, avg(esame.voto) as media
from studente, esame
where studente.matricola=esame.matr
group by studente.nome
order by media desc;
select count(*) from studenti;
•
Tipichefunzionidigrupposono
– sum: somma ivalorinumericideicampi
– average/avg: calcolalamediaaritmeticadeivalorinumericideicampi
– count: contairecordchesoddisfano determinatecondizioni
SQLealtrilinguaggidiprogrammazione
•
•
SpessoillinguaggioSQLviene utilizzatoall’internodiprogrammiscritticonaltrilinguaggidi
programmazione(C,C++, Java, Perl,Python,ecc.)
Nellosviluppodiunprogrammaèspessomoltoutileilconcettoditransazione
– unatransazioneraccoglieunaseriedioperazionisvoltesuldatabaseesoloalterminedella
transazionestessaleesegueeffettivamente(commit)
– incasosiverifichiunerroredurantel’esecuzionedelprogramma,èpossibilechiuderela
transazioneannullandotutteleoperazionieseguitefinoaquelmomento(rollback)
•
•
EsistonolibreriedifunzioniAPIperl’accessoalleinterfaccemessea disposizionedaiDBMS
Esempioinlinguaggio PerlutilizzandoDBI/DBDperMySQL:
#!/usr/bin/perl
use DBI;
$db = DBI->connect("dbi:mysql:dbname=marcodb", "marco", "marco") or die DBI::errstr;
$query = $db->prepare("select nome, cognome from rubrica order by cognome");
$query->execute();
for ($i=1; $i <= $query->rows(); $i++) {
($nome, $cognome) = $query->fetchrow();
print "Record n. $i\n Nome: $nome\n Cognome: $cognome\n\n";
}
$query->finish();
$db->disconnect();
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
20
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2015/2016
SQLealtrilinguaggidiprogrammazione
•
Unesempioanalogoinlinguaggio C
#include <my_global.h>
#include <mysql.h>
int main(void) {
MYSQL *connessione = mysql_init(NULL);
mysql_real_connect(connessione,"127.0.0.1", "marco", "marco", "marcodb”, 0,NULL,0);
mysql_query(connessione, "select nome, cognome from rubrica order by cognome");
MYSQL_RES *risultato = mysql_store_result(connessione);
MYSQL_ROW riga;
while (riga = mysql_fetch_row(result)) {
printf("Nome: %s\nCognome: %s\n\n", row[0], row[1]);
}
mysql_free_result(risultato);
mysql_close(connessione);
return(0);
}
Object-Relational Mapping
•
•
•
•
•
Spessoperlosviluppodiprogrammichefannousodiunabasedatirelazionalesiutilizzano
linguaggi diprogrammazioneobject oriented (es.:Java,C#, C++, ecc.)
Intalicasiunabuonaingegnerizzazionedelcodicelasipuòraggiungere mappandoleclassi
dioggettiimplementatedalprogramma conentitàpresentisuldatabaserelazionale,che
offronofunzionidipersistenzaperglioggettiottenutiistanziandotaliclassi
UnprodottoORM(Object-Relational Mapping)offredellefunzionidialtolivelloper
realizzare ilcollegamento trale classidelprogrammae leentità deldatabase
Inquestomodoilcodicesorgentesisemplifica,vistocheèlalibreriaORMadoccuparsidella
maggior parte delle questionitecnichediinterazionetrailprogrammae ilDBMS
Hibernate èunsoftwaremiddleware opensourcecheimplementail servizioORMper
applicazioniscritteinJava:
– mediantefilediconfigurazionesidefiniscelamappaturatraoggettidelprogrammaJavaedentità
presentisulDBMS(ocheHibernate devecrearesulDBMSnellafasediinizializzazione)
– con alcunimetodimessiadisposizionedalmiddlewaresieseguonooperazionidiscritturaelettura
deidati,operandodirettamentesuglioggettidelprogramma,senzalanecessitàdiutilizzare
direttamenteillinguaggioSQL
•
NHibernate èunprodottoequivalenteadHibernate,perilframework Microsoft.net
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
21
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2015/2016
NO-SQLDatabaseManagementSystems
•
•
•
•
Ilmodello relazionaleè potente,flessibilee assaidiffuso,mahadeilimiti,soprattutto
quandoènecessariotrattaremoli enormididatioquandoèdifficilestrutturareaprioriil
datonelle entitàdel database
Esistononumerosimodelliperlarappresentazionedeidati,diversidalmodellorelazionale
Questimodellisonoimplementatiinprodottisoftwaredisponibilisulmercatoepiùspesso
suicanalidelsoftwareopensource:sitrattadiprodottisperimentalioassaisolidieben
strutturati,utilizzatiperlagestioneaffidabilidiservizion-lineestremamente onerosi
(Google,Facebook,ecc.)
Tali prodottiutilizzanolinguaggidiinterrogazionedeldatabaseedimanipolazionedeidati
diversidaSQL: perquestosiparladiNO-SQLdatabase,Not Only SQLDatabase
NO-SQLDatabaseManagementSystems
•
Document Oriented Database
– Nonmemorizzano idatiintabelleconcampiuniformiperognirecordcomeneiDBrelazionali:ogni
recordèmemorizzatocome un“documento” chepossiededeterminatecaratteristiche;qualsiasi
numerodicampi conqualsiasilunghezzapuòessereaggiuntoaldocumento
– Prodottisoftware:IBMLotusNotes,OrientDB,MongoDB,ApacheSolr,ecc.
•
Graph Database
– Rappresentaidaticomeungrafoedutilizzaverticiespigolidelgrafopermemorizzare
informazioni; glielementidelgrafo(verticiespigoli)possonorappresentareinformazionicon
strutturaesignificatodifferente
– Prodottisoftware:Neo4j,OrientDB,ecc.
•
Databasebasatisucoppiechiave/valore
– Sonobasatisuarrayassociativi,mappeodizionari:sonocostituitidacoppiechiave/valore(es.:
“nome/Marco”, “cognome/Liverani”,ecc.)
– Prodottisoftware:BigTable (Google),BerkeleyDB,ecc.
•
Databaseobject oriented
– Implementano unmodelloadoggetti,tipicamenteintegratoconilmodellorelazionale;consentono
l’implementazionedimetodiperoperaresuspecificitipididato(immaginifotografiche,dati
spazialigeoreferenziati,daticonunospecificosignificatofisico,ecc.)
– Prodottisoftware:Informix Illustra,IBMDB/2UniversalDatabase,ecc.
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
22
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2015/2016
Bibliografiaessenziale
① Atzeni,Ceri, Paraboschi,Torlone,Basididati– Concetti,linguaggiearchitetture,McGrawHill,1996
② Guidi,Dorbolò,GuidaaSQL,McGraw-Hill,1996
③ Codd,Arelational modelforlargeshared databanks,Communication oftheACM,13(6),
June 1986
④ MySQL,MySQL ReferenceManual,http://dev.mysql.com/doc/refman/5.6/en/
⑤ PostgreSQL,PostgreSQL Documentation,http://www.postgresql.org/docs/9.4/static/
Oracle Exadata Database Machine
Oracle,leadermondialenelsettoredeiprodottiRDBMS,producedellemacchineserverdiclasseenterprise
specificamenteprogettateedingegnerizzatepersvolgereconlamassimaefficienzailruolodi“databasemachine”
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
23