Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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