UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2016/2017
CorsodiLaureainMatematica
DipartimentodiMatematicaeFisica
Sistemiperl’elaborazionedelleinformazioni
5.Databaserelazionali
DispensedelcorsoIN530a.a.2016/2017
prof.MarcoLiverani
Archiviinformatici(digitali)
•
•
L’archiviazionedeidatièunadelleapplicazionipiùdiffuseedimportantideicalcolatori
Tragliobiettividell’archiviazioneinformaticadeidatievidenziamoiseguenti:
Garantireunaelevatacapacitàdiarchiviazione
Garantireilrecuperoefficientedelleinformazioniarchiviate
Garantirelapossibilitàdiselezionareinmodoefficienteleinformazionidesiderate
Garantirel’integritàfisicae logica delleinformazioniarchiviate
Garantirelapossibilitàdiutilizzareleinformazioniarchiviateattraversodiversistrumenti
informatici
– Garantirelaprotezionedelleinformazioniarchiviate,impedendolaletturaol’alterazionedelle
informazionidapartedipersonenonautorizzateafarlo
–
–
–
–
–
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
1
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2016/2017
Archiviazionesufile
•
•
Ogniprogrammaapplicativopuòarchiviaresufileidatidipropriacompetenza
Questotipodiarchiviazionetuttavianontienecontodialcuniaspettiimportanti:
– Ilformatoconcuisonomemorizzateleinformazionisufileèarbitrario,nonstandard
– Altreapplicazionisoftwarepossonoaccedereaidatisoloseilformatodeidatiedillorosignificato
vengonoresinotidachihaprogettatol’applicazionediarchiviazione(oggisiusafrequentemente
unacodificaXML,cheinparterisolvequestaproblematica)
– Devonoesseregestitesituazionidiaccessoconcorrente
– Chisviluppailsoftwarediarchiviazionedevefarsicaricoanchedegliaspetti“fisici”: efficienzanella
scritturaenellaselezionedelleinformazioni,protezionedelleinformazioniriservate,modalitàdi
accessoaifile,ecc.
DatabaseManagementSystem
•
•
Perfarfronteaquestiproblemi,apartiredaglianni’70sonostatesviluppateapplicazioni
dedicateall’archiviazionediinformazioni:DBMS,DataBase ManagementSystem
CaratteristichediunabasedatigestitaattraversounDBMS:
–
–
–
–
–
–
–
–
–
•
Puòavereunagrandedimensione(anchesuperioreaquelladiunsingolodiscodelcomputer)
Puòesserecondivisa trapiùapplicazioni
Èpersistente
Èaffidabile,ilDBMSforniscestrumentipermantenereintegroegestiredeibackup dellabasedati
Èsicuroegarantiscelariservatezza,consenteilcontrollodegliaccessi,sologliutentiautorizzati
possonoaccedereaidati
Èefficiente:leoperazionielementarisull’archiviovengonoeseguitemoltorapidamente
Èstandard:iprogrammihannoun’interfacciaastrattaedialtolivelloperscrivereeleggere
informazionisull’archiviopresentesullamemoriasecondaria
Èdisaccoppiatodall’applicazione:lacomponentesoftwaredigestionedeidatisull’archivio
informaticoèdistintadallacomponentesoftwarecheimplementala“logicadibusiness”concuisi
operasuidati
Èaccessibileviarete:ilDBMSpuòoperaresuunamacchinadistintadaquellasucuivieneeseguita
l’applicazionecheutilizzaidatidell’archivio;l’applicazioneèinconsapevoledelladislocazionefisica
delDBMS,sicollegaalDBMScomunqueviarete,ancheseilDBMSèsullastessamacchinasucui
giral’applicazione
Oggisulmercatoesuicanalidelsoftwareopensourceesistononumerosissimiprodotti
DBMS affidabili:OracleDatabase,MicrosoftSQLServer,IBMDB/2,MySQL,PostgreSQL,ecc.
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
2
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2016/2017
Modellodidatabase
•
•
OgniDBMSutilizzaunmodelloastrattoattraversocuirappresentareleinformazioni(e
trasformareisingolidatiinvereeproprieinformazioni)
Neglicorsodegliannisonostatipropostidiversimodelli,traiquali:
–
–
–
–
Gerarchico,adalbero
Reticolare
Relazionale
Relazionaleadoggetti
•
Ilmodellocheciinteressaèilmodellorelazionale,progettatoneilaboratoridiricercadiIBM
neglianni’70edoggidivenutolostandarddifatto perlebasididatiedeglistrumenti
DBMS:siparlainfattidiRDBMS:relational databasemanagementsystem
•
Ilmodellorelazionaleèbasatosulconcettodirelazione (nelsensoalgebricodeltermine)e
ditabella (concettointuitivo)
DataunacollezionediinsiemiA1,A2,…,An,ilprodottocartesianoA1xA2 x…xAn èl’insieme
dellen-ple {(a1,a2,…,an)talicheai 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.2016/2017
Relazionieprodottocartesiano
Studente
Relazione
Corso
Olivieri
IN110
Olivieri
CR210
Olivieri
AL110
Olivieri
AM110
Olivieri
IN440
Simeone
IN110
Simeone
CR210
Simeone
AL110
…
…
Prodotto
cartesiano
Dominieattributi
•
•
•
•
Nell’ambitodellateoriarelazionaledeidatièutilepoterconsiderarelen-ple diunarelazione
comesequenzenonordinate(adifferenzadiquantoavvienenellateoriadegliinsiemi)
Quindiadesempio(a1,a2,a3)=(a3,a1,a2)
Inquestocaso,perdistinguereidatipresentiinunan-pla,èutileassegnaredeinomi ai
valoridellen-ple;talinomivengonodettiattributi
L’insiemeAi (finitooinfinito)deivaloricheuncertoattributopuòassumereèildominio
dell’attributostesso
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
4
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2016/2017
Relazionietabelle
•
Èpossibilerappresentareunarelazionemedianteunatabella:
RelazioneX
AttributoA AttributoB AttributoC
•
•
•
A1
B7
C4
A9
B7
C1
Ilnumerodicolonne(ilnumerodiattributi)èilgrado dellarelazione
Ilnumerodirigheèlacardinalità dellarelazione
Larelazionedell’esempiohacardinalità2egrado3
Chiaviprimarie
•
Consideriamolaseguenterelazionerappresentatamedianteunatabella:
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’esempiolachiaveprimariaèlacoppia“Matricola”+“Corso”
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
5
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2016/2017
Chiaviesterneecorrelazionifratabelle
•
Perridurrelaridondanzadeidati(evitareripetizioniinutili)èpossibilesuddividerele
informazionisupiùtabelle:
Studente
•
Corso
Esame
Matricola
Nome
Nome
Docente
Corso
Matricola
Voto
102030
Bianchi
AL110
Fontana
IN110
102030
24
213243
Verdi
IN110
Liverani
AL110
213243
27
376114
Rossi
IN110
376114
25
AL110
102030
22
Lechiaviesterne(foreign key)sonoattributidiunatabellaX checonsentonodicorrelare il
recordconunrecorddiunatabellaY attraversolaripetizionedelvaloredellachiaveprimaria
dellatabellaY
DiagrammaEntità/Relazioni
•
•
Inquestomodoèpossibilecostruireunarappresentazionedeidatiattraversoundiagramma
(ungrafo)cherappresentalerelazioniesistentifralevarieentità
Lerelazionipossonoessereditretipi:
– “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.2016/2017
DiagrammaEntità/Relazioni
•
•
Larelazionevieneespressamedianteunverboounsostantivo,rappresentatoconunrombo
collegatoadueentità
Anchelerelazioni,comeleentità,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.2016/2017
Modellofisicodellabasedati
•
Nelmodellofisicoleentità elerelazioni sonorappresentatemediantetabelle collegatetra
loromediantelechiaviprimarieelechiaviesterne
Modellofisicodellabasedati
•
AdesempioilmodelloE/R relativoaglistudenti,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.2016/2017
Ottimizzazionediunabasedati
•
•
•
Lapossibilitàdidefinirecorrelazionitraleentitàdeldatabasecipermettediottimizzarnela
struttura
L’operazionediottimizzazioneconsistenellasuddivisionedeidatisutabelledistinte,in
mododaridurrelaridondanza;questaattivitàsichiamanormalizzazionedellabasedati
Esempiodibasedatinon normalizzata
Esami
Nome
Matricola AL210
Prof_AL210
IN110
Prof_IN110
GE110
Prof_GE110
Rossi
203040
24
Fontana
22
Liverani
-
Lopez
Verdi
251497
-
Fontana
-
Liverani
27
Lopez
Bianchi
337782
29
Fontana
30
Liverani
26
Lopez
Finalitàdellanormalizzazione
•
Perchénormalizzarelabasedati?Perrisolvereiseguentiproblemi:
– ridondanza:inutileripetizionediunostessodato
– anomaliadiaggiornamento:permantenereintegreecoerentileinformazioniènecessario
modificarepiùvolteunostessodato
– anomaliadicancellazione:eliminandoun’informazionedaldatabaseseneperdonoanchealtre
– anomaliadiinserimento:nonèpossibileinserireinformazioniincomplete,anchequandosarebbe
necessariofarlo
Esami
Nome
Matricola AL210
Prof_AL210
IN110
Prof_IN110
GE110
Prof_GE110
Rossi
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.2016/2017
Formenormali
•
Esistonodelleregolechedevonoessererispettatedallabasedatiaffinchéquestasia
correttamentenormalizzata;questeregolesononotecomeformenormali
•
Primaformanormale
inunatabellanonpossonoesisterecolonnedefinitepercontenereunamolteplicitàdivalori
NO!
Esami
Matr
OK!
Esame
Esamisostenuti
Matr
Corso
Voto
AL110 IN110 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
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
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
Corso
Voto
102030 AL110
25
123987 GE110
29
102030
IN110
27
874329
IN530
24
OK!
Corso
Nome
Docente
AL110
Fontana
GE110
Lopez
IN110
Liverani
10
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2016/2017
Formenormali
•
Terzaformanormale
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
Corso
Voto
OK!
Corso
Nome
Docente
Nome
Docente
Crediti
AL110
Fontana
AL410
Fontana
6
GE110
Lopez
IN440
Liverani
7
IN110
Liverani
IN110
Liverani
10
Formenormali
•
FormanormalediBoyce eCodd
Unatabellaèinformanormaleseperognidipendenzafunzionale A®B definitasudiessa,A
contieneunachiavedellatabella.
Dipendenzefunzionali:
Esame
Matr
Corso
Voto
102030
Docente Crediti
Studente
A®B:ilvalorediA determinail
valorediB
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.2016/2017
Formenormali
•
FormanormalediBoyce eCodd
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:ilvalorediA 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
•
Peroperaresuunabasedatirelazionaleèstatoprogettatounlinguaggiostandard:
SQL (Structured QueryLanguage)
•
Èunlinguaggiodiinterrogazioneemanipolazionedellabasedatiedelleinformazioniin
essacontenute
Nonèunlinguaggioimperativo/procedurale,èunlinguaggiodichiarativo:mancadei
concettidivariabile edistrutturadicontrolloalgoritmica,tipicadeilinguaggiimperativie
dellaprogrammazionestrutturata
•
Ècostituitodatreinsiemidiistruzioni:
•
– DDL (DataDefinitionLanguage):perdefinirelastrutturadellabasedati
– DCL (DataControlLanguage):pergestireicriteridiprotezioneediaccessoaidati
– DML (DataManipulation Language):peroperaresuidati
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
12
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2016/2017
DataDefinitionLanguage
•
•
ÈilsetdiistruzionidiSQLperladefinizionedellastrutturadellabasedati.
SonotreleistruzioniprincipalidelDDL:
– create:perlacreazionedidatabase,tabelle,indici,viste,ecc.
– alter:perlamodificadellastrutturadiunatabellaodialtrioggettiinterniadunabasedati
– drop:perl’eliminazionediunatabelle,diuninterodatabaseodialtrioggetti
•
Creazionediundatabase:
•
create database studenti;
Cancellazionediundatabase:
drop database studenti;
Dominiodidefinizionedegliattributi
•
•
Definireunatabellasignificadefinirnegliattributi eildominio deglistessiattributi
Idominisonoquellitipicidiognilinguaggiodiprogrammazione:
–
–
–
–
numeriinteri(int,integer)
numerifloating point (float,real,double)
stringhedicaratteri(char,varchar)
date (date,time,timestamp)
•
AltritipipossonoesseredefinitisullabasedispecifichetipichediundeterminatoRDBMS
•
Ogniattributopuòessereanchecaratterizzatodaunvaloredidefaulteunaseriedivincoli
(es.“not null”pericampiobbligatoridiunatabella)
Traivincolivièlapossibilitàdiaggiungereunattributoallachiaveprimariadellatabellao
l’attributodichiaveesternareferenziandounoopiùcampichiavediun’altratabella
•
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
13
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2016/2017
Creazionediunatabella
•
Nell’esempioriportatodiseguitovengonocreateduetabelledenominate“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;
Indicisulletabelle
•
•
•
•
•
•
•
Perrenderepiùefficientel’operazionediselezionedeidatipresentisuunatabella,è
possibilecreareunoopiùindici suunastessatabella
Seunatabellaèprivadiindici,l’unicometodopercercaredatichecorrispondonoadun
determinatocriterio,èquellodieseguireun“fulltable scan”,ossiaunascansionedell’intera
tabellasucuisieseguelaricerca:iltemporichiestoèlinearenelnumerodirighedella
tabella(complessitàO(n))
L’indiceèunastrutturadaticheconsentedimigliorareitempidiricercadelleinformazioni
presentiinunatabella
L’indiceèspessounastrutturadati“adalbero”(alberibinari,alberiR-B,ecc.)costruitasui
valoridiunaspecificacolonnadiunatabelladidatabase(es.:ilcampo“cognome”diuna
tabellaanagrafica):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)ericrearlodopoqualcheistante
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
14
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2016/2017
Indicisulletabelle
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è
vicinaalog2n
Tabellaconn righe:percercare
undatodevoscorrerlaper
intero(n operazionidi
confronto)
Mei
Bianchi
Aldi
Bruni
Rossi
Neri
Sassi
DataControlLanguage
•
•
ÈilsetdiistruzionidiSQLperladefinizionedeipermessidiaccessosuidatabaseesulle
tabelleeperlagestionedegliaccountutente.
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.2016/2017
DataManipulationLanguage
•
ÈilsetdiistruzionidiSQLperlagestionedelleinformazionipresentinellabasedati
•
SonoquattroleistruzioniprincipalidelDML:
–
–
–
–
insert:perinseriredatiinunatabella
select:perselezionareinbaseadeterminaticriteriocondizioniidatipresentiinunaopiùtabelle
update:permodificareidatidiunatabellasullabasediundeterminatocriteriodiselezione
delete:pereliminareirecorddiunatabellacorrispondentiadunadeterminatacondizione
Inserimentodati
•
•
L’istruzioneinsert consentediinserireuninsiemedivalorineicampidiunsolorecordin
unatabella:l’ordineconcuivengonofornitiivaloriaidiversicampi,sonospecificati
elencandonellostessoordineinomidegliattributicorrispondenti
Lestringhedicaratteridevonoesseredelimitatedaapici;selastringacontieneunapice,
questovariportatoduevolte
– esempio:‘Maria Giovanna’,‘Guido Dell’’Acqua’,
•
Ledate devonoessereindicatenelformatospecificodelDBMS(es.:‘aaaa-mm-gg’,come
‘2015-06-20’)
•
Sintassidell’istruzioneinsert:
insert into tabella (campo1, …, campok) 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.2016/2017
Selezionedirecord
•
L’istruzioneselect consentedileggereinformazionipresentisuldatabase,selezionandoil
risultatodaunaopiùtabelle,medianteappositecondizionicheconsentonodisceglieretrai
recordpresentiinarchivio,quellidavisualizzareinoutput
•
Sintassidell’istruzioneselect:
select tabella1.campo1, …, tabellah.campok
from tabella1, …, tabellah
where condizione
order by tabellai.campoi, …, tabellaj.campoj;
•
•
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
•
•
•
Èpossibileeseguireoperazionidiselezionechecoinvolganopiùtabellegraziealle
correlazionistabilitetraquesteattraversolechiaviprimarieelechiaviesterne
Questaoperazionesichiamajoin
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.2016/2017
Joineprodottocartesianoditabelle
•
•
•
Ognioperazionedijoin frapiùtabelleconsisteinnanzituttoinunprodottocartesiano trale
tabellecoinvoltenellaselect
Dallarelazione(tabella)ottenutacomeprodottocartesianosiselezionanosololerighe che
corrispondonoconla“where condition”
Unaoperazionedijoin puòesserequindimoltoonerosaperlamacchina:labasedatideve
essereprogettatainmododaminimizzareilnumerodijoin necessarieperottenerele
informazionidiinteresse
Joineprodottocartesianoditabelle
Esame
Studente
Matr
Corso
Voto
Matricola
Nome
102030
AL110
25
102030
Bianchi
123987 GE110
29
123987
Verdi
102030
27
376114
Rossi
IN110
select esame.corso, esame.voto, studente.nome
from esame, studente
where esame.matr=studente.matricola;
Join:esame x studente
Matr
Corso
Voto
Matricola
Nome
102030
AL110
25
102030
Bianchi
102030
AL110
25
123987
Verdi
102030
AL110
25
376114
Rossi
123987
GE110
29
102030
Bianchi
123987
GE1
29
123987
Verdi
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
18
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2016/2017
Aggiornamento
•
L’istruzioneupdate consentedimodificarealcunideivaloriassegnatiaicampidiunatabella
deirecordchesoddisfanodeterminatecondizioni
•
Sintassidell’istruzioneupdate:
update tabella
set campo1=valore1, …, campok=valorek
where condizione;
•
Esempio:
update studente set nome=‘Mori’ where matricola=102030;
•
Attenzione:unaistruzioneupdate privadiunacondizioneeseguel’aggiornamentosututte
lerighe(record)dellatabella
Cancellazione
•
L’istruzionedelete permettedieliminareirecorddiunatabellachesoddisfanouna
determinatacondizione
•
Sintassidell’istruzionedelete:
delete from tabella
where condizione;
•
Esempio:
delete from studente where nome like ‘Mo%’ or matricola=213243;
•
Attenzione:unaistruzionedelete privadiunacondizioneeseguelacancellazionedituttii
record (tuttelerighe)dellatabella
L’operatore“like”permettediconfrontareilvalorediuncampoconunapartediuna
stringa,utilizzandoilcaratterejolly “%”
•
– Nell’esempioeliminairecorddellatabellastudenteincuiilcamponomeiniziaconlastringa“Mo”
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
19
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2016/2017
Operazionidigruppo
•
•
Èpossibileottenereattraversounaselect anchevalorinonpresentineicampidella
tabella,macalcolatiraggruppandopiù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:sommaivalorinumericideicampi
– average/avg:calcolalamediaaritmeticadeivalorinumericideicampi
– count:contairecordchesoddisfanodeterminatecondizioni
SQLealtrilinguaggidiprogrammazione
•
•
SpessoillinguaggioSQLvieneutilizzatoall’internodiprogrammiscritticonaltrilinguaggidi
programmazione(C,C++,Java,Perl,Python,ecc.)
Nellosviluppodiunprogrammaèspessomoltoutileilconcettoditransazione
– unatransazioneraccoglieunaseriedioperazionisvoltesuldatabaseesoloalterminedella
transazionestessaleesegueeffettivamente(commit)
– incasosiverifichiunerroredurantel’esecuzionedelprogramma,èpossibilechiuderela
transazioneannullandotutteleoperazionieseguitefinoaquelmomento(rollback)
•
•
EsistonolibreriedifunzioniAPIperl’accessoalleinterfaccemesseadisposizionedaiDBMS
EsempioinlinguaggioPerlutilizzandoDBI/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.2016/2017
SQLealtrilinguaggidiprogrammazione
•
UnesempioanalogoinlinguaggioC
#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
linguaggidiprogrammazioneobject oriented (es.:Java,C#,C++,ecc.)
Intalicasiunabuonaingegnerizzazionedelcodicelasipuòraggiungeremappandoleclassi
dioggettiimplementatedalprogrammaconentitàpresentisuldatabaserelazionale,che
offronofunzionidipersistenzaperglioggettiottenutiistanziandotaliclassi
UnprodottoORM(Object-Relational Mapping)offredellefunzionidialtolivelloper
realizzareilcollegamentotraleclassidelprogrammaeleentitàdeldatabase
Inquestomodoilcodicesorgentesisemplifica,vistocheèlalibreriaORMadoccuparsidella
maggiorpartedellequestionitecnichediinterazionetrailprogrammaeilDBMS
Hibernate èunsoftwaremiddlewareopensourcecheimplementailservizioORMper
applicazioniscritteinJava:
– mediantefilediconfigurazionesidefiniscelamappaturatraoggettidelprogrammaJavaedentità
presentisulDBMS(ocheHibernate devecrearesulDBMSnellafasediinizializzazione)
– conalcunimetodimessiadisposizionedalmiddlewaresieseguonooperazionidiscritturaelettura
deidati,operandodirettamentesuglioggettidelprogramma,senzalanecessitàdiutilizzare
direttamenteillinguaggioSQL
•
NHibernate èunprodottoequivalenteadHibernate,perilframeworkMicrosoft.net
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
21
UniversitàdegliStudiRomaTre- CorsodiLaureainMatematica
a.a.2016/2017
NO-SQLDatabaseManagementSystems
•
•
•
•
Ilmodellorelazionaleèpotente,flessibileeassaidiffuso,mahadeilimiti,soprattutto
quandoènecessariotrattaremolienormididatioquandoèdifficilestrutturareaprioriil
datonelleentitàdeldatabase
Esistononumerosimodelliperlarappresentazionedeidati,diversidalmodellorelazionale
Questimodellisonoimplementatiinprodottisoftwaredisponibilisulmercatoepiùspesso
suicanalidelsoftwareopensource:sitrattadiprodottisperimentalioassaisolidieben
strutturati,utilizzatiperlagestioneaffidabilidiservizion-lineestremamenteonerosi
(Google,Facebook,ecc.)
Taliprodottiutilizzanolinguaggidiinterrogazionedeldatabaseedimanipolazionedeidati
diversidaSQL:perquestosiparladiNO-SQLdatabase,Not Only SQLDatabase
NO-SQLDatabaseManagementSystems
•
Document Oriented Database
– NonmemorizzanoidatiintabelleconcampiuniformiperognirecordcomeneiDBrelazionali:ogni
recordèmemorizzatocomeun“documento”chepossiededeterminatecaratteristiche;qualsiasi
numerodicampiconqualsiasilunghezzapuò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
– Implementanounmodelloadoggetti,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.2016/2017
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/
OracleExadata DatabaseMachine
Oracle,leadermondialenelsettoredeiprodottiRDBMS,producedellemacchineserverdiclasseenterprise
specificamenteprogettateedingegnerizzatepersvolgereconlamassimaefficienzailruolodi“databasemachine”
M.Liverani- DispensedelcorsoIN530- Sistemiperl'elaborazionedelleinformazioni
23