1. INTRODUZIONE ALLE BASI DI DATI 1.1 ISTEMA … · DI GESTIONE DI BASI DI DATI (DBMS) E...
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.9DMLPROCEDURALIENONPROCEDURALI(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ÀEDELLEASSOCIAZIONIUNOAMOLTIEUNOAUNO
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.2TRASFORMAZIONEDELLEASSOCIAZIONIMOLTIAMOLTI
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(OUTERJOIN)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(SOTTOINTERROGAZIONI)
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,USODIVARIABILIESELFJOIN
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.