1. INTRODUZIONE ALLE BASI DI DATI 1.1 ISTEMA … · DI GESTIONE DI BASI DI DATI (DBMS) E...

Post on 14-Feb-2019

217 views 0 download

Transcript of 1. INTRODUZIONE ALLE BASI DI DATI 1.1 ISTEMA … · DI GESTIONE DI BASI DI DATI (DBMS) E...

1.INTRODUZIONEALLEBASIDIDATI

1.1SISTEMAINFORMATIVOESISTEMAINFORMATICODIUN’ORGANIZZAZIONE

Unsistemainformativoèuninsiemeorganizzatodiprocedureedirisorseumaneematerialiutilizzateperlaraccolta,l’archiviazione,l’elaborazioneelacomunicazionediinformazioninecessarieadun’organizzazionepergestiresialeattivitàoperativechequelledigoverno.

Ilsistemainformaticoèilsottoinsiemedelsistemainformativodedicatoallagestioneautomaticadelleinformazioniechefausodimaterialiditipoinformatico

1.2TREREALTÀCAMPIONEESCENARISIGNIFICATIVI

1.2.1LAREALTÀAZIENDALEESSENZIALE:ARTICOLI,ORDINI,CLIENTI,FATTURE

1.2.2LAREALTÀDELLEPRENOTAZIONIAEREE

1.2.3LAREALTÀDIUNABIBLIOTECA

1.3TERMINOLOGIAECONCETTIESSENSIALISULLEBASIDIDATI

1.3.2DATI,INFORMAZIONIECONOSCENZA

Idatirappresentanodeifattidellarealtàinesame.Undatocostituisceinformazionesoloseèingradodimodificarelaconoscenzadellarealtàdichiloriceve.

Interminipiùesplicitii“dati”sonoindefinitivadellesequenzebinariesuuncertosupportodimemoria,mentreleinformazionisonolaconoscenzasuifattidellarealtàchepossonoessererappresentatidaidati.

1.3.2STRUTTURADEIDATI

Affinchéidatipossanocostituireinformazione(cioèavereunsignificato)devonoesserecorredatidaunachiavediinterpretazione.Inparticolaresicercadidareunastrutturaaidaticherendapossibileunalorocorrettainterpretazioneindipendentementedallorovolume.Unodeimodipiùsempliciepiùcomunièquellodistrutturareidatiinunaopiùtabelle.

1.3.3ILCONCETTODIMODELLODEIDATI

Inprimaapprossimazioneunmodellodeidatièunostrumentolinguisticoingradodiattribuireuna“struttura”aidati.

Esistonotrecategoriedimodellideidati,corrispondentiatrelivellidecrescentidiastrazionesuidati:

‐ modelliconcettuali(osemantici):vengonoutilizzatenozionidilivellomoltoalto,cioèvicinoalmododipensaredell’uomo.IlpiùnotoediffusoèilmodelloER(EntityRelationship).

‐ modellilogici:vengonoutilizzatenozionidilivellointermedio.Inparticolarevieneutilizzatalanozionedirecord(registrazione).Ilpiùnotoediffusoèilmodellorelazionale.

‐ modellifisici:vengonoutilizzatenozionitipichedellivellodeifileedellememoriedimassa.Piùchedimodellisiparladiorganizzazionifisichedeidati(odimetodidiaccesso):sequenziale,sequenzialeconindice,tabellahash,aB+‐albero,ecc.

1.3.4VINCOLIDIINTEGRITÀ

Ingenereidatinonpossonoerre“liberi”,maperrappresentaredavverolarealtàinesamedevonosottostareadeivincolidivarianaturachiamativincolidiintegrità.Essisidividonoin:

‐ univocitàrispettoaunachiave‐ restrizionesuldominiodiunattributo‐ integritàreferenziale‐ vincoliparticolari(quellichenonricadonodelleprecedenticategorie)

1.3.5SCHEMADEIDATIEDDL

Unoschemadeidatièunadescrizionedellastrutturadeidatiedeivincolidiintegritàcheessidevonosoddisfre.

PerdescrivereunoschemaognimodellodeidatimetteadisposizioneunlinguaggioclassificatocomeDDL(DataDefinitionLanguage).

1.3.6OCCORRENZEDIBASEDIDATI.INTENSIONE/ESTENZIONE

Unaoccorrenza(oistanza)dibasedidatiDèuninsiemedidatistrutturatosecondounoschemaS,chevienedettointensionediD.InversamentesidicecheDèunapossibileestensionedelloschemaS.

Inparticolarel’intensionediuninsiemeditabelleè,letteralmente,“ciòchesiintende”conquelletabelle.

1.3.7CONCETTODIBASEDIDATI

Inprimaapprossimazionepotremmodefinireunabasedidaticomeunoggettoingradodicontenereinogniistanteunaparticolareestensionediunoschema(occorrenzadibasedidati)

Bisognaperòtenercontodidiverseesigenzepratichecomel’accessoconcorrenteelasicurezzadeidati.

1.3.8MANIPOLAZIONEDEIDATIEDML

Unmodellodeidatifornisceanchestrumentipermanipolareidati,oltreastrutturarlievincolarli.Permanipolazionediintendel’applicazionedioperazionivoltea:

‐ estrarreinformazionedallabasedidati‐ modificarelabasedidati

Inquestosenso,unabasedidatinonvienepiùvistasemplicementecomeuncontenitorestrutturatodeidati,macomeunsistemaingradodipermettereosservazionidelsuostatoedimodificarneilsuostato.

Inpratica,piùcheuninsiemedioperazioni,vienespessomessoadisposizionedegliutentidellabasedidatiunDML(DataManipulationLanguage).

UnDMLpuòessereunlinguaggiodausarsiautonomamenteoad“immersione”inunlinguaggiodiprogrammazionetradizionale.

1.3.9DMLPROCEDURALIENON­PROCEDURALI(QUERYLANGUAGES)

UnDMLvieneclassificatoproceduraleseperesprimeredelleinterrogazionisullabasedidatisideve,ingenerale,esprimereunaseriedicomandidaeseguirsisuccessivamenteperreperireidatirichiesti.Incasocontrariovieneclassificatocomenon‐procedurale(oquerylanguage).

1.3.10CONDIVISIONEDEIDATI,ACCESSOCONCORRENTEETRANSAZIONI

Unanecessitàchesipresentaèquelladiprevederel’accessoalsistemainformaticodapiù“utenti”,doveper“utente”siintende,nontantoononsolounapersonafisica,quantounprocessocheaccedeaidatiinconcorrenzaconaltriprocessi.

Lasoluzioneaquestiproblemiconsistenelchiederechelemodificheeleinterrogazionisoggetteadinterrogazioneconcorrentesianoeseguitecometransazioni.

Unatransazioneèunasequenzadiazionidiunaprocedurachesiproponedimodificareodosservarelabasedidaticonlaproprietàdiatomicità:ovengonoeseguitedeltuttocomeun’unicaazioneelementareeindivisibile,ononvengonoeseguiteaffatto:eventualieffettiparzialidevonoquindiessereannullati.

1.3.11SICUREZZADEIDATIEAUTORIZZAZIONI

Siponeperognibasedidatiilproblemadiproteggereidati,assicurandolanecessariasicurezzadeidatiattraversounsistemadiautorizzazioni.

Ilproprietariohalanecessitàdi:

‐ riservareesclusivamentepersécertiusideidatie/odiunaloroparte‐ autorizzareparticolariutentiadeffettuaredeterminatiusideidatiodiunaloroparte

Inaltriterminihalanecessitàdidifendersidatretipidiusifraudolentideidati:

‐ furtodiinformazioni‐ manomissionedeidati‐ distruzionedeidati

Occorrequindicheesistanodeimeccanismiperladifesa,oltreaquellifornitidalsistemaoperativo.Tipicamentesifaràusodiidentificazionedegliutenti,dipasswordeditecnichedicrittografia.

1.3.12INTEGRITÀERIPRISTINODEIDATI

Ènecessarioinoltreproteggersidamalfunzionamentihardwareosoftwarechepotrebberofareassumereunostatoinconsistente,cioèunostatoincuiidatinonsonocoerentifraloro.

Conl’espressioneripristinodeidatisiintendequell’attivitàmediantelaqualesiripristinaunostato“integro”oconsistentedellabasedidati.

1.3.13DEFINIZIONEDIBASEDIDATI

Unabasedidati(odatabase)èuncontenitoredidaticherispondealmenoaiseguentirequisiti:

‐ idatisonoorganizzatiinaccordoadunprecisoschemadiunmodellodeidati‐ idatisonoutilizzabiliperdiverseapplicazioni,eventualmenteinconcorrenzafraloro,

dautentiogruppidiutentidiversiinteressaticiascunoasottoinsiemideidatipresenti‐ esisteunaintegrazionedeidati,inmododarendereminimalalororidondanza.Non

esistecioèunaincontrollataduplicazionedeidatidipendentedalnumeroedaltipodellaapplicazioni

‐ esistonomeccanismiperlasicurezzadeidatichenegarantisconolariservatezzaeliproteggonodaaccessinonautorizzatifraudolentioaccidentali

‐ esistonomeccanismiperilripristinodeidatiodiloroinconsistenzeprovocatedaguastihardwareosoftware

1.3.14SISTEMIDIGESTIONEDIBASIDIDATI(DBMS)ESOTTOSCHEMI

IlDBMS(DataBaseManagementSystem)osistemadigestionedibasididatièuncomplessodimodulisoftwarecherisolveiproblemipostidalrispettodeirequisitidellabasedidati.

Essoconsentedi:

‐ definireloschemalogicodellabasedidati,atalepropositovienefornitoilDDL(DataDefinitionLanguage)

‐ accederee/omodificareidatidiunabasedidati,atalepropositovienefornitoilDML(DataManipulationLanguage)

‐ definiresottoschemicheconsentonoaciascunprogrammatorediun’applicazionedilimitarel’attenzioneallapartedelloschemachelointeressa

‐ definirealcuniparametriqualitativiequantitatividellestrutturefisichedimemorizzazionedellabasedidati,atalescoposiusaunlinguaggiodettoDMCL(DeviceMediaControlLanguage)oDSL(DeviceStorageLanguage)

1.3.15DIZIONARIODEIDATI

Ildizionariodeidaticostituisceunaspeciedibasedidatisullabasedidati.EssocontieneinparticolaretutteleinformazionisulloschemachepossonoessererichiestedalDBMSatempodiesecuzioneperoperaresuidati.ServeinoltreairesponsabilidelSIperladefinizioneinizialedelloschemaedeisottoschemieperlaloromanutenzione.

1.3.16MODODIOPERAREDIUNDBMS

Ognirichiestadioperaresullabasedidati(attraversoilDML)sitraduceinunacomplessaseriedioperazioniabassolivelloperindividuareesattamenteidatirichiestiepergarantireunesitoautorizzato,corretto,edefficiente.

1.3.17INDIPENDENZALOGICAEFISICA

Lastrutturaatrelivelli(esterno,logico,interno)serveagarantiredueimportantiproprietàperunDBMS:

‐ indipendenzalogica,cioèlapossibilitàdimodificareloschemalogicodiunabasedidatisenzadovermodificareiprogrammiapplicativinoninteressatiallamodifica(eviceversa)

‐ indipendenzafisica,cioèlapossibilitàdimodificarel’organizzazionefisicadeidatisenzadovermodificareiprogrammiapplicativi(eviceversa)

1.3.18CLASSIDIUTENZAEDBA

AdunSIbasatosuiDBMSsirivolgonotipicamentequattroclassidiutenti:

‐ utentisemplici,sonoglioperatoricheusanoleapplicazioniinterattivecostruitedaiprogrammatoridelleapplicazioni

‐ utentisofisticati,utenticheintendonoaccedereainformazionidigovernooriservate‐ programmatoridelleapplicazioni,sonocolorocheusanoilDMLpercostruire

specificheapplicazioni‐ l’amministratoredellabasedidatioDBA(DataBaseAdministrator),persona(o

gruppodipersone)chepartecipaallaprogettazionedelsistemainformaticoecheassolveaicompitifondamentaliperlamanutenzioneelagestionedelSI

2.ILMODELLOCONTETTUALEER

Ilmodelloconcettualedeidatipiùutilizzatooggièsenz’altroilmodelloentità‐associazionioER(EntityRelationship).

IlmodelloERsibasasull’usodiduetipidiastrazioni:leentitàeleassociazioni(fraentità).

2.1ENTITÀETIPODIUN’ENTITÀ

Un’entitàèunaqualsiasicosaconcretaoastrattadistinguibiledallealtre(es.sole,luna,Tizio,Caio,odio,amore,ecc.)

Ècompitospecificodelprogettistaconcettualeclassificaretutteleentitàdell’universodeldiscorsoinbasealleproprietàchepresentano.Cosìsoleelunasarannoclassificatecomeesemplari(oistanze)diASTRO.Questoprocessomentalevoltoaindividuarelesomiglianzedidiverseentitàastraendodallelorospecifichedifferenzeènotoappuntocomeclassificazione.

ASTRO,PERSONA,SENTIMENTOsononomiditipidientità,anchesesiusasemplicementeilnomeentità.

L’introduzionediun’entitàeinunoschemaconcettualestaasignificarechenellarealtàpuòesistereuninsiemedientitàdiqueltipo,indicatocomeestensionedie.

2.1.1ATTRIBUTIECHIAVI

Diognientitàilprogettistadeveindividuareleproprietàrilevanti.

Siassumecheogniproprietàpossaessererappresentatadaunattributo,caratterizzatodaunnomeedauntipo.NelmodelloERsiescludeperòesplicitamentelapossibilitàcheiltipodiunattributopossaessereiltipodiun’entità.

Vengonodefiniticomesempliciquegliattributiilcuitipovienerappresentatoconlunghezzafissa(integer,real,money,character,boolean,string,date).

Avoltepuòesserecomodofareriferimentoaiseguentiattributistrutturati:

‐ attributicomposti,cioèaggregazionidialtriattributi(sempliciostrutturati)‐ attributimultipli,cioèsequenzedilunghezzavariabiledisottoattributidellostesso

tipo‐ attributiditipounione,quandoiltipodiunattributopuòessereunoqualsiasitraun

insiemefinitodipossibilità

Ildominiodiunattributoèl’insiemedeipossibilivalorichepuòassumerel’attributo.

Sipuòconsentirecheunattributosiaopzionaleinvececheobbligatorio:ilsuodominiovieneidealmenteestesoconilvalorenullo.

Èutiledesignarealcuniattributicomecostanti(oreadonly)quandosivuolechenonpossanosubireaggiornamentiunavoltachel’entitàvienecreata.Fraquestivisonovisonoancegliattributiderivati(dettianchecalcolatiovirtuali)ilcuivaloreèfornitodalcalcolodiun’espressionecostruitaconaltriattributidell’entità.

2.1.2CHIAVEDIUN’ENTITÀEDENTITÀDEBOLI

Unachiave(oidentificatore)diun’entitàèuninsiemediattributicheidentificanounivocamenteun’entitànelmondoconsiderato.Ingeneresipretendechelachiavesianonridondante,altrimentilachiavesidefiniscesuperchiave.

Seesistonopiùchiavisiconvienedichiamarechiaveprimariaquelladecisadalprogettistaconcettuale.

Seunachiavenonesistesidicechesitrattadiun’entitàdebole(weakentity)altrimentisiparleràdientitàforte(strongentità).

2.1.3RAPPRESENTAZIONEGRAFICADIUN’ENTITÀ

NeidiagrammiERleentitàvengonorappresentateconiloronomiracchiusiall’internodirettangoliabordosingoloodirettangoliabordodoppiosesitrattadientitàdeboli.

Gliattributi(edeventualmenteillorotipo)vengonotalvoltaracchiusientrocontorniellittici.Siconvieneinoltresisottolinearegliattributicheformanolachiaveprimariaediriportarneiltipo.

Seperòloschemaècomplessoe/oleentitàhannomoltiattributisipreferisceriportarequestiultimiinsedeseparata:

entity ASTRO attributes Nome: STRING(20) Diametro: REAL DistanzaDallaTerra: REAL key Nome

2.1.4ATTRIBUTIDIUNAENTITÀEDIPENDENZEFUNZIONALI

Nell’individuazionedelleentitàenellasceltadegliattributièutileseguiredueprincipi:

‐ ogniattributononchiavediuntipodientitàdevedipenderefunzionalmentedatuttigliattributidellachiave(enondaunapartediessi)

‐ perognitipodientitànonvisonoattributichedipendonofunzionalmentedaattributinonchiave

Ilrispettodiquestiduesemplicicriterigarantiscequasisempreunacorrettamodellazionedellarealtà.

2.2ASSOCIAZIONI

2.2.1ASSOCIAZIONIBINARIEFRAENTITÀ

Un’associazione(relationship)binariatradueentitàAeBrappresentaunarelazione,insensomatematico,traunpossibileinsiemedientitàditipoAeunpossibileinsiemedientitàditipoB,cioèuninsiemedicoppie(a,b).

Dopoaverintrodottoun’associazionebinariaRtradueentitàAeB,lasideveclassificarein:

‐ associazioneditipouno‐a‐uno(1:1)‐ associazioneditipouno‐a‐molti(1:N)‐ associazioneditipomolti‐a‐molti(N:M)

2.2.2PARZIALITÀ/TOTALITÀDELLEASSOCIAZIONI

Inunarelazionenonèdettochetuttiglielementidell’insiemeAsianoinrelazioneconglielementidell’insiemeB.SidicealloracheRèparzialerispettoadA(altrimentisidiràtotalerispettoadA).

Inqualchecasosipossonoporredeilimitiprecisi,noticomevincolidicardinalità,sulnumerodielementidiBchepossonoessereassociatiaunelementodiA(oviceversa).

2.2.3ATTRIBUTIDELLEASSOCIAZIONI

Ancheleassociazionipossonoaveredegliattributichedescrivonoqualcheproprietàdeilegami.

Primadiintrodurreunattributoinun’associazioneconvieneperòchiedersisel’attributononrappresentiinrealtàlachiavediun’entità.Intalcasosipasseràadassociazioninonbinarie.

2.2.4RAPPRESENTAZIONIGRAFICHEDELLEASSOCIAZIONI

Leassociazionibinarievengonoconvenzionalmentedisegnatecomerombicheriportanoilloronomeeconduedeisuoiverticicollegatialleentitàcoinvolte.Eventualiattributivengonoriportaticonlastessatecnicausataperleentità.

Nonesisteungeneraleaccordosulmododirappresentaregraficamenteiltipoelaparzialitàdiunassociazione.

Perindicarelaparzialitàsiusainveceuntrattino,semancailtrattinosiintendechelarelazioneètotalerispettoaquellaentità.

2.2.5ASSOCIAZIONIRICORSIVE

Visonodeicasiincuiledueentitàdiun’associazionebinariacoincidono.Questeassociazionivengonochiamatericorsive.

2.2.6ASSOCIAZIONINONBINARIE

IlconcettodiassociazionenelmodelloERnonsilimitaalcasobinario.Ingeneraleleentitàcoinvoltepossonoesserenconn≥2(associazionen‐arie).

PerdeterminareiltipodiunarelazioneternariaRsuA,B,Csiprocedecomesegue:

siimmaginiditener“fissi”unelementobdiBeunocdiC.SelarealtàinesamepretendecherimangaassociatoununicoelementoasuAdiremocheillatoAdellarelazioneReditipounoaltrimenticheèditipomolti.

PerdecidereiltipodeglialtriduelatiBeCdellarelazionesiprocedeinmodoanalogo.

2.2.7ASSOCIAZIONIEGERARCHIEISA

IlmodelloERnellasuaversioneestesa(ExtendedERoEER)comprendeanchestrumentiasupportodiquelprocessodiastrazionenotocomegeneralizzazione.Talistrumenticonsentonodiclassificaregerarchicamenteitipidientità.

Lostrumentopiùsempliceèl’associazioneISAsemplice(dall’inglese“IS‐A”cioè“èun”).Siusaquandosivuolemodellareilfattochenellarealtàuncertoinsiemedientitàrisultaessereunsottoinsiemediunaltro(gerarchiapersottoinsieme).

Avoltec’èlanecessitàdirappresentareilfattochediversitipidientitàconcorronoaformareuntipodientitàpiùgenerale.QuestavienechiamataassociazioneISAripartita(gerarchiapergeneralizzazione).

2.3DOMANDEERISPOSTESULLAPROGGETTAZIONECONCETTUALEER

2.4ESEMPIDIMODELLAZIONEER

2.4.1ILDIAGRAMMAERPERLAMICROREALTÀAZIENZDALE

2.4.2ILDIAGRAMMAERPERLAREALTÀDIUNACOMPAGNIAAEREA

2.4.3ILDIAGRAMMAERPERLAREALTÀDIUNABIBLIOTECA

2.5INTEGRAZIONEDISOTTOSCHEMI

Quandosiaffrontaunarealtàcomplessa,suddivisibileintantepiùsemplici,puòessereconvenienteaffrontareseparatamentelamodellazionedellesingolesottorealtàeintegrarepoiisottoschemiottenuti.

L’integrazionedischeminonèsemplicementela“fusione”disottoschemi,maunloroadattamentoragionatovoltoaeliminareiconflittieleinconsistenzedivariogenere.

3.ILMODELLORELAZIONALE

Lasecondaimportantefasedelprogettodiunsistemainformaticoèlaprogettazionelogica.Oggiilmodellologicodeidatipiùdiffusoèilmodellorelazionale.Allabasediquestomodelloc’èilconcettodi“tabella”.

3.1RELAZIONIESCHEMIRELAZIONALI

3.1.1RELAZIONIETUPLE

Ilmodellorelazionaleprevedeununico,elementaremeccanismodistrutturazionedeidaticostituitodalla“relazione”,intesainsensomatematico.

Larelazionerappresentatainfiguraèl’insiemediterne:

R≡{(a’,b’,c”),(a”,b”,c”),(a”,b1,c’”),(a’”,b”,c’)}

UnarelazioneRsuunasequenzadiinsiemi(Domini)D1,D2,…,Dn(nonnecessariamentedistinti)èunsottoinsiemedelloroprodottocartesiano:

R⊆D1×D2×…×Dn

Ilnumeronèdettogradodellarelazione.GliinsiemiD1,D2,…,Dnsonodettidominidellarelazione.Ciascunodiessicoincideconuninsiemedivaloridiuntipoatomico(caratteri,stringe,numeri,ecc.)ocomunquenonstrutturato.

Adifferenzadellerelazionimatematiche,nelmodellorelazionaleadognidominiodiunarelazionevieneassociatounnome,dettoattributo(ocampo)dellarelazione,cheloidentificaunivocamenterispettoaglialtriattributidellastessarelazione.

DaunpuntodivistamatematicoglielementidiunarelazioneRsonodelleennuple(d1,d2,…,dn)cond1∈D1,d2∈D2,d3∈D3,meglionotecometuple.

Inunarelazionenonvipossonoesseretupleuguali(nonsonoammessiduplicati).

Relazionietuplevengonochiamaterispettivamentetabelleerighe.

R X Y Z a’ b’ c’ a” b” c” a’” b’” c’” a”” b”” c””

Unabasedidatirelazionalenonèaltrocheuninsiemeditabellecomequellaprecedente.

3.1.2CHIAVIDIUNARELAZIONE

L’unicapossibilitàoffertaalprogettistaèquelladistabilirecheuncertoinsiemedegliattributicostituisceunachiavecandidata(o“chiave”).

UnachiavecandidatadiunarelazioneRèuninsiemeK≡{a1,a2,…,an}nonvuotodinomidiattributidiRchegodedelleseguentidueproprietà:

‐ Univocità:dataunaqualsiasiestensionediK,cioèun’assegnazionedivalori≡{v1,v2,…,vn}agliattributidiK,inogniistanteesistealmassimounatupladiRchehatalivaloriincorrispondenzadegliattributidiK

‐ Non‐rindondanza:laproprietàdiunivocitàvienemenosesitoglieunoquasiasidegliattributidiK

Inaltreparole,gliattributidiunachiavecandidatasonotuttinecessariesufficientiperindividuareunatupladiunarelazioneR.

Uninsiemediattributichesoddisfaallaproprietàdiunivocità(manonnecessariamenteaquelladinon‐rindondanza)vienedettasuperchiave.

IngeneralepossonoesisterepiùchiavicandidateperunrelazioneR.Fraquestenevienesceltauna,solitamenteconilminornumerodiattributi,chevienedesignatacomechiaveprimariadiR.

3.1.3SCHEMIDIRELAZIONE,SCHEMIRELAZIONALIEBASIDIDATIRELAZIONALI

L’intensionediunarelazioneènotacomeschemadirelazioneedècostituitadalleseguentiinformazioni:

‐ nomedellarelazione‐ elencodegliattributiconillorotipo‐ insiemedegliattributichecostituisconolachiaveprimaria

Questeinformazionivengonospessofornitenelseguentemodo:

<nomerelazione>(<attr1>[:tipo1],<attr2>[:tipo2],…,<attrn>[:tipon])

conlaconvenzionedisottolinearegliattributichecostituisconolachiaveprimaria.

Sipossonooradefinireconprecisioneschemarelazionaleebasedidatirelazionale.

Unoschemarelazionaleèuninsiemedischemidirelazione.

Unabasedidatirelazionaleèuninsiemedirelazioni(variabilineltempo)lecuioccorrenze(oistanze)sonoestensionidiunoschemarelazionale.

3.2TRASFORMAZIONEDASCHEMAERASCHEMARELAZIONALE(ESTESO)

3.2.1TRASFORMAZIONEDELLEENTITÀEDELLEASSOCIAZIONIUNO­A­MOLTIEUNO­A­UNO

Dinorma,adognientitàforteAsiassociaunarelazioneA’chahaglistessiattributielastessachiave.Vipossonotuttaviaesseredegliulterioriattributidovutialfattoche,seesisteun’associazioneuno‐a‐moltitraun’entitàEedA,siapplicalaregoladiaggiungereadA’gliattributichiavedell’entitàE,abitualmentechiamatichiaveesterna(foreignkey).

Perquantoriguardaleentitàdeboliènecessariocheognunadiesse“dipenda”daunentitàforte.

3.2.2TRASFORMAZIONEDELLEASSOCIAZIONIMOLTI­A­MOLTI

Leassociazionibinariemolti‐a‐moltiandrannorappresentateconappositerelazioniaventicomechiavelechiavidelledueentitàcoinvoltepiùglieventualiattributidell’associazione.

3.2.3TRASFORMAZIONEDELLEASSOCIAZIONIISA

PerquantoriguardaleassociazioniISA,visonoduesoluzionichesipossonoprendereinconsiderazione.

NellaprimasirappresentaPconunarelazioneP’distintachehalastessachiavedellarelazionechevieneassociataadAegliattributiparticolari.

Lasecondasoluzionepresentailvantaggiodirichiedereun’unicarelazione,maoccorrericonoscereletuplecherappresentanoelementidiP.AtalescoposiproponediintrodurreunesplicitoattributobooleanoIsP.

3.2.4SCHEMIRELAZIONALIESTESIEVINCOLIDIINTEGRITÀREFERENZIALE

Facendoriferimentoalruolosvoltodallechiaviesternesipuòproporreunaversionegraficadelloschemarelazionalecheverràchiamataschemarelazionaleesteso.

Ognichiaveesternasitraducenellapresenzadiun’associazioneuno‐a‐molti(ouno‐a‐unoinqualchecaso)traduerelazionicheverrannochiamaterispettivamenterelazioneprincipaleerelazionecorrelata.Leassociazionimolti‐a‐moltivengonoinvecerappresentatemedianteueassociazioniuno‐a‐moltinelmodellorelazionaleesteso.

LapresenzadiunachiaveesternaKeinunarelazioneRcorr,cioèdellachiavediun’altrarelazioneRmain,stainpraticaaindicarecheèpresenteun’associazioneuno‐a‐molti(ouno‐a‐uno)traletuplediRmaineletuplediRcorr.

SidicechesussisteunvincolodiintegritàtraunarelazioneRcorr(relazionecorrelata)edunarelazioneRmain(relazioneprincipale),rispettoadunachiaveesternaKe,seesolose,perognitupladiRcorrilvaloredellachiaveesterna(relativaaRmain)èpresentecomechiaveprimariainunatupladiRmain.

Sipuòanchedirechelachiaveesternainunatupladiunarelazionecorrelataèunriferimento(un“puntatore”simbolico)adunatuplaesistentedellarelazioneprincipale.

Insostanza,imporreilvincolodiintegritàreferenzialesignificapredisporredeicontrolliaffinchésia:

‐ proibitoinserireunatuplainunarelazionecorrelataconunachiaveesternainesistentenellacorrispondenterelazioneprincipale

‐ proibitomodificareunachiaveesternanellarelazionecorrelatasostituendolaconunainesistentenellacorrispondenterelazioneprincipale

‐ proibitocancellareunatuplainunarelazioneprincipalelacuichiavecomparecomechiaveesternaintuplediunaopiùrelazionicorrelate

‐ proibitomodificarelachiaveprimariadiunatupladiunarelazioneprincipalechecomparecomechiaveesternainunaopiùrelazionicorrelate

Iltentativodicompiereunaqualsiasidiquesteazionicomportailsollevamentodiun’eccezioneilcuisignificatoèappunto“violazionedell’integritàreferenziale”.

3.3ALGEBRARELAZIONALE(INTERROGAZIONIMEDIANTE)

Ilmodellorelazionaleèstatointrodottopensandoadunamanipolazionedeidatimoltoelegantedalpuntodivistamatematico.

Sonostatipropostidueapprocci:

‐ approccioalgebrico,incuiilrisultatodiunainterrogazioneèunarelazioneottenutacomevalutazionediun’espressionecostituitaconoperatoridiun’algebrarelazionale

‐ approcciologico,incuiilrisultatodiunainterrogazionevienedescrittacomelarelazionechesoddisfaunaformuladilinguaggiologicosullerelazionidellabasedidati(approccionotocomecalcolorelazionale)

Idueapproccisisonodimostratiequivalentidalpuntodivistadellapotenzaespressiva:perogniinterrogazionefattainunapproccioèpossibiletrovarneunaequivalentenell’altro.

Diseguitoèpresentatal’algebrarelazionale.

3.3.1OPERAZIONIPRIMITIVE

Unionedirelazioni

DetteRedSduerelazionicompatibili,l’unionediRconSèlarelazioneottenutadall’unioneinsiemisticadelleduerelazioni:

R∪S≡{t|t∈R∨t∈S}

Differenzadirelazioni

DetteReSduerelazionicompatibili,ladifferenzafraRedSèlarelazioneottenutadalladifferenzainsiemisticadelleduerelazioni:

R‐S≡{t|t∈R∧t∉S}

Siosservichel’operazionedifferenzapotrebbeessereutilizzatapercostituirel’intersezionediduerelazioni:R∩S=R‐(R‐S)

Prodottodirelazioni

SianoA1,A2,…,An1eB1,B2,…,Bn2gliattributi(tuttidiversi)diduerelazioniqualsiasiRedSrispettivamentedim1edm2tuple.Sidefinisceprodotto(oprodottocartesiano)traRedSlarelazioneconattributiA1,A2,…,An1,B1,B2,…,Bn2digradon1+n2costituitadallem1×m2tupleottenute“concatenando”ognitupladiRconognitupladiS:

R×S≡{t|t=rconcs∧r∈R∧s∈S}

Vaprecisatoilconcettodiconcatenazionedituple:dateduetuple(x1,x2,…,xn1)e(y1,y2,…,yn2)laloroconcatenazioneèlatupla((x1,x2,…,xn1,y1,y2,…,yn2).

Proiezioneiunarelazione

Questaoperazioneconsentediselezionaresolodeterminatecolonnedaunatabella.Piùprecisamente,dataunarelazioneRedunsottoinsiemeA={A1,A2,…,Ak}deisuoiattributi,sidefinisceproiezionediRsuAlarelazionedigradokchesiottienedaRignorandogliattributi(colonne)nonpresentiinA.

Laproiezionevieneabitualmentedenotatacon:

ΠA1,A2,…Ak(R)

Restrizionediunarelazione

L’operazionedirestrizione(oselezione)consentediestrarredelletuple(cioèdellerighe)daunarelazioneRinbaseaduncertocriterioP:

σp(R)

IlcriterioPpuòessereespressocomecondizionesempliceocomposta(coniconnettivi and e or).Unacondizionesempliceèdellaforma:

A operatore_di_confronto B

doveAeBsononomidiattributidiR,oppurecostantioespressioni; operatore_di_confronto èunodeglioperatori=,≠,>,≥,<,≤.

Ridenominazionediunattributo

Traleoperazioniprimitiveènecessarioconsiderareanchel’operazionediridenominazionediunattributo.Lasintassisaràlaseguente:

rename A as B in R

chehal’effettodirestituireunarelazioneidenticaadRconl’attributoArinominatocomeB.

3.3.2GIUNZIONIDIRELAZIONI

Traleoperazioniderivate,quellecherivestonomaggioreutilitàpraticasonoquelledigiunzione(join)checonsentonodicostruireunarelazione,partendodaduerelazioni,sullabasediqualchecriterio.

Equigiunzione(equijoin)

L’equigiunione(equijoin)diduerelazioniRedS,rispettoadunattributoAdiRedunattributoBdiS,èdefinitocomesegue:

R A=BS ≡σA=B(R×S)

VienefattocioèilprofottotraRedSesimantengonosoloquellerigheincuirisultanougualiidueattributiAeB.

L’equigiunzioneèuncasoparticolarediunaoperazionepiùgeneralechiamataθ‐joinincuiθèunoperatorediconfronto(<,>,=,ecc.)chevieneapplicatosuidueattributiAeB.Asuavoltaθ‐joinèuncasoparticolaredigiunzioneinterna(innerjoin),incuiilcriteriodiselezionedelletupleR×Svienestabilitodaunaqualsiasicondizione.Siosservi,daquestopuntodivista,cheilprodottocartesianopuòesserevistocomeuncasoparticolaredigiunzioneinternaincuisispecificalacondizione true.

Giunzionenaturale(naturaljoin)

SianoRedSduerelazioniesifaccial’ipotesichevisiaunsoloattributoAincomune.Lagiunzionenaturale(naturaljoin)traRedS,puòesseredefinitacon:

R S ≡Π<tuttigliattributidiRedS>(R (renameAasA’inS))

Inaltritermini:sirinominal’attributocomuneinunadelleduerelazioni,sifal’equijoinrispettoaidueattributiesieliminaunadellecolonnecherisultanouguali.

Semi‐giunzione(semi‐join)

Lasemi‐giunzione(semi‐join)diduerelazioniRedSècomelagiunzionenaturale,conladifferenzachesiproiettanosologliattributidiR:

R S ≡Π<gliattributidiR>(R S)

InaltriterminisipuòdirechevengonorestituiteletuplediRchepartecipanoallagiunzionenaturalediRedS.

3.3.3ASSOCIAZIONITRAENTITÀEALGEBRARELAZIONALE

3.3.4GIUNZIONIESTERNE(OUTER­JOIN)EASSOCIAZIONIISA

Legiunzioniesterne(outerjoin)sonogiunzioni,nonderivabilidalleoperazioniprimitive,cheappaionocomedelleestensionidellagiunzionenaturale.Tornanocomodoquandosivoglionouniretabelle“preservando”,nelrisultato,tutteleinformazionipresentisuunoosuentrambeletabelledipartenza.

Siconsideranonormalmente3tipidigiunzioniesterne:

‐ L R leftouterjoin: si“preservano”letuplediL‐ L R rightouterjoin: si“preservano”letuplediR‐ L R fullouterjoin: si“preservano”sialetuplediLchediR

LegiunzioniesternetornanoutiliquandosivuolerispondereaparticolariinterrogazionicherappresentanoassociazioniISA.

3.4DIPENDENZEFUNZIONALIEFORMENORMALI

Unapproccioingenuoalmodellorelazionale,comequellodiaverepocherelazioni,portaadaveredeglischemicherisultanoinefficientineiconfrontidellospaziooccupatoechepresentanospiacevoliinconvenientisulleoperazionidimodificadellabasedidati.

Èconsuetudineriferirsiaquestasituazionedicendoche“loschemanonènormalizzato”.Siosservi,tuttavia,cheseloschemaERè“buono”,leregoleditrasformazionedaschemaERaschemarelazionaleportano“automaticamente”alladefinizionedischeminormalizzati.

3.4.1ILFENOMENODELLEANOMALIE

Gliinconvenientichesipossonoverificareinrelazioninonnormalizzatesonochiamatianomalie.

Alcuneanomaliechesipossonopresentaresonoleseguenti:

‐ anomaliaininserimento‐ anomaliaincancellazione‐ anomaliainaggiornamento

Leanomalieincancellazioneedaggiornamentosonounadirettaconseguenzadellaridondanzadialcunidati.

Èevidentecheall’attopraticoènecessarioprogettareunabasedidatirelazionalechesiaesentedaanomalie.

3.4.2DIPENDENZEFUNZIONALI

Lateoriadellebasididatirelazionalifaspessoriferimentoalconcettodidipendenzafunzionale:

SianoX≡{X1,X2,…,Xk}eY≡{Y1,Y2,…,Yn}dueinsiemidiattributidiunoschemadirelazioneR.DiremocheYdipendefunzionalmentedaX(ocheXdeterminaY)scrivendo:

X1,X2,…,Xk→Y1,Y2,…,Yn

seesolose,perogniestensionedellarelazioneRnellarealtàconsiderata,ivaloridegliattributidiXdeterminanounivocamenteivaloridegliattributidiY.

Inaltritermini,sipuòdirecheseinogniestensionediR,due(opiù)tuplehannoglistessivaloridegliattributiX1,X2,…,XkalloralestessetupledevonoaverenecessariamenteancheglistessivaloridiY1,Y2,…,Yn.QuestaproprietàdeveesseregodutapertuttelepossibiliestensionidiRnellarelatàconsiderata.

Siusadistingueretradipendenzaparzialeedipendenzacompleta(odipendenzapiena)diYdauninsiemediattributiX.NelprimocasosignificacheYdipendesolodaunsottoinsiemeproprioX’diX.Nelsecondosiintendechetalesottoinsiemenonesiste:sedaXsieliminaunqualsiasiattributoessonondeterminapiùunivocamenteY.

3.4.3FORMENORMALIENORMALIZZAZIONE

Lerelazioninonnormalizzatehannoildifettodiessereespostealfenomenodelleanomalie,cioèdinonpossederecerteproprietàrispettoalledipendenzefunzionali.Inaltreparoleesistonodeglischemidirelazionechenonrisultanoinopportunaforma“normale”.

Lostandard“minimo”prevedechelerelazionisiamo(almeno)interzaformanormale.

Laprimaformanormale(1NF)èquellaincuigliattributisonoditiposemplice.

LoschemadirelazioneRèinsecondaformanormale(2NF)quando:

‐ Rèinprimaformanormale(1NF)‐ perognipossibilechiavecandidatadiRnonesistonoattributinonchiaveche

dipendonoparzialmentedallachiave

LoschemadirelazioneRèinterzaformanormale(3NF)quando:

‐ Rèinsecondaformanormale(2NF)‐ perognipossibilechiavecandidatadiRnonesistonoattributinonchiaveche

dipendonotransitivamentedallachiave,cioèattraversounachiave“intermedia”

L’attivitàchesicompieperarrivareadunoschemainformanormalesichiamanormalizzazionedelloschema.Essapuòesserecondottamanualmenteoconl’aiutodiprocedureautomatiche.

4.FONDAMENTIDISQL

Ilgrandesuccessodelmodellorelazionalesidevesoprattuttoallapossibilitàdiesprimereleinterrogazioniinmodonon‐procedurale.UnodeiprimidiquestilinguaggièstatocertamenteSQL(StructuredQueryLanguage).

SQLnonèsolounlinguaggiodiinterrogazione,maunveroepropriolinguaggioperbasididati:sipuòdefinireloschema,delleviste(qualcosadisimileaisottoschemi),alterarelabasedidati,definireleautorizzazioni,ecc..

4.1UNO,CENTO,(DIECIMILA?)SQL

Inrealtànonesiste“unSQL”perchéogniproduttorediDBMSproponeunpropriodialettoSQL.QuestosaràpiùomenorispettosodeglistandardANSIchevengonoperiodicamenteaggiornatisottolaspintadicontinuenuoveesigenze.

MoltidialetticommercialidiSQLsidiscostanosempredipiùdainuovistandardchevengonoproposti,accettandolisoloinparteeaggiungendodellepropriefunzionalità.LaparteincomunedituttiidialettiSQLcoincideingranparteconSQL/89.

4.2SQLDIRETTO:UNABREVEINTRODUZIONE

Sonostateprevistediversemodalitàd’uso(o“bindingstyles”)siSQL.LemodalitàpiùflessibiliprevedonocheSQLvengausato(“incorporato”)all’internodialtrilinguaggidiprogrammazionediusogenerale.

TuttaviaquellapiùnotaèchiamataSQLdiretto(directSQL)eprevedechel’utenteforniscainterattivamenteun’istruzioneSQLallavoltaaduninterpretechelaesegueerispondeconopportunevisualizzazioniomessaggi.

AgrandilineeleistruzioniSQLsipossonodividerenelleseguenticategorie:

‐ istruzioniperladefinizioneolamodificadelloschemarelazionale‐ istruzionidiinterrogazionedellabasedidati(querylanguage“stretto”)‐ comandiperlamodificadellabasedidati‐ altricomandi(sicurezza,concorrenza,ecc.)

InSQLleistruzionipossonoserviresiaadichiararequalcosa(DDL)siaainterrogareomodificarelabasedati(DML).

OccorreinnanzituttoprecisarechenellaterminologiaSQLlerelazionisichiamanotabelle,letuplesichiamanorigheegliattributisichiamanocolonne.

Sidistinguetratabelledibase(lenormalirelazioni,memorizzaterigaperrigasudiscooaltro)eviste(viewedtables)chesonodelletabellevirtualiincuigliattributisonoottenutisullabasediattributiditabelledibaseodialtreviste.

4.3LADICHIARAZIONEDISCHEMIEDIVINCOLIDIINTEGRITÀ

Comandidicreazione

create table peraggiungereunoschemadirelazione,convincolidiintegritàsuchiaviprimarie,chiavicandidateechiaviesterne,nonchéaltrivincoliparticolariall’internodellatabella

create assertion perdefinireunvincolodiintegritàchecoinvolgepiùtabellecreate view perdefinireunavistacreate domain perdefinireundominio(comesottoinsiemediuntipoesistente)

Comandidimodifica/cancellazionedelloschema

alter table peraggiungere/toglierecolonnedaunatabellabasedrop table percancellareunatabellabaseeilsuoschemadrop view percancellareunavistadrop domain percancellareundominio

4.3.1ITIPIDISQLELEESPRESSIONI

Stringhedicaratteri

CHARACTER equivalenteaCHAR(1)CHARACTER(n) stringhedicaratterelungheesattamentenVARCHAR(n) stringhedicaratteridilunghezzavariabiletra1edn

Stringhedibit

BIT(n) stringhedibitlungheesattamentenBIT VARYING(n) stringhedibitdilunghezzavariabiletra1edn

Tipinumericiesatti

INTEGER intero(laprecisioneè“implementationdefined”)SMALLINT interopiccolo(laprecisioneè“implementationdefined”)NUMERIC(p,q) numerodipcifredecimalidicuiqdopoilpuntoNUMERIC(p) equivalenteaNUMERIC(p,0)DECIMAL(p,q) numerodialmenopcifredecimalidicuiqdopoilpuntoDECIMAL(p) equivalenteaDECIMAL(p,0)

Tipinumericiapprossimati

FLOAT(p) invirgolamobileconlaprecisionedialmenopcifrebinarieFLOAT equivalenteaFLOAT(p1)conp1“implementationdefined”REAL equivalenteaFLOAT(p2)conp2“implementationdefined”DUBLE PRECISION equivalenteaFLOAT(p3)conp3“implementationdefined”

Dateeore(consemplificazioni)

DATE dataTIME oraTIMESTAMP data+ora

4.3.2CONDIZIONIEILVALORENULL

Leespressionibooleanesononaturalmentepermesse.Tuttavia,acausadell’assenzadeltipoBOOLEAN,vengonoclassificatenelgergoSQLcome“condizioni”o,piùprecisamente,espressionicondizionali.

‐ confrontomedianteunoperatorerelazionale: operando1 oprel1 opreando2 doveoprelèunodeiseiclassicioperatoridiconfronto:<,>,=,<>,<=,>=ounodeglioperatorispecialicomelikeealtri

‐ predicatodiappartenenzaadunintervallo: operando between operando1 and operando2 deltuttoequivalentea: operando >= operando1 and operando <= operando2

‐ predicatodiappartenenza(ononappartenenza)aduninsieme: operando [not] in ((elenco_valori|query_colonna)) dove query_colonna èunatabellaottenutacomerisultatodiuninterrogazionecherestituisceun’unicacolonna

‐ predicatoditabellavuota(ononvuota): [not] exists (tabella) dovetabellaèsolitamenteilrisultatodiunainterrogazioneconcomandoselect

‐ sipuòinoltreutilizzareilpredicato: espressione is [not] null cheèsoddisfatto(ononsoddisfatto)quando espressione vale null (“valorenullo”)

LecondizionipossonoessereutilizzateinSQL/92perdisporredelleespressionicondizionali.Lasintassigeneraleèlaseguente:

case { when condizione then espressione } else espressione end

Siosservichesisfruttal’ipotesichelecondizionivenganotestateesattamentenell’ordineincuisonoelencatefinoatrovarequellasoddisfattaofinoaraggiungereelse.

4.3.3LACREAZIONEDIDOMINI

Esistelapossibilitàdiassegnareunnomeadundominioconilcomando:

create domain nome_dominio [as] tipo [check (condizione)]

.incuisiassumecheivaloridel nome_dominio sianotuttivaloridel tipo specificatochesoddisfanola condizione.Nellacondizionesiusalaparolariservata value perriferirsialgenericovalorescalareinquestione.

4.3.4ILCOMANDOCREATETABLE

Ilcomandodicreazionetabellapermettedicreareunatabellabasevuotaconunoschemadirelazioneealcunitipidivincolidiintegrità.

create table tabella-base( colonna (tipo|dominio) [not null] {,colonna (tipo|dominio) [not null]} {,vincolo} )

Unvincolopuòessereunodeiseguenti:

primary key (lista-colonne) perdichiararelachiaveprimariaunique (lista-colonne) perdichiarareunachiavecandidataforeign key (lista-colonne) references tabella-base

perdichiarareunachiaveesterna

check (condizione) perdichiarareunvincolointernoallatabella

4.3.5LADEFINIZIONEDIVINCOLIPARTICOLATI(ASSERZIONI)

Quandosivoglionospecificaredeivincolidiintegritàparticolaridicomplessitàarbitrariachecoinvolgonolerighedipiùtabelleochenonpossonoessereespressimedianteglistrumentigiàdescritti,sipuòricorrerealcomando:

create assertion nome-vincolo check (condizione)

Lacondizionerichiedel’usodiuncomando select piùomenocomplessosulletabellecoinvolte.Il nome-vincolo servesiacomemessaggiodiriferimentoincasodiviolazionesiaperpoterlorimuoveresuccessivamente.

4.3.6COMANDIDIMODIFICAEDICANCELLAZIONEDELLOSCHEMA

Unavoltacreatounoschemadirelazioneèpossibilemodificarlosuccessivamenteanchecondatigiàcaricatinellabasedidatimedianteilcomandoalter table.

‐ aggiungereunacolonna: alter table tabella-base add nome-colonna (tipo|dominio)

‐ rimuovereunacolonna: alter table tabella-base drop nome-colonna

‐ cancellaretuttalatabella: drop table tabella-base

‐ rimuovereun’asserzione: drop assertion nome-vincolo

4.3.7LACREAZIONEDIVISTE

UnavistainSQLèunatabelladefinitainfunzioneditabelledibaseodialtreviste.Idatinonsonoquindieffettivamentememorizzati,mapiuttostoottenutidalletabellebasemedianteunprocessodi“mapping”.

Ingenerelasintassiè:

create view tabella-vista as query

dove query èun’interrogazionefattaconselect.

Percancellareunavistapossiamoricorrerealcomando:

drop view tabella-vista

4.4INTERROGAZIONIINSQL:L’ISTRUZIONESELECT

4.4.1LAFORMABASEESUAINTERPRETAZIONENELL’ALGEBRARELAZIONALE

Leinterrogazionipiùfrequentiassumonolaseguenteformabase:

select [distinct] espr1,espr2,esp3 from tab1,tab2,...,tabn [where condizione]

Note:

‐ senonsispecificalaparola distinct,larelazionerichiestapotràconteneredellerigheduplicate

‐ selaclausola where nonèpresentenonvienefattaalcunarestrizione‐ nellaclausola select èpossibileusareilsimbolo*perspecificare“tuttigli

attributi”,cioèpereliminarel’operazionediproiezione.Èanchepossibilespecificarel’insiemedituttigliattributidiunatabella tab conlanotazione tab.*

‐ icasidiomonimiadiattributipossonoessererisolticonlanotazionepuntata(qualificazionedegliattributi): nome_relaz.nome_attributo

4.4.2ESEMPIELEMENTARI(SUUNASOLATABELLA)

4.4.3PARAMETRIZZAZIONEDELLEINTERROGAZIONI

InalcunidialettidiSQLèpossibileparametrizzareun’interrogazionefacendoprecederelastessadalcomando parameters (altridialettiprevedonoaquestoscopolostrumentodelleprocedure).

parameters par1,par2 select espr1,espr2,esp3 from tab1,tab2,...,tabn where espr1 > par1 and espr2 < par2

4.4.4PATTERNMATCHINGSUSTRINGHE:L’OPERATORELIKE

Unapossibilitàmoltoutileèquelladelconfrontotrastringheper“patternmatching”.

espressione like pattern

cheèsoddisfattose espressione èunastringachesiconformaal pattern (omodello)specificato.

Inunpatternsispecificanodeicaratteri“jolly”chehannoloscopodirappresentareparticolaricategoriedisottostringhe.

% (indicaunaqualsiasistringa) _ (indicaunqualsiasicarattere)

4.4.5INTERROGAZIONISUPIÙTABELLE(MEDIANTEGIUNZIONI)

Sipuòfarusodipiùtabellesfruttandoleassociazionifradiesseimplicitamenterappresentateconlatecnicadellechiaviesterne.

select tab1.attrib1,tab2.attrib2,tab2.attrib3 from tab1,tab2,...,tabn where tab1.attrib1 = tab2.attrib1

4.4.6OPZIONIDIORDINAMENTO

SQLmetteadisposizioneunacomodaclausolaaggiuntivacheassumelaseguentesintassi:

order by attrib1[asc|desc], attrib2[asc|desc], attribn[asc|desc]

4.4.7FUNZIONIDIAGGREGAZIONE

Visonocontestipraticiincuil’informazionerichiestaèditiposintetico(conteggi,minimo,massimo,media,ecc.).AtalescopoSQLmetteadisposizionedellefunzionidiaggregazionechesiapplicanoadunacolonnadiunatabella.

Lasintassiprevistaè:

OpAggreg ([distinct]Attrib)

dove OpAggreg puòessere:

‐ count:numerodeglielementi‐ min:valoreminimo‐ max:valoremassimo‐ sum:somma‐ avg:mediaaritmetica

Lafunzione count conteggiaancheeventualicampiconvalore null.Questinonvengonoinvecepresiinconsiderazionedatullelealtre.

4.4.8IRAGGRUPPAMENTI:LACLAUSOLAGROUPBY

Lefunzionidiaggregazionetrovanoapplicazionesoprattuttoincombinazioneconl’usodellaclausoladiraggruppamentochesipuòinserire(dopolaclausola where,sepresente):

group by attrib1,attrib2,…,attribn [having condizione-gruppo]

Intalcasolerighechesiottengonodopoilprodottodelletabellespecificatenellaclausola from elarestrizioneimpostadall’eventualeclausola where,vengono“raggruppate”(partizionate)secondoilseguentecriterio:

duerighestannonellostessogrupposeesolesehannoglistessivaloridegliattributi: attrib1,attrib2,…,attribn

L’eventualeclausola having haloscopodiescludereigruppichenonsoddisfanounacerta condizione-gruppo.

Datocheconlaclausola group by ilrisultatoèuninsiemedigruppidirighe,nonsipuòspecificarenellaclausola select unaqualsiasilistadiattributidaproiettare,masolo:

‐ attributichecompaiononellalista group by‐ chiamateallefunzionidiaggregazionesuglialtriattributi‐ count(*) cioèilnumerodirighechevisononelgruppo

Questivincolidevonoessererispettatianchedallaclausola having.

4.4.9ANNIDAMENTIDISELECT(SOTTO­INTERROGAZIONI)

Esistelapossibilitàdiannidarefralorole select,cioèdiintrodurredellesotto‐interrogazioni(subqueries).

Essepossonoinfatticomparire,concertivincoli:

‐ comeattributinellaclausola select‐ comeoperandoinun’operazionescalare(es.aritmetica,diconfronto)

‐ comeargomentichedefinisconouninsieme,nelleclausole where e having,doveuninsiemeèrappresentatodaivaloridiunacolonna

‐ comeargomentodelpredicato exists

4.4.10RIDENOMINAZIONEDITABELLE,USODIVARIABILIESELF­JOIN

Sipuòsfruttarelapossibilitàdicambiarenome(ridenominare)unatabellanellaclausola from comeadunmodoperintrodurrevariabililogicheditipotupla.

select X.attrib1, Y.attrib1 from tab1 as X, tab1 as Y where X.attrib1 = Y.attrib1

Inquestocasovienefattaunagiunzionefra tab1 esestessa(self‐join)rispettoa attrib1.

4.4.11L’USODIOUTERJOIN(GIUNZIONIESTERNE)

Traivaritipidigiunzioneprevisti(giunzionenaturale,equijoin,oaltritipidigiunzioneinterna)visonolegiunzioniesterne.

select espr1, espr2 from tab1 (left|right|full) outer join tab2 on cond

L’effettodiuna left outer join (giunzioneinternasinistra)traduerelazioniAeB(l’ordineèimportante)diSQLsuunacertacondizione cond èl’unionedidueinsiemidirighe:

‐ lerighecherisultanodallagiunzioneinternatraAeBsullacondizione cond‐ lerighediAesclusedallagiunzione,esteseconvalorinulliperognicampodiB

4.5COMANDIPERLAMODIFICADELLABASEDIDATI

OgniSQLprevedeuncomandoperciascunodeitretipidimodificachesipossonoeffettuareadunatabelladiunabasedidatirelazionale:inserimentodirighe,aggiornamentodiattributidirighe,cancellazionedirighe.

Perl’inserimentovienemessoadisposizioneilcomando:

insert into tabella [(elenco-colonne)] sorgente

doveelenco‐colonne,sepresente,siriferisceacolonnedellatabellaspecificata.Semanca,siintendechesiassumel’elencodituttelecolonnedellatabellanell’ordineincuisonostatedichiarate.

Nelcasopiùsemplicelasorgenteassumelaforma:

values (elenco-espressioni)

chehal’effettodiinserireunasingolariga.L’elenco-espressioni (scalari)deveaverelastessalunghezzadell’elenco-colonne eiltipodiogniespressionedeveessere

compatibileconiltipodiappartenenzadellacorrispondentecolonna.Eventualicampiassentivengonoinizializzaticon null,oconivalorididefault.

Alsolito,l’inserimentopuòfalliresesitentadiviolareunodeivincolidiintegritàimpostisullatabella.

L’aggiornamentodelletabellepuòavvenireconuncomandochiamato“searchedupdate”:

update tabella set colonna = espressione-scalare {, colonna = espressione-scalare} [where condizione]

Lasemanticaèlaseguente:inognirigadella tabella chesoddisfala condizione specificata(eintuttelerighesela condizione vieneomessa)sostituisciognicampo colonna specificatoconlacorrispondente espressione-scalare postaadestradelsimbolo=.

Nelleespressionisipuòfareriferimentoaivaloridegliattributidellarigacorrente.

Lacancellazionedirighedaunatabellaavvieneconuncomandochiamato“searcheddelete”:

delete tabella [where condizione]

Siintendechevengonocancellatetuttelerighedella tabella chesoddisfanola condizione specificata(etuttelerighesequestaèomessa).

Tutteleoperazionidimodificasullabasedidatipossonoportareallaviolazionedivincolidiintegritàequindiessererespinte.

SullabasediquestaconsiderazionealcunidialettiSQLprevedonolapossibilitàdidefiniredeitrigger,cioèprocedurechevengonoautomaticamenteattivatedopoun’operazionedimodificaperintraprenderedelleazionichehannoloscopodimantenereconsistentelabasedidati.

4.6PROCEDUREPERMANENTIETRIGGER

SQLèstatoconcepitoconl’ideadipoteressereutilizzatoinalmenoduemodi:direttoo“embedded”cioèincorporatoinlinguaggidiprogrammazione.Questosièresonecessarioperduemotivi:

‐ alcuneinterrogazioninonpossonoesseresvolteinSQLdiretto‐ esistelanecessitàdiinterfacciarel’ambientechegestiscelabasedidaticonaltri

ambienti

Loschemadiunabasedidatinonèquindicostituitosolodaschemirelazionalievincolidiintegritàparticolari,maanchedaprocedureefunzioniraccolteinmodulidiprogrammazionechefannoparteintegrantedelloschemadellabasedidati.

IsottoprogrammicontenutineimodulidiunoschemaSQLsichiamanoprocedurepermanenti.

Perlalorodefinizionediusalasintassi:

create procedure nome-procedura ((in|out) :par1 tipo-parametro, (in|out) :par2 tipo-parametro, (in|out) :parn tipo-parametro); declare variable nome-variabile1 tipo-variabile; declare variable nome-variabile2 tipo-variabile; begin istruzioni-SQL end

Perservirsidellaprocedura:

call nome-procedura (par1,par2,…,parn)

Assiemealleprocedurepermanenti,moltidialettiSQLpermettonolapossibilitàdiassociaredeitriggeradunatabella.Lasintassipercrearlièlaseguente:

create trigger nome-trigger for nome-tabella (before|after)(insert|update|delete) begin istruzioni-SQL end

Untriggerverràinvocatoprima(before)odopo(after)ognioperazionedimodificadeltipospecificatosullatabella nome-tabella.

Il nome-trigger servesoloperpoterlorimuovereomodificaresuccessivamente.

Ingenereèbeneattenersiallaregoladifareseguireaitriggerdellecosemoltobrevipernonrallentaretroppol’operazionedimodifica.

Inoltre,nelcorpoèpossibilefareriferimentoaivaloridiuncampo c precedenteesuccessivoallamodificacondellenotazionideltipo:

old.c e new.c

4.7LAPROGRAMMAZIONECONICURSORI

Tuttiicomandiprecedentementevistisonoditipo“setoriented”,cioèleoperazioni,siarispettoaidaticheairisultatisiriferisconoainsiemidirighe.

Innessunadiesseperònonesistonoiconcettidi“rigacorrente”edi“cursore”usatoneilinguaggidimanipolazione“recordoriented”.

Pervenireincontroall’esigenzadiprendereinconsiderazionequestapossibilità,SQLhamessoadisposizioneparticolaricomandiriservati,cioèchenonpossonoessereinvocatiquandosièinmodalitàdiretta.

Talicomandifannoriferimentoalconcettodicursoreesiripromettonodifarvedereletabellecomedeicontenitoriattraversabilimediantecursori.

UncursoreinSQLèrappresentatodaunpuntatore(oindice)adunarigadiunatabella,chiamatarigacorrente.SidiceanchecheuncursoreèposizionatosullarigaRsepuntaallarigaR.

L’ordinedellerighedeveritenersicasualeamenochelatabellanonsiailrisultatodiuna select conlaclausola order by.

LepossibilioperazionichefannoriferimentoaicursoriSQLsonoiseguenti:

declare cursor dichiarauncursoreperunatabellaopen apreuncursorefetch avanzailcursoreecaricaicampicorrentiinvariabiliupdate posizionata aggiornaicampidellarigacorrentedelete posizionata cancellalarigacorrenteclose chiudeilcursore

Uncursoredeveprimaesseredichiarato:

declare nome-cursore cursor for tabella

conilseguentesignificato: nome-cursore èuncursoreabilitatoallavisitadella tabella specificata.Sipossonoaprirediversicursorisuunastessatabella.

Occorrequindi“aprirlo”con:

open nome-cursore

Aquestopuntoilcursoresitrova“prima”dellaprimariga.Perposizionarlosullaprimarigaocomunquesullarigasuccessivaaquellacorrente,siusailcomando:

fetch nome-cursore into :var1, :var2, …, :varn

cheanchel’effettodiassegnareallevariabilispecificateicalorideicampidellarigacorrente.SQLinponechelevariabilidiinterfacciamentoconillinguaggioospitesianoprecedutedaiduepunti:

:identificatore

echesianodichiarateinunaappositasezione.

Èpossibileaggiornareunoopiùcampidellarigacorrentemedianteilcomandodiaggiornamentoposizionato(“positionedupdate”),unavariantedelcomando update:

update tabella set colonna = espressione-scalare {, colonna = espressione-scalare} current of nome-cursore

Analogamenteèpossibilecancellarelarigacorrentecon:

delete from tabella curren of nome-cursore

Infineilcursoredeveessere“chiuso”con:

Lavisualizzazionepotrebbeesserefattaattraversounachiamataesterna,cioèscrittainunlinguaggiodiprogrammazionediversodaSQL.

InSQL/92siprevedelapossibilitàdimuovereliberamenteilcursoredichiarando scroll cursor (invecedi cursor).

Ilcomando fetch puòalloraassumerelaseguente:

fetch nome-selezione from cursore into elenco-variabili

dove modo-selezione puòessereunadelleseguenti:

next muoveilcursoresullarigasuccessivaaquellacorrenteprior muoveilcursoresullarigaprecedenteaquellacorrentefirst muoveilcursoresullaprimarigalast muoveilcursoresull’ultimarigaabsolute n muoveilcursoresull’n‐esimarigarelative n muoveilcursore n righedopoquellacorrente(oprimase n <0)

Siosserviinfineche,sesiapportanodellemodificheallatabella,glieffettisuicursoriapertipossonoesserepocochiarioindesiderati.Inognicasoèbeneattenersi,perquantopossibile,allaregoladinonmodificareunatabellaquandolasistaattraversandoconunoopiùcursori.

5.MIGLIORAREL’EFFICIENZA:GLIINDICI

5.1METODIDIACCESSOEOTTIMIZZAZIONE

OgniDBMSeffettuapreliminarmenteunprocessodiottimizzazioneeditraduzioneinuncodicedipiùbassolivello,dettopianod’accesso.Inultimaistanza,l’interrogazionevieneinfattitradottainunaseriediaccessiafilerelativitramiteprimitivedelSistemaOperativo.

L’ottimizzatoresibasasulleseguentiinformazioni:

‐ formadell’interrogazione‐ statistichesulletabellecoinvoltenell’interrogazione‐ metodid’accessopermessiaciascunatabellacoinvoltanell’interrogazione

L’AmministratoredellaBasediDatipuòinterveniresuimetodid’accessoperrendereaccettabiliitempidicerteinterrogazioni.

5.1.1PRINCIPALIMETODID’ACCESSO

Inlineadimassimaimetodid’accessoprevistidaiDBMSrientranoinunadiquestetrecategorie:

‐ accessosequenziale,sibasasullapossibilitàdiscandiresequenzialmentelerighedellatabella

‐ accessoconindice,sibasasull’ideadiusareunastrutturaausiliariachefacciadaindice‐ accessohash,sibasasull’ideadiricavarelaposizionedellarigacontenentelachiaveK

daricercareattraversouncalcolosuibitchelacompongono

Imetodid’accessovengonoconfrontatirispettoalcasomedioealcasopessimoperiseguentitipidiinterrogazioni:

‐ ricercaindividuale,cioèdiunparticolarevaloredellachiavediricerca‐ ricercaperintervallo,cioèdivaloridellachiavecompresitraduelimiti‐ elencoordinato,cioèsidesideraprodurreunelencodirighediunatabellaordinate

secondol’ordinediunacertachiavediricerca

5.1.2OTTIMIZZAZIONEDELLEINTERROGAZIONI

L’operazionefondamentaleepiùcritica,dalpuntodivistadell’efficienza,èquelladigiunzione.

Gliottimizzatoricercanodi:

‐ anticipareprimapossibileleoperazionidiselezione‐ eliminareprimapossibilelecolonnenonnecessarie‐ sostituire,sepossibile,unagiunzioneconunasemi‐giunzione

5.2INDICIELORORUOLI

5.2.1APPROFONDIMENTODELCONCETTODIINDICE

Unindiceèunoggettochefaparteintegrantedellabasedidatiechevieneassociatoadunadellesuetabellerispettoadunoopiùattributidellatabellastessachecostituisconounacosiddettachiavediricerca.

Segliattributisonoquellidellachiaveprimariasiparladiindiceprimario,altrimentidiindicesecondariooalternativo.Gliindicisecondarisipossonodividereinindiciperchiavicandidateoperchiavisecondarie.

Adunatabellapossonoessereassociatipiùindici,sudiversechiavidiricerca.

Siintendecheogniindicevieneautomaticamenteaggiornatoquandosieffettuaun’operazionedimodificadellatabellaindicizzata.

5.2.2LADEFINIZIONEDEGLIINDICIINALCUNIDIALETTISQL

MoltidialettiSQLprevedonolapossibilitàdiassociareunindiceadunatabellaconuncomandodellaforma:

create [unique] indexnome-indice onnome-tabella(lista-attributi)

Sevienespecificatalaparolauniquesivuolechel’indicenonammettaduplicati,cioèsivuolechelalista‐attributisiaunachiavecandidata.Intalcasoseuncomandoupdateoinsertprovocadelleduplicazionidichiavivienerespintoelatransazionefallisce.

Perrimuovereunindiceesistentepossiamoservircidelcomando:

drop indexnome-indice

L’indicevienequindi“smontato”evieneingenererecuperatotuttolospaziodaessooccupato.

5.2.3RUOLIASSOLTIDAUNINDICE

L’indicediunatabellainunsistemarelazionaleassolvealmenotreruoli:

‐ rendepiùefficientileinterrogazioni‐ assicurailvincolodiunicitàdellachiaveprimaria‐ evita(ofacilita)l’ordinamentodellatabellaedeirisultatidelleinterrogazioni

L’ordinamentovienesfruttato,inparticolareperrendereefficientileinterrogazionicherichiedonodieffettuaredellericercheperintervallo.

5.2.4PERQUALICHIAVIDIRICERCAÈUTILECREAREUNINDICE?

Occorretenerepresentechegliindicioccupanounospazioproporzionalealnumerodellerigheecheognioperazionedimodificadellatabellavienerallentataperchérichiedelamodificadegliindiciassociatiallatabella.

Perlasceltadegliindicidacrearesuunatabella,cisipuòfarguidaredaiseguentiprincipi:

‐ creareunindiceperlachiaveprimariadiognirelazione‐ creareunindiceperognichiaveesternadiognirelazionecherappresenta

un’associazionemolti‐a‐moltiiun’associazionenon‐binaria(questoagevolalegiunzioni)

‐ creareunindiceperognialtrachiavediricercadiusofrequente

C5.2L’ORGANIZZAZIONESEQUENZIALECONINDICECLASSICA

PrimadelsuccessodegliindiciaB+‐alberosisonospessousatedellestruttureadindicepiùsemplici,indicatespessocomeorganizzazionisequenzialiconindice.

Esisteunfileprimarioorganizzatoapagineciascunadellequalicontieneuncertonumerodiregistrazionisolitamenteordinaterispettoallachiave.Lachiavepiùaltadiciascunadellapaginedelfileprimarioèriportatainunfileindice(anch’essoorganizzatoapagine)icuirecordsonodeltipo:

(Ku,p)

dovepèilnumerodipaginadelfileprimariochehaKucomechiavepiùalta.

LaproceduradiricercadiunachiaveKassumegeneralmenteilseguenteaspetto:

<< cerca nell’indice la prima chiave Ku > K >> << accedi alla pagina che è associata a Ku >> << cerca K nella pagina p >>

Leoperazionidicreazioneiniziale(ocaricamento),diricercaeaggiornamentodeirecord(incampinonchiave)nonpongonoalcunproblema.Ledueoperazionichecreanoqualcheproblemasonoinvecel’inserimentoelacancellazioneperchépossonorichiedereunariorganizzazionedeiduefile.

Perevitareoritardarequesteriorganizzazionisiadottanodiversestrategie,piùomenoefficienti.Unadiquesteprevededistrutturareirecorddell’indicecomesegue:

(Ku,p,Kow,Pow)

doveiduenuovielementiKowePowrappresentanorispettivamentelachiavepiùaltadellalistadioverflow(olistadeitrabocchi)eilpuntatored’accessoallalistadioverflow.Nelleoperazionidiinserimento,ricercaecc.diunachiaveKlalistadioverflowvieneconsultatasoloselapaginapèpienaeselachiaveKècompresatraKueKow.

Ciascunapaginadioverflowvienegestitaconopportunetecnichediallocazioneerecupero.

Lacancellazionepuòesseretroppodispendiosaqualorasidecidadioptareperilcompattamentodeirecord,l’aggiornamentodellalistadioverflowedell’indice.Ilpiùdellevolteèpreferibilemarcarecome“cancellato”ilrecordsenzaprovvedereanessun’altramodifica(cancellazionelogica).Ilmomentodelrecuperovienequindirinviatoall’eventualeriorganizzazionedelfileprimario.

Osserviamoinfineche,sel’indiceèmoltolungo,itempidiricercapotrebberoessereintollerabili.Perovviareaquestoinconvenientesiusanodiversetecniche.Fralepiùcomunièquelladiorganizzarelostessoindicecomefilesequenzialeconindice,dandoluogoall’organizzazionesequenzialeconduelivellidiindice.Inquestocasosiaccedeinizialmenteall’indicediprimolivellopertrovarelapaginadell’indicedelsecondolivellocontenentelaprimachiavepiùaltradiquelladaricercare.

6.TRANSAZIONI,CONCORRENZA,RIPRISTINOESICUREZZA

Visonoalcuniaspettidiimportanzafondamentalechemeritanounapprofondimento:

‐ isistemihardware/softwaresonoespostiamalfunzionamentidivariogenere‐ esistelanecessitàdiconsentireunusoconcorrentedeidati

Lapostaingiocoèl’integritàdeidati:senzaleopportunecontromisuresicorreilrischiodiaveredaticorrotti,inconsistentiononcorrettirispettoallarealtàchevienemodellata.

Tuttelecontromisuresibasanosulconcettoditransazione.

6.1LETRANSAZIONI

Unatransazionevienedefinitacomeunasequenzadiazionisullabasedidatichevieneeseguitadeltuttoononvieneeseguitaperniente.

6.1.1STATIDIAVANZAMENTODIUNATRANSAZIONE

Incoincidenzaconilverificarsidideterminatieventiunatransazionepuòassumereneltempodiversistatidiavanzamento.

Dopoesserestataattivatapuòarrivareall’ultimaazioneprevistaeintalcasosidicecheèparzialmentecommitted.Seinveceviverificaprimaqualcheerroreoimprevistolatransazionevieneconsideratafallita.

Quandolatransazioneèparzialmentecommittednonèdettochediventinecessariamentecommittedperchépotrebberointerveniredegliimprevistidurantelafasediscritturadefinitivasudisco.

Siprendonoquindiinconsiderazioneduetechiche:

‐ scritturaimmediatasullabasedidaticonpossibilitàdiannullareglieffettidellescritturesullabasedidati

‐ scritturadifferitasullabasedidatinellaqualelescrittureavvengonosuun’areatemporaneaesoloallafineriportaresullabasedidati

Quandosiverificaunfallimentovengonointrapreseazionidirollingbackcheannullanoglieffettiparziali;sidiceallorachelatransazioneèabortita

Sipossonosuddividerelecausechepossonoprovocareilfallimentonelleseguenticategorie:

‐ errorilogici:erroridaattribuirsiaderroridiprogrammazione‐ fallimentivoluti:nonesistonolecondizioniperportareavantilatransazione‐ forzaturedisistema:siimponeilfallimentopersbloccareunasituazionecritica‐ crashdelsistemaeguastihardware

6.1.2ILGIORNALEDELLEMODIFICHE(DATABASELOGFILE)

Primadidichiarareilcompletosuccessodiunatransazioneoccorreregistrareunaseriediinformazionisulcosiddettogiornaledellemodifiche.

Possiamopensarealgiornaledellemodifichecomeadunfilechecontieneregistrazionidieventi(es.<attivatatransazionen>,<modificatobloccodati…>)

Lagestionedelgiornaleèimportanteperlaconsistenzadellabasedidatieperridurrealminimolaperditadiinformazioni.

6.1.3LEPROPRIETÀACID

UnatransazionepuòesserepiùprecisamentedefinitacomeunasequenzadiazionisullabasedidatichegodedelleproprietàACID:

‐ Atomicità:ognitransazionedeveapparirecomeun’azioneindivisibile‐ Consistenza:ognitransazionefapassarelabasedidatidaunostatoconsistenteadun

altrostatoconsistente.Labasedidatiincertimomentipuòassumerestatiinconsistenti,maallafinediognitransazionedeveesseresempreraggiuntounostatoconsistente

‐ Isolamenti:letransazioniconcorrentidevonoapparireisolate,noncideveesserealcunainterferenza

‐ Dorevolezza(opersistenza):glieffettidiunatransazionecommittedrimangonopersistentianchesesuccessivamenteintervengonosituazionid’errore.Esistecioèilmododiripristinareisuoieffettisullabasedidati

6.2ILCONTROLLODELLACONCORRENZA

Laproprietàdiisolamentomeritaunapprofondimentochemettainluceciòchesiintendeper“assenzadiinterferenze”,ossiadescrivailproblemanotocomecontrollodellaconcorrenza.

Laproprietàdiisolamentoèverificatasetutteletransazionivengonoeseguiteinmodoseriale.

Ilvincolodellaserialitàèinpraticaimproponibileperchéallungaitempidirispostaenonsfruttaadeguatamentelerisorsedisponibili.

Sarànecessariopermetterecheletransazionipossanoprocedereconcorrentemente(inparallelo):duetransazionisidiconoconcorrenti(oparallele)seunahainizioprimadellaterminazionedell’altra.

L’esecuzioneconcorrentepermettecheleazionipossanointercalarsineltempo:leintercalaturesononotecomeschedulazioni,ilcuinomederivadauncomponentedelDBMSchiamatoordinatoreoschedulatorechericeveeordinaleazionidelletransazioni.

Laproprietàdiisolamentoconsisteinpraticanelrichiederechevenganoesclusequelleschedulazionichepossonodarluogoaiseguentifenomeni:

‐ Aggiornamentoperduto:perditadeglieffettidiun’azionediscritturaacausadiun’interferenzafratransazioni

‐ Letturasporca:letturadiundatoquandoèancorainunostatoinconsistente,cioèprimacheunatransazionediventicommitted

‐ Letturanon‐ripetibile:rileggendoundatosiottieneunvalorediversoancheselastessatransazionenonhaeffettuatoalcunamodifica

‐ Scritturaoletturadidatidarigheinesistenti‐ Fenomenodeifantasmi:apparizione“improvvisa”dirigheinseritedaun’altra

transazioneconcorrente,conilrischiodiprodurrerisultatiinconsistenti

6.3SERIALIZZABILITÀESUAIMPLEMENTAZIONE

6.3.1SCHEDULAZIONISERIALIZZABILI

Lepossibilischedulazionididueopiùtransazionipossonoessereclassificateintrecategorie:

‐ schedulazioniseriali‐ schedulazioninonserialimaserializzabili‐ schedulazioninon‐serializzabili

Unaschedulazioneserializzabileproduceglistessieffettidiunaschedulazioneseriale.

6.3.2PROTOCOLLODIBLOCCAGGIOADUEFASI

Unadelletecnicheperassicurarelaserializzabilitàèquelladifareusodeicomandidibloccaggiocheprovocanodelleattesealfinediordinareglieventi.

Lock-X (A): richiedeunaccessoesclusivoalgruppodidatiA

Unlock (A): rendeliberoilgruppodidatiA

Ilsignificatoesattodell’espressione“gruppodidati”dipendedallagranularitàsceltaperl’azionedibloccaggio.Inunsistemarelazionalesipossonodistinguerevariegranularità:

‐ tuttalabasedidati‐ unarelazione‐ unatupla

‐ uncampodiunatupla

Sicercadifarriferimentoallagranularitàpiùfineperchéèquellacheponemenolimiti.

Inpraticasifausodiunatecnicanotacomeprotocollodibloccaggioaduefasi:

‐ fasedicrescita:acquisizionegradualedeipermessi‐ fasedirilascio:rilasciodituttiipermessi

Questoprotocolloèsemplicedaimplementareeforniscegaranziedicorrettezza.

Nelprogrammareletransazionièbeneattenersialleseguentiregole:

‐ rendereletransazionipiùbrevipossibile(perliberareprimaibloccaggi)‐ noneffettuarescrittureosservabilidall’esterno

Inmoltesituazionipratichesiavvertelanecessitàdiviolarequesteregole,inparticolarequandosivuolechelatransazionecomprendaunainterazioneuomo‐macchina.

6.3.3BLOCCAGGIINSOLALETTURA

Perridurreleattesedegliutenti,moltiDBMSusanoomettonoadisposizionedelleistruzionidibloccaggioinsolalettura.

Lock-S (A): richiedeunaccessocondiviso(nonesclusivo)aldatoAinsolalettura

LapossibilitàchesullostessobloccodatipossanoessereeffettuatiduetipidiLockportaaconsiderarediversesituazionichepossonoessererappresentateattraversounacosiddettamatricedicompatibilitàdeibloccaggi.

detieneS X

S vero falsochiede X falso falso

6.4ILRIPRISTINODEIDATI

OgniDBMSdeveprevederedeimeccanismiingradodiridurrelaperditadiinformazioniedellaloroconsistenza,inseguitoamalfunzionamentihardwareosoftware.Occorrequindigarantirelaproprietàdidurevolezzadelletransazioni.

6.4.1TIPIDIMEMORIEEILPROBLEMADELRIPRISTINO

‐ memoriavolatile:memoriaprincipale,contienepartedellabasedidati,un’areaadisposizionediciascunatransazioneattivaeun’areaperleregistrazionipiùrecentidelgiornaledellemodifiche

‐ memorianon‐volatile:unoopiùdischi,contienelapartedellabasedidatinoncontenutanellamemoriavolatile

‐ memoriastabile:unacombinazionedidischie/onastri,contieneilgiornaledellemodificheeunacopiadibackup

Ilproblemadelripristinodeidatipuòesserepostoinquestitermini:

Datouneventoeccezionalechedistruggelamemoriaeffettuareinecessaritrasferimentifraitretipidimemoriainmododa:

‐ ridurrealminimolaperditadiinformazione‐ instaurareunostatoconsistentedellabasedidati‐ consentireilriavviodelsistema

6.4.2CRASHDELLAPIATTAFORMA

Lasoluzioneal“crash”dellapiattaformasibasasull’ideadieffettuareperiodicamentedeicheckpoint,registrandolisulgiornaledellemodifiche(es.<checkpoint>).

Uncheckpointcomportaleseguentiazioni:

‐ attesadelcompletamentoditutteletransazioniincorsoebloccodellenuove‐ scritturainmemoriastabiledituttelenuoveregistrazionidelgiornaledellemodifiche

contenutenellamemoriavolatile‐ scritturainmemorianon‐volatiledituttelepaginedellabasedidatichesonostate

modificate‐ scritturasulgiornaledellemodifichedelleregistrazione<checkpoint>‐ vialiberaall’attivazionedinuovetransazioni

AlriavvioilDBMSindividual’ultimocheckpointregistratosulgiornaleeaquelpuntoletransazionisipossonodividerein:

‐ Transazioniterminateprimadelcheckpoint:questedovrannoessereignorate‐ Transazioniiniziatedopoilcheckpointeterminateprimadelcrash:questedovranno

essererifatte‐ Transazioniiniziatedopoilcheckpointeinterrottedalcrash:conlastrategiadella

scritturaimmediataglieffettidiquestedovrannoesseredisfatti,ripristinandoivecchivalori,mentreconquelladellascritturadifferitasaràsufficienteignorarle

Laperditadidatidecresceall’aumentaredellafrequenzadeicheckpoint,peròeffettuarecheckpointtroppofrequentementecomportadeirallentamenti.Occorrequinditrovaredeicompromessi.

6.4.3ROTTURADELDISCO

Supponendocheildiscodellamemorianon‐volatileabbiaall’improvvisounguasto,lastrategiadiripristinoconsistenel:

‐ sostituireildiscoinquestione‐ ricaricarel’ultimacopiadibackupprelevandoladallamemoriastabile‐ consultandoilgiornale,rifareletransazioniiniziatedopoilbackupeterminateprima

dellarotturadeldisco

6.5LASICUREZZADEIDATI

OgniDBMSdevegarantirelasicurezzadeidatiattraversounsistemadiautorizzazioni.Questoproblemaèlegatoaquellodell’integritàinquantounutentefraudolentopotrebbeaverecomescopononsoloquellodirubareinformazioni,maanchemanometterleoattentareallaconsistenza.

6.5.1TECNICHEDIPROTEZIONE

Lesoluzioniesistentisibasanosu:

‐ usodisottoschemi(oviste):restringereidatiaquellidiinteresseperun’applicazioneouninsiemediapplicazioni

‐ adozionedipassword:stabiliredirittid’accessoperutentichedovrannoqualificarsiconunnomeeunapassword

‐ crittografiadeidati:codificareidatiinmodochesia“difficile”decodificarli,pergarantirnelariservatezzaeimpedirefurtid’informazione

Perquantoriguardalemodificheaccidentaliconvieneadottareilprincipiodellaautorizzazionipiùrestrittive.

6.5.2FORMEDIINTRUSIONEELOROPREVENZIONE

Gliintrusisfruttanoognidebolezzadelsistemadiprotezioneeleviolazionidifficilmentepossonoessereimpediteinassoluto.

Unintrusoèchiunquetentidiforzareilsistemadiprotezione,puòtrattarsidiunutenteautorizzatoacertiusichetentadisuperareisuoilimiti.

Ilrischiopiùgrossoèquellodelfurtoodellascopertadellepassword.

Escludendoilfurtodipassword,l’intrusotentadi“aggirare”ilsistemadiprotezioneutilizzandounadelleseguentitecniche:

‐ cercandodi“assegnarsi”deiprivilegichenonpossiede‐ accedendodall’“esterno”delDBMS(livellodelsistemaoperativoolivelliinferiori)‐ intercettandoidatidalineedicomunicazione‐ rubandoe/ocopiandosupportifisicidimemorizzazione(es.copiedibackup)

Percontrastareseriamentequestetecnichesiadottanoiseguentiaccorgimenti:

‐ controllandol’accessofisicoaiterminalieaisupportidimemorizzazione‐ adottandosistemioperativi“sicuri”(incuinonsiapossibileviolareleprotezioni)‐ crittografandoimessaggichevengonospediti‐ crittografandolabasedidatieilgiornale

Lacrittografiacomportaqualcheperditadiefficienza,maèuncostochesièdispostiapagarequandolariservatezzaassumeunruoloessenziale.

6.5.3LEAUTORIZZAZIONIINSQL

Ilproprietariodellabasedidatipuòconcederedeiprivilegidiaccessoadeterminatiutentiattraversodegliidentificatoridiautorizzazione.

grant lista-privilegi on nome-tabella to (lista-utenti|pubblic)

Dove:

lista-privilegièunelencodiprivilegi,separatidavirgole,sceltifraiseguenti:

‐ select‐ insert [(nome-colonna)]‐ update [(nome-colonna)]‐ delete‐ references [(nome-colonna)]

lista-utentièunelencodinomidiutenti,separatidavirgole.Specificandopubblicsiintendecheiprivilegivengonoconcessiatutti.

Perrevocareiprivilegiprecedentementeconcessivienemessoadisposizioneilcomando:

revoke lista-privilegi on nome-tabella to (lista-utenti|pubblic)

Sia grant che revoke potrebberoconcludersiconinsuccesso.Unadellecausepotrebbesemplicementeesserechel’utentecheleeseguenonhal’autorizzazioneperfarlo.

ImodernidialettiSQlprendonoinconsiderazioneancheoggetticomedomini,procedurepermanenti,trigger,ecc.

Aifinidiunamaggioreprotezione,puòesserepiùopportunoconcedereacertiutentisoloilprivilegiodichiamareunaproceduracheeseguemodifichesuunatabella,piuttostocheconcedereiprivilegi update e/o insert,moltopiùpericolosiperl’integritàdellabasedidati.

C6.1STALLOESUARISOLUZIONE

Sesiconsentel’esecuzioneconcorrentedelletransazionipossonopresentarsisituazioniproblematichecomelostallo(deadlock).Lostallosiverificaquandodueopiùtransazionirisultanoperennementebloccateacausadi“circolarità”predentinellerichiestediaccessoaidati.

IDBMSpossonoriconoscerelesituazionidistalloeprendereprovvedimentiadeguati.Laprassipiùseguitaèquelladifarfallireequindiabortireunadelletransazionicoinvolte,designatacomevittima,obbligandolaquindiarilasciarelerisorsegiàconquistate.Aquestopuntoilciclosi“interrompe”eletransazionisuperstiticoinvoltepossonoprocedere.

7.BASIDIDATIDISTRIBUITEEARCHITETTURACLIENT/SERVER

Assumerel’ipotesicheidatisianocentralizzatièspessofontediinefficienza(intempo)edivulnerabilitàadunbloccodisistema.Questaconsiderazionehadatoorigineallateoriadellebasididatidistribuite.Tuttaviaproblemicheessepresentanoingeneresononotevoli.

Sipropendequindipersoluzionidicompromessovoltecomunqueadistribuiresiaidaticheilcaricodelleelaborazionisuivarinodi.Inparticolareilmodelloclient/serverèdiventatounriferimentosicuro.

7.1TERMINOLOGIAESSENZIALESULLERETI

Una“rete”èuninsiemedicalcolatori,indicaticomenodiositi,connessiin“qualchemodo”tradiloro.Adognireterimaneassociataunatopologia(astella,adanello,adalbero,completa).

Lacomunicazionefisicatrainodiavvienesuunodeitantimezzitrasmissivioggiinuso(cavocoassiale,fibraottica,doppinotelefonico,etere,ecc.).

Uncollegamentotraduenodipuòessererealizzatoattraversounaconnessionedirettaeisolataprivatadeiduepartner(connessionepunto‐punto)o,alcontrario,attraversodelleconnessionimultipunto(es.retiabus).

Siusadistingueretraretelocale(LAN:LocalAreaNetwork)eretegeografica(WAN:WideAreaNetwork),leprimehannoingeneremaggiorevelocitàeunamiglioreaffidabilità.

Leapplicazionisunodidiversicomunicanotraloroattraversounoopiùlivelli(software)dicomunicazionevirtuale,ciascunodeiqualièregolatodaunproprioprotocollo(insiemediregole).

Ilmessaggiodaspedirevienetipicamentesuddivisoinpacchettichecontengonodiverseinformazionidicontrollo.

7.2INTRODUZIONEALLEBASIDIDATIDISTRIBUITE

7.2.1BASEDIDATIDISTRIBUITEETRANSAZIONIGLOBALI

Unabasedidatidistribuitaprevedecheidatieimetdatisianoin“qualchemodo”distribuitisullememoriesecondariedeivarisitidiunarete,ancheconparzialiduplicazioni.

Ognisitocontienedeidatilocali,inaccordoadunoschemalocale,inaccordoadunoschemalocale,chepuòelaborareinpienaautonomiaattraversounDBMSlocale,cherendequindipossibiledelletransazionilocali.

Perpoterperòparlaredibasedodatidistribuitaènecessariochesiapossibileeseguireanchedelletransazioniglobali,cioètransazionichecoinvolgonoifatipresentiinpiùdiunnodo.QuestapossibilitàvieneoffertadaunDBMSdistribuito(DDBMS).

UnodeiproblemicheunDDBMSdeverisolvereèquellodifornirequalcheformaditrasparenzadelladistribuzione,intesacomepossibilitàdiscrivereprogrammiinmodoindipendentedalladistribuzionedeidatisullarete,cioècomesefosserocentralizzati.

7.2.2LADISTRIBUZIONEELAFRAMMENTAZIONEDEIDATI

Unodegliaspettipiùdelicatiedifficilièdecidereladistribuzionedeidati.Atalescoposifariferimentoadunoschemaglobaledituttalabasedidaticomesefossecentralizzata.

Unarelazionedelloschemaglobalevienedettarelazioneglobale.

Unabasedidatilocalesaràingeneralecostituitadaunsottoinsiemedellerelazioniglobaliodiloroframmenti.

UnarelazioneRpuòessereframmentatacon:

‐ frammentazioneorizzontale:isingoliframmentihannotuttilostessoschemaResonodeisottoinsiemidisgiuntidelletuplediR,l’unionedeiframmentideveprodurreR

‐ frammentazioneverticale:ogniframmentoècostituitodaunsottoinsiemedellecolonnediR,comprendenteunachiaveinmodotalechelarelazioneoriginalepossaessereottenutamediantegiunzionenaturaledeisingoliframmentivertivali

‐ frammentazionemista:combinaleduetecnicheprecedenti

7.2.3LAREPLICAZIONEDEIDATI

Visonomoltesituazionipraticheincuilemodificheadalcunidatidiinteressegeneraleperun’organizzazionevengonodecisedapersonediununico“nodo”.

Ingenerale,selemodificheadalcunidatinonsonofrequentiesonocomunqueunprivilegiodiununiconodo,puòessereconvenienteprendereinesameunsistemadidistribuzionedeidatinotocomereplicazione.

Ilconcettodireplicazionesibasasulfattocheesistaunabasedidatiincuiidatidadistribuirevengonocreatiomodificatieuninsiemedinodicheutilizzanoquestidatiinsolalettura.

Inlineadimassimasipossonodistinguereduetipidimodellodireplicazione:

‐ modelloaconsistenzastretta:sigarantiscechetuttelereplichesianosempreidenticheall’originale

‐ modelloaconsistenzalasca:sipermettechepossaesserciunritardotrailmomentoincuiidatioriginalisonomodificatiequelloincuiunlettorericevelacopia

7.2.4VANTAGGIESVANTAGGIDELLEBASIDIDATIDISTRIBUITE

Vantaggi:

‐ Integrazionedisituazionidifatto‐ Autonomialocale:ognisitoèingradodifunzionareautonomamente‐ Maggioreaffidabilità:unguastoadunnododellaretenonprecludeaglialtrila

possibilitàdicontinuarealavorare‐ Maggioreefficienza:distribuendoilcaricoecompiendoelaborazionilocalisi

conferiscealsistemaunelevatogradodiparallelismochepuòridurreiltempodicerteinterrogazioni;inoltreelaborandoinlocalesiriduceiltrafficodirete

‐ Maggiorescalabilità:ilsistemapuòcresceregradualmentesecondolenecessità

Svantaggi:

‐ Costodelsoftware:icostidiunDDBMSequellidisviluppodelsoftwaresonocertamentemaggiori,perchémaggiorisonoiproblemieledifficoltà

‐ Maggioripossibilitàdimalfunzionamenti:lamaggiorecomplessitàdelsistemahardwareesoftwareciesponedipiùalrischiodimalfunzionamenti

‐ Difficoltàdigestione:ilnumerodellepersoneedelleprocedurecoinvoltenellamanutenzionedelsistemaècertamentemaggiore

‐ Maggioresovraccaricodisistema:lapossibilitàdieffettuaretransazioniglobalielapresenzadireplichedeidatirichiededeiprotocollidisincronizzazioneparticolarmentecomplessianchedalpuntodivistacomputazionale

Occorrequindivalutareattentamentevantaggiesvantaggi;semprepiùspessosicercaditrovareuncompromessocomequellodell’architetturaclient/server.

7.3BASIDIDATIEARCHITETTURACLIENT/SERVER

L’architetturaclient/serverèunparticolaremodellodiinterazionetraprocessibasatosulloscambiodimessaggi.Nellasuaformapiùsemplice,unprocesso,designatocomecliente(client),chiedeunservizioadunaltro,designatocomeservente(server),inviandogliunmessaggio.Ilserventeesegueilserviziorichiestoerestituiscel’esitodelservizioconunmessaggiorivoltoalcliente.

Siammettechepiùprocessiclientepossanocompetereperl’accessoaunoopiùservizioffertidalserventesull’usodiunarisorsaacuivieneaffidatalagestione.Ivariclientisono

inconsapevolmentein“conflitto”sull’usodellarisorsaeilserventesvolge,inuncertosenso,anchelefunzionidiarbitrotraiclienti.

Leazionidiunprocessoserventepossonoesseredescrittedaunaproceduradeltipo:

<inizializzazioni varie> forever <seleziona un cliente tra quelli in attesa> <esegui il servizio richiesto> <spedisci al cliente l’esito e gli eventuali dati richiesti> <altre elaborazioni> endforever

Ogniclientedovràattendereuncertotempoprimacheilserviziorichiestovengaeffettivamentesvoltoacausadellacompetizioneconaltriclienti

Ingenereunclienterichiedeunservizioattraversounachiamatadiprocedura(RPC:RemoteProcedureCall),lacuisintassipotrebbeessere:

call nome-servizio (in <parametri ingr.>, out <parametri usc.>)

Traivarimotivichehannodecretatoilsuccessodiquestotipodiinterazionetraprocessivièsoprattuttolapossibilitàdidistribuirepiùequamenteilcaricodilavorosuinodidiunarete.

Facendoriferimentoallebasididati,larisorsaserventepotrebbeessereunDBMSchahaingestioneunaopiùbasidadati.IclientichiedonodisvolgerecertefunzionisuunabasedidatigestitadalDBMS,tipicamenteinviandounmessaggiochechiedel’esecuzionediuncomandoSQLodiunaprocedurapermanente.

Piùprecisamenteunclienteèunprocessodedicatoall’iterazioneconunutente:ilnodosucuigiraèsolitamenteunastazionedilavoro.Ilprocessodevegestireundialogouomo‐macchina.

7.4CONSIDERAZIONIFINALI

Lebasididatidistribuitenonhannoavutoilsuccessochecisipotevaattendere,soprattuttoperglisvantaggicheevidenzianorispettoaquellecentralizzate.

Ilmodelloclient/server,oltreaprestarsiadistribuiremeglioilcaricodilavoro,vieneassuntocomestrumentoperrealizzaredellesoluzionidicompromessofrabasididaticentralizzateedistribuite.

ChiprogettaunSIdevetenernecontoeprenderequindiseriamenteinconsiderazioneanchegliaspetti“architetturali”delsistema.