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