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

51
1. INTRODUZIONE ALLE BASI DI DATI 1.1 SISTEMA INFORMATIVO E SISTEMA INFORMATICO DI UNORGANIZZAZIONE Un sistema informativo è un insieme organizzato di procedure e di risorse umane e materiali utilizzate per la raccolta, l’archiviazione, l’elaborazione e la comunicazione di informazioni necessarie ad un’organizzazione per gestire sia le attività operative che quelle di governo. Il sistema informatico è il sottoinsieme del sistema informativo dedicato alla gestione automatica delle informazioni e che fa uso di materiali di tipo informatico 1.2 TRE REALTÀ CAMPIONE E SCENARI SIGNIFICATIVI 1.2.1 LA REALTÀ AZIENDALE ESSENZIALE: ARTICOLI, ORDINI, CLIENTI, FATTURE 1.2.2 LA REALTÀ DELLE PRENOTAZIONI AEREE 1.2.3 LA REALTÀ DI UNA BIBLIOTECA 1.3 TERMINOLOGIA E CONCETTI ESSENSIALI SULLE BASI DI DATI 1.3.2 DATI, INFORMAZIONI E CONOSCENZA I dati rappresentano dei fatti della realtà in esame. Un dato costituisce informazione solo se è in grado di modificare la conoscenza della realtà di chi lo riceve. In termini più espliciti i “dati” sono in definitiva delle sequenze binarie su un certo supporto di memoria, mentre le informazioni sono la conoscenza sui fatti della realtà che possono essere rappresentati dai dati. 1.3.2 STRUTTURA DEI DATI Affinché i dati possano costituire informazione (cioè avere un significato) devono essere corredati da una chiave di interpretazione. In particolare si cerca di dare una struttura ai dati che renda possibile una loro corretta interpretazione indipendentemente dal loro volume. Uno dei modi più semplici e più comuni è quello di strutturare i dati in una o più tabelle. 1.3.3 IL CONCETTO DI MODELLO DEI DATI In prima approssimazione un modello dei dati è uno strumento linguistico in grado di attribuire una “struttura” ai dati. Esistono tre categorie di modelli dei dati, corrispondenti a tre livelli decrescenti di astrazione sui dati:

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.