Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di...
Transcript of Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di...
1
Presentazione corso
Basi di Dati e Sistemi Informativi
Laboratorio di Basi di Dati e SistemiInformativi
Danilo Montesi
http://www.unibo.it/docenti/danilo.montesi
2
Presentazione corso
Obiettivi
• Acquisire i concetti e principi dei sistemi di gestione di basi di dati
• Realizzare basi di dati utilizzando modelli, metodi e sistemi per ladefinizione, progettazione e realizzazione di sistemi informatici
3
Presentazione corso
Contenuti
• Lezioni– Modelli e linguaggi relazionali (BDSI)– Progettazione di una base di dati (BDSI)– Tecnologia di una base di dati (BDSI/LABDSI)– Evoluzione delle basi di dati (LABSI)
4
Presentazione corso
Luogo e orario BDSI e LABDSI
• Come comunicato.• Concordiamo alcune aggiustamenti
5
Presentazione corso
Materiale didattico
• Testi– P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone, Basi di dati:
Modelli e linguaggi di interrogazione, McGraw-Hill Italia,2006, ISBN 9788838662928
• R. Ramakrishnan, and J. Gehrke Database ManagementSystems, McGraw-Hill, 2000, ISBN 0072322063
• Materiale aggiuntivo disponibile online• http://www.unibo.it/docenti/danilo.montesi
6
Presentazione corso
Modalita’ d’esame BDSI
• Prova scritta (senza appunti/libri etc).
7
Presentazione corso
Modalita’ d’esame LABDSI
• Svolgimento di un progetto opzionale se si vuole un votosuperiore a 28/30:
• gruppi da due a quattro persone• su argomenti concordati con il docente• preferibilmente durante il corso• la validità del progetto è di 12 mesi• entro tale periodo occorre sostenere con successo la
prova scritta del corso BDSI
8
Presentazione corso
Tipi di progetti
• Progettazione di una base di dati (vedi esempio sulla pagina delcorso)
• Progetto avanzata da concordare con il docente
9
Presentazione corso
Modalità d’esame BDSI
• Occorre registrarsi almeno una settimana prima dello datadefinita per lo scritto a partire dalla mia home page
• Registrazione esami• Prova scritta (orale integrativo opzionale)
10
Presentazione corso
Relazione tra BDSI e LABDSI
• Si può sostenere solo l’esame di BDSI, ma non solo quello diLABDSI
• Siete incoraggiati a sostenere le due prove
11
Presentazione corso
Per ogni informazione
• La pagine dei corsi sono aggiornate, quindi prima di chiedere,consultatele.
• Non inviare email per chiedere informazioni che sono online.• Sottoscrivere il feed su
http://www.unibo.it/docenti/danilo.montesi per essere aggiornatisui ricevimenti.
1
Sistemi Informativi
2
IntroduzioneIntroduzione
Contenuto
• Alla fine di questo corso dovresti essere in grado di:– Comprendere le funzionalità offerte dai sistemi enterprise
application solution (ERP, CRM, SCM, BI, etc).– Comprendere la centralità dei dati e dei processi di analisi
dei dati– Comprendere la ripartizione dei costi nei sistemi informatici– Comprendere il ciclo di vita delle tecnologie e l’uso delle
curve di tendenza tecnologica
3
IntroduzioneIntroduzione
Sistemi Informativi
• Ogni organizzazione/azienda utilizza un insieme di risorse perperseguire degli scopi:– Persone– Denaro– Materiali– Informazioni
• Il sistema informativo è parte di ogni organizzazione.– Esegue e gestisce processi che coinvolgono informazioni.– E‘ di supporto ad altri sottosistemi. Va studiato nel contesto
in cui è inserito.– E‘ di solito suddiviso in sottosistemi (in modo gerarchico o
decentrato), più o meno integrati.
4
IntroduzioneIntroduzione
Sistema Informatico
• E‘ la porzione automatizzata del sistema informativo.• Il sistema informatico è la parte del sistema informativo che
gestisce informazioni per mezzo della tecnologia informatica.
Organizzazione/Azienda
Sistema Informativo
Sistema Informatico
5
IntroduzioneIntroduzione
Informazioni e Dati
• Nei sistemi informatici le informazioni vengono rappresentate inmodo essenziale, spartano: attraverso i dati.– Informazione. Notizia, dato o elemento che consente di
avere conoscenza più o meno esatta di fatti, situazioni, modidi essere.
– Dato. Ciò che è immediatamente presente alla conoscenza,prima di ogni elaborazione. In informatica: elementi diinformazione costituiti da simboli che debbono essereelaborati.
• Esempio.‘Mario’ ‘25775’ su un foglio di carta sono duedati. Se il foglio di carta viene fornito in risposta alla domanda“A chi mi devo rivolgere per il problema X; qual è il suo numerodi telefono?”, allora i dati possono essere interpretati edarricchire la conoscenza.
6
IntroduzioneIntroduzione
Basi di Dati componente dei Sistemi Informatici
• Le basi di dati sono una componente importante dei sistemiinformatici
• Infatti i sistemi informatici fanno uso di una o più basi di dati e direpository per la memorizzazione dei dati che spesso vengonointegrati tra di loro a causa dei sistemi “legacy”
• I dati hanno un ruolo centrale rispetto alle procedure che limanipolano perché sono più stabili nel tempo e quindi sono ilvero patrimonio aziendale
• Mettiamo ora la nostra attenzione su alcune classi diapplicazioni aziendali e sul modo di garantire lo scambio di datitra le varie applicazioni per rendere il sistema informaticoaziendale aperto a future estensioni
2
7
IntroduzioneIntroduzione
Enterprise Application Solution
• L’EAS (Enterprise Application Solution) utilizza le applicazioniaziendale per compiere le varie funzioni aziendali strategiche etutti i processi di gestione di tutti i reparti di una azienda.
• I sistemi EAS interagiscono con altri sistemi critici delle aziendeper monitorare al meglio tutte le operazioni all’interno di unaorganizzazione aziendale
• Sempre più, con lo sviluppo dei distretti industriali o aziende arete le operazioni avvengono anche al di fuori di un’impresa equindi tra più imprese
8
IntroduzioneIntroduzione
Finalità dei sistemi EAS
• Utilizzando tali sistemi è possibile:– Ridurre i costi complessivi e aumentare la flessibilità della
gestione aziendale– Consentire un più rapido accesso alle informazioni ovunque
e comunque semplicemente con una connessione a Internet– Migliorare il servizio clienti accelerando i tempi di risposta e
le azioni successive– Aumentare la flessibilità grazie alla possibilità di gestire una
vasta gamma di strutture fiscali, schemi di fatturazione, dicontabilità periodica in lingue e valute diverse
– Realizzare una piattaforma efficace per lo sviluppo e disoluzioni di e-business
– Accelerare i tempi di installazione delle applicazioni– Introdurre un modello organizzativo più efficace ed
efficiente, rimodellando i processi aziendali
9
IntroduzioneIntroduzione
I principali sistemi EAS
• I sistemi di questo tipo attualmente più diffusi sono:– Enterprise Resource Planning (ERP)– Customer Relationship Management (CRM)– Supply Chain Management (SCM)– Business Intelligence (BI)
10
IntroduzioneIntroduzione
Sistemi software gestionali non integrati
• In un sistema non integrato ogni attività (o piccolo gruppo diattività) è gestita da un sistema software indipendente dagli altri
Logisticain entrata
Operazioni:ProduzioneQualità, ecc
Logisticain uscita
Vendite eMarketing
Servizi:Manutenzione,Garanzia, ecc
Amministrazione, Finanza, Contabilità
Risorse umaneAcquisizione Risorse
Margine
Margine
Diagramma di Porter
11
IntroduzioneIntroduzione
Sistema Enterprise Resource Planning (ERP)
• In un sistema ERP le attività aziendali sono gestite in modointegrato
Logisticain entrata
Operazioni:ProduzioneQualità, ecc
Logisticain uscita
Vendite eMarketing
Servizi:Manutenzione,Garanzia, ecc
Amministrazione, Finanza, Contabilità
Risorse umaneAcquisizione Risorse
Margine
Margine
SISTEMA ERP
Moduli
DB
Diagramma di Porter
12
IntroduzioneIntroduzione
Enterprise Resource Planning
• I sistemi ERP sono software che permettono di integrare in ununico sistema tutti i sottosistemi operativi e amministrativi di unaazienda
• Le componenti da integrare sono:– Procedure di ricevimento degli ordini– Procedure di acquisto– Sistemi di programmazione della produzione– Sistemi di gestione del magazzino– Contabilità generale e industriale– Procedure di fatturazione– Procedure di incasso– Qualità– Personale
3
13
IntroduzioneIntroduzione
ERP: integrazione nativa
• Un sistema integrato prevede il collegamento di tutte le funzionigestionali in un unico sistema in grado di pianificare, gestire edorganizzare i processi e i dati dell’azienda.
• Con i sistemi ERP l’integrazione del sistema informativoaziendale diviene nativa, il sistema nasce già integrato
• Gli archivi sono unici, le procedure strettamente collegate fraloro, l’aggiornamento degli archivi all’interno del sistema gestitoin modo unitario e centralizzato.
14
IntroduzioneIntroduzione
ERP: informazioni e decision making
• Nei sistemi ERP confluiscono e vengono gestite tutte leinformazioni necessarie per la gestione globale dell'azienda,dalle sezioni strategiche (marketing, previsioni, budget, finanza)sino al controllo operativo quotidiano.
• Grazie al fatto di gestire in modo integrato tutte questeinformazioni, l’ERP è anche uno strumento di decision makingglobale.
15
IntroduzioneIntroduzione
ERP: caratteristiche
• Caratteristiche fondamentali dei sistemi ERP:– Modularità. Il sistema è costituito da più moduli in grado di
funzionare separatamente. Viene agevolato quindi un inserimentograduale del sistema ERP.
– Business Model unitario. Lo schema comprende e descrive tutti iprocessi operativi implementati nel software.
– Unicità del database (?). Tutte le applicazioni fanno riferimento adun unico database che definisce tutte le entità coinvolte (prodotti,clienti, ecc.). Si evitano ridondanze e inconsistenze. E’ unacaratteristica desiderabile ma non sempre possibile, perché spessonon è possibile/opportuno introdurre un sistema ERP in tutti i settoriaziendali.
– Configurabilità. L’impresa configura il software ERP in base alleproprie specificità a livello di architettura informatica, strutturaorganizzativa, procedure operazionali e obiettivi di business.
16
IntroduzioneIntroduzione
ERP: architettura modulare
Architettura di unsistema ERP.
Databasecentrale
Area Managere azionisti
Area Personale
ModuloReporting
ModuloGestione
risorse umane
ModuloAmministrazione
e finanza
ModuloProduzione
ModuloMagazzinoe acquisti
ModuloCommerciale
e logistica
ModuloServizi
di vendita
Are
a C
lient
i
Area Fornitori
17
IntroduzioneIntroduzione
Extended Enterprise Resource Planning (EERP)
• Gli EERP tendono ad aggiungere moduli che hanno lo scopod’intensificare la comunicazione strutturata dell’impresa nonsolo all’interno di essa, ma anche oltre i propri confini fisici egiuridici. Integrazione con:– altre realtà imprese del settore, fornitori, partner (Supply
Chain Management) – Distretti industriali/Impresa a Rete– la rete di vendita (Sales Force Automation)– i clienti (Customer Relationship Management)
• Introduzione strutturata e perfettamente integrata di strumentiData Warehouse e Data Mining che alimentano moduli diBusiness Intelligence.
18
IntroduzioneIntroduzione
EERP: architettura
• L’EERP permette a clienti e fornitori di accedere direttamentealle funzioni del sistema integrando di fatto la Supply Chain e ilCustomer Relationship Management e il Supplier RelationshipManagement
ERPSRM CRM
ClientiFo
rnito
ri
4
19
IntroduzioneIntroduzione
ERP: quote di mercato
0,0
5,0
10,0
15,0
20,0
25,0
30,0
35,0
40,0
45,0
SAP Oracle Sage Group Microsoft
Business
Solution
SSA global Geac Altri
2004
2005
Fonte:AMR Research
20
IntroduzioneIntroduzione
Customer Relationship Management
• Il concetto di CRM copre metodi e tecnologie per gestire lerelazioni coi clienti. Le informazioni sui clienti esistenti (o anchesu quelli potenziali) sono analizzate e utilizzate a questo scopo.
• Il Customer Relationship Management (CRM) utilizza tecnologieinformatiche per concentrarsi sulla fidelizzazione costante di uncliente. La sfida è conquistare nuovi clienti remunerativi,creando nel frattempo legami sempre più stretti con quelli giàacquisiti, e gestendo al meglio queste relazioni per tutta la lorodurata.
• Con il CRM, ad esempio, una azienda può lanciare attività dimass-marketing su base one-to-one, e trattare ogni cliente inmodo personalizzato.
21
IntroduzioneIntroduzione
Finalità del CRM
• Utilizzando un CRM è possibile:– stabilire un dialogo continuo con i clienti, utilizzando il web
per comunicare con loro in maniera diretta– comprendere più a fondo i bisogni dei clienti e creare per
ciascuno di essi soluzioni su misura– attuare azioni di marketing più efficaci grazie all'utilizzo di
informazioni prontamente disponibili relative ai clienti– collegare i diversi reparti aziendali, dando loro l'accesso alle
stesse informazioni, aggiornate in tempo reale– rivolgersi ai clienti in maniera coerente da ogni settore
dell'azienda.
22
IntroduzioneIntroduzione
Aree del CRM
Le metodologie di CRM sono classificate in tre aree:• CRM collaborativo: per il supporto all’interazione, in tempo
reale durante il contatto, tra azienda e utente, sui diversi canali• CRM operazionale: per il supporto e l’integrazione tra i diversi
livelli: utente, front-office e back-office, in logica di workflow, inmodo da garantire la massima flessibilità e tracciamento delleoperazioni.
• CRM analitico: per il supporto metodologico, procedurale etecnologico per consentire di modellare il comportamento degliutenti, ricostruirne i profili individuali al fine di supportare, ai varilivelli, i processi decisionali.
23
IntroduzioneIntroduzione
CRM collaborativo
• Il CRM collaborativo coinvolge tutti i tipi di interazione con iclienti, dall’interazione personale a quella remota
• Il CRM collaborativo consente di:– fornire una comunicazione efficace con il cliente attraverso
una molteplicità di canali, migliorandone la qualità– ridurre i costi della comunicazione stessa, usando il più
possibile processi automatici– accedere ad informazioni sul cliente mentre si interagisce
con esso.• Gli strumenti utilizzati sono la posta, il fax, il telefono, i call
center, il web, la posta elettronica, gli sms, i coupon pubblicitari,ecc.
24
IntroduzioneIntroduzione
CRM operazionale
• Obiettivi: individuare soluzioni per l’automazione dei processi dibusiness che prevedono contatti col cliente, ad uso di diversidipartimenti aziendali, come la forza vendita ed il ContactCenter, i quali condividono ed aggiornano, in tempo reale, lestesse informazioni sui clienti.
• Strumenti: Questo tipo di soluzione si avvale di un tipo didatabase transazionale o OLTP (Online TransactionProcessing). Un aspetto fondamentale per il successo èl’integrazione con i sistemi di back-office, per capitalizzare laconoscenza del cliente già esistente in azienda.
5
25
IntroduzioneIntroduzione
Interazione tra le aree del CRM operazionale
Marketing Vendita Support
DIFFUSIONE DEL MARCHIO
CREAZIONEDEL LEAD
PROFITTABILITA’LEAD
ACQUISIZIONECONTATTI
CONOSCENZABISOGNI
PRESENTAZ.SOLUZIONE
PROPOSTADI VENDITA
SERVIZIODI ASSISTENZA
GARANZIADI QUALITA’
FEDELTA’CLIENTI
CONTRATTODI VENDITA
GESTIONECAMPAGNE
FEEDBACK
Una rappresentazione grafica dell’interazione tra le aree del CRMoperazionale
26
IntroduzioneIntroduzione
CRM operazionale: l'automazione del marketing
• Al fine di generare un’espansione del proprio mercato l'aziendapuò approcciare potenziali clienti (marketing out bound)servendosi di dati precedentemente acquisiti (selezionati conquery o ancora meglio con strumenti di Business Intelligence)oppure acquista dati riguardanti gli stessi da societàspecializzate nella profilazione.
• All’operatore aziendale viene presentato tramite computer ilprofilo del cliente che deve essere contattato, e viene data lapossibilità di arricchire tale profilo aggiungendo informazioni cheverranno passate all’area vendita.
• Anche nel caso in cui sia il cliente a prendere contatto conl’azienda (marketing in bound), per esempio a seguito di unmessaggio pubblicitario, il contatto viene gestitoinformaticamente, creando un profilo.
27
IntroduzioneIntroduzione
CRM operazionale: l’automazione della vendita
• Seguendo il filo conduttore che porterà fino all’acquisto, inquesta area si passa dal potenziale cliente (lead) definito dalmarketing al cliente con propensione all'acquisto (prospect).
• Tramite il profilo creato precedentemente ed in seguito alcontatto della forza vendita con il potenziale cliente vi siattribuisce la propensione all’acquisto (quantitativa oqualitativa).
• Le politiche aziendali di vendita definiscono i processi e i moduliche vengono preparati dal fornitore di software CRM, a supportodell’attività di quest’area.
• Esempi tipici: organizzazione di un calendario di attività daeffettuare sulle trattative aperte, organizzazione di operazioni dicross-selling, conservazione di tutto lo storico di relazioni con icontatti. 28
IntroduzioneIntroduzione
CRM operazionale: il customer support
• Il servizio post-vendita deve prevedere una continua crescita dellivello di servizio a tutto vantaggio sia del cliente, che dellaprofittabilità aziendale.
• Quest’area si serve tipicamente del cosiddetto knowledge base,un database di conoscenza a disposizione sia dell'azienda chedei clienti (con le opportune differenziazioni di presentazione evisibilità tra i due), creato e arricchito continuamente mediante laregistrazione dei casi segnalati dai clienti (malfunzionamenti,ritardi, insoddisfazioni, lamentele, ecc.) e della loro soluzione.
• Il canale Web prevede la creazione di pagine dinamiche in cui ilcliente può riempire form che rappresentano i cosiddetti claim(richieste) di un intervento aziendale.
29
IntroduzioneIntroduzione
CRM analitico
• Obiettivi: miglioramento della “conoscenza” aziendale mediantel’estrazione di informazioni dai dati relativi alle vendite e relativosupporto. Permette l’analisi dei dati raccolti dal sistemaoperazionale. E' possibile effettuare degli studi analitici eprevisionali sulle caratteristiche e sui comportamenti dei diversitipi di clienti, che consentono di individuare schemicomportamentali difficilmente riconoscibili altrimenti.
• Due prospettive:– Produrre le informazioni per i clienti (supporto al cliente).– Ottenere le informazioni sui clienti. L'azienda potrà utilizzare
la conoscenza ottenuta per migliorare l'offerta di prodotti-servizi e/o l'approccio alla vendita traendone un vantaggio.
• Strumenti: Business Intelligence.
30
IntroduzioneIntroduzione
Schema del CRM analitico
Dati deiclienti Analisi
Decisioni
Tramite il CRM analitico si analizzano i dati dei clienti al fine diestrapolare della conoscenza utile a formulare decisioni strategiche
6
31
IntroduzioneIntroduzione
CRM: il caso New Piper Aircraft
• La New Piper Aircraft, produttrice di aerei, nei primi anni ‘90 erafortemente indebitata e produceva meno di 50 pezzi all’anno.
• La crisi dell’azienda, operante in un settore altamentetecnologico, dove la complessità del prodotto finito è assaielevata, era dovuta all’incapacità di fornire un’adeguataassistenza ai clienti e ai partner.
• La società decise quindi di dotarsi di un sistema CRM estendoloanche con funzionalità PRM (Partner RelationshipManagement) da introdurre gradualmente, secondo un piano in8 fasi.
• New Piper Aircraft oggi è un’azienda di successo che producepiù di 400 pezzi all’anno.
• Rif. Information Technology for Management, Turban, pag. 356
32
IntroduzioneIntroduzione
Le 8 fasi del caso New Piper Aircraft
• Fase 1. Creazione dell’infrastruttura coinvolgendo proprietari deivelivoli e rivenditori
• Fase 2. Abilitazione del servizio clienti• Fase 3. Mettere in grado i rivenditori di accedere a opportunità
di vendita adeguate alla loro zona• Fase 4. Apertura del portale web per i rivenditori• Fase 5. Ottimizzazione della gestione della garanzia• Fase 6. Apertura del portale web per i partner• Fase 7. Possibilità di fare ordini on line• Fase 8. Nuovi servizi del portale Web per i clienti
33
IntroduzioneIntroduzione
CRM: quote di mercato
0,0
5,0
10,0
15,0
20,0
25,0
30,0
35,0
40,0
45,0
SAP Siebel (*) Oracle
(compreso
PeopleSoft )
SaleseForce
.com
Amdocs Altri
2004
2005
Fonte:Gartner
(*) Acquisito da Oracle nel 2006
34
IntroduzioneIntroduzione
Supplier Relationship Management
• I sistemi SRM sono simili a sistemi CRM, ma sono rivolti alla gestionedelle relazioni con i fornitori.
• Le soluzioni di Supplier Relationship Management consentono alleaziende di attivare processi collaborativi condivisi con i fornitori al finedi identificare e selezionare le migliori offerte per qualità e costi,ottimizzare i termini contrattuali e analizzare l'impatto di ogni nuovofornitore all'interno dell'intera catena del valore.
• Gli SRM si dividono in due categorie:– SRM operativi: che consentono di gestire le relazioni con i fornitori,
inviare gli ordini, controllare la loro evasione, emettere i mandati dipagamento, ecc.
– SRM analitici, o direzionali: che permettono di studiare ilcomportamento dei fornitori per individuare i comportamentiopportunistici e procedere alla selezione dei fornitori migliori.
35
IntroduzioneIntroduzione
Supply Chain Management
• E’ un approccio integrato ed orientato al processo perl'approvvigionamento, la produzione e la consegna di prodotti eservizi ai clienti.
• Coinvolge l'intera catena di approvvigionamento: dal fornitoredel fornitore fino al cliente del cliente.
• Comprende, inoltre, la gestione delle materie prime, deisemilavorati, dei prodotti finiti e dei flussi informativi edeconomici.
36
IntroduzioneIntroduzione
I princìpi fondamentali del SCM
• Segmentazione della clientela, allo scopo di offrire un maggioreservizio solo ai clienti capaci di valorizzarlo
• Adattamento del processo logistico-distributivo ai diversisegmenti di clientela
• Ascolto dei "segnali del mercato" e pianificazione collaborativaal fine di evitare l'effetto bull-whip ovvero la distorsione delleinformazioni riguardanti gli ordini di approvvigionamento
• Differenziazione dei prodotti il più tardi possibile, conconseguente aumento della flessibilità e ottimizzazione dellostoccaggio
• Massima collaborazione con i maggiori fornitori• Misurazione del livello di servizio e del costo relativo• Gestione delle informazioni attraverso l'ICT. Disporre quindi di
un adeguato sistema informatico
7
37
IntroduzioneIntroduzione
SCM e IT: e-supply chain
• Quando la catena del valore è gestita con l’ausilio di sistemiinformatici si parla di e-supply chain
• Il Supply Chain Management (SCM) utilizza i principi dell'e-business e le tecnologie web per coordinare ed ottimizzare iprocessi.
• Le soluzioni SCM basate sull'e-business sono applicate a tutti idiversi processi aziendali: approvvigionamento, gestione dellescorte, previsioni, immagazzinamento e logistica.
38
IntroduzioneIntroduzione
Vantaggi del SCM
• Coordinando tutte le fasi della propria attività, una aziendapotrà:– diminuire i costi operativi mantenendo al minimo il livello di
scorte– aumentare la soddisfazione dei clienti mantenendo scorte
adeguate, così da garantire un'offerta sempre aggiornata ein sintonia con le tendenze e le trasformazioni del mercato
– migliorare la produttività tramite un utilizzo più efficientedelle risorse, una maggiore sicurezza dei dati, minori errorinell'immissione degli ordini e comunicazioni più veloci.
39
IntroduzioneIntroduzione
Ottimizzazione globale
• L’integrazione efficiente tra fornitori, produttori, magazzini edepositi realizzata da un sistema SCM fa sì che la merce vengaprodotta e distribuita:
–nella giusta quantità–nella giusta locazione–nel giusto tempo
• Lo scopo è ottimizzare i costi dell'intero sistema soddisfacendole richieste del livello di servizio
• Si parla quindi di ottimizzazione globale.
40
IntroduzioneIntroduzione
Ottimizzazione sequenziale vs. ottimizzazione globale
Pianificazione delrifornimento
Pianificazione dellaproduzione
Pianificazione delladistribuzione Domanda
Ottimizzazione sequenziale
Contratti di fornitura / Collaborazioni / Sistemi informativi e DSS
Pianificazione delrifornimento
Pianificazione dellaproduzione
Pianificazione delladistribuzione Domanda
Ottimizzazione globale
Il Supply Chain Management consente l’ottimizzazione globale
41
IntroduzioneIntroduzione
SCM: il caso Warner-Lambert
• Warner-Lambert è una delle maggiori case farmaceutiche degliUSA, oggi acquisita dal gruppo Pfizer.
• Uno dei principali prodotti di Warner-Lambert, il colluttorioListerine, è fabbricato con ingredienti a base di eucalipto,importati dall’Australia.
• Il problema principale è rappresentato dal riuscire a pianificarela produzione, e di conseguenza gli acquisti di materia prima,prevedendo la domanda globale del prodotto
• Un errore di valutazione può tradursi sia in un eccesso di scortedi materia prima o di prodotto finito, che in una carenza.
• Rif. Information Technology for Management, Turban, pag. 306
42
IntroduzioneIntroduzione
La soluzione del caso Warner-Lambert
• Warner-Lambert oggi è in grado di pianificare la produzione diListerine grazie ad un sistema SCM che consente di analizzare idati relativi alla produzione, distribuzione e vendita e dirapportarli a quelli relativi alla domanda prevista in base allasituazione del mercato.
• Ad esempio il sistema è in grado di prevedere l’impatto di unapromozione.
8
43
IntroduzioneIntroduzione
Business Intelligence
• Consolida ed analizza i dati aziendali trasformandoli ininformazioni complete e più facilmente comprensibili.
• Consente alle aziende di ricavare i diversi dati relativi ai clienti,alle funzionalità operative e ai mercati, nell'ottica di accrescere ilvantaggio competitivo.
• Fornisce alle aziende l’“intelligence” necessaria per individuarele tendenze, migliorare le relazioni, ridurre i rischi finanziari ecreare nuove opportunità di business.
• È il tema generale sotto cui si articolano le tecnologie DataWarehouse e Data Mining.
44
IntroduzioneIntroduzione
Data Warehouse
• Il Data Warehousing si può definire come il processo diintegrazione di basi di dati indipendenti in un singolo repository(il Data Warehouse) dal quale gli utenti finali possano facilmenteed efficientemente eseguire query, generare report ed effettuareanalisi
• Un Data Warehouse è una collezione di dati che soddisfa leseguenti proprietà:– usata per il supporto alle decisioni– orientata ai soggetti– integrata: livello aziendale e non dipartimentale– correlata alla variabile tempo: ampio orizzonte temporale– con dati tipicamente aggregati: per effettuare stime– fuori linea: dati aggiornati periodicamente
45
IntroduzioneIntroduzione
Data Warehouse e OLAP
• Il tipo di elaborazione per cui nascono i Data Warehouse vienechiamato On Line Analytical Processing (OLAP).
• E’ un tipo di interrogazione caratterizzato da una analisimultidimensionale che richiede la scansione di una enormequantità di record per arrivare a una sintesi dai dati di partenza.
• A differenza di uno strumento standard di reportistica, l’analisiOLAP permette di eseguire una successione di interrogazioni apartire dal risultato di una interrogazione iniziale, creando uncammino di elaborazione dei dati.
46
IntroduzioneIntroduzione
Data Warehouse, operatori OLAP (1)
• Roll-up. Aumenta l’aggregazione dei dati che si stannoanalizzando, riducendo dunque il livello di dettaglio. Peresempio: passare dalla visualizzazione degli incassi mese permese, a quella suddivisa per semestre. Riferendoci sempre almodello multidimensionale, questo può portare a una riduzionedi dimensioni.
• Drill-down. È l’operazione duale al Roll-up. Per esempio,passare da un dato che descrive un fenomeno a livelloregionale, a un dato dettagliato per città.
• Slicing. L’operazione consiste nel fissare una dimensione delproblema, estraendo dati più o meno aggregati dalle altre.
47
IntroduzioneIntroduzione
Data Warehouse, operatori OLAP (2)
• Pivoting. Questa funzionalità agisce solo sulla presentazione enon sulla formulazione di una nuova interrogazione: nonmodifica il contenuto dell’output della interrogazione precedente,e vuole solamente visualizzare i dati in modo diverso,riorganizzando la disposizione delle colonne delle tabelle.Servendoci della metafora del cubo, fare pivoting significaruotarlo, portando in primo piano una combinazione didimensioni differente.
• Drill-across. Lo scopo di questa operazione è principalmente diconfrontare fenomeni tra loro: si calcolano espressioni checoinvolgono le misure a disposizione di due o più cubi.
• Drill-through. Consente di passare dai dati aggregatimultidimensionali del Data Warehouse, ai dati operazionalipresenti nei database sorgenti.
48
IntroduzioneIntroduzione
Il modello multidimensionale nel DW (1)
Prodotto
Tempo
Negozio
vino acqua birra
B
C
D
A
marfeb
gen
15 121
42
10
9
25
2
7
11
23
3
Esempio: vendite in unacatena di supermercati.Ogni cella del cubo contienela misura dell’eventocorrispondente.
Nel mese di “gennaio” nelnegozio “C” sono stai venduti7 pezzi del prodotto “acqua”
9
49
IntroduzioneIntroduzione
Il modello multidimensionale nel DW (2)
Prodotto
Negozio
Tempo
Slicing: il valorefissato è il prodotto,la misura riguardatutti i negozi,nell’interadimensione tempo
Slicing: il valorefissato è il tempo, lamisura riguarda tuttii prodotti di tutti inegozi in esame
Aggregazione: insieme diprodotti, in un certo arco ditempo, riferiti a una classe dinegozi. Il sottoinsiemeevidenziato va consideratocome dato unitario, aggregato
CUBO
50
IntroduzioneIntroduzione
Architettura di un Data Warehouse
• I database operazionalisono la sorgente deidati del DataWarehouse
• Estrazione dei dati construmenti ETL(Extraction, Transformand Load).
• Creazione oaggiornamento del DataWarehouse
• Analisi dei dati, risultatidelle interrogazioni sulData Warehouse
Database Operazionali
DATAWAREHOUSE
Strumenti ETL
Strumenti di analisi
51
IntroduzioneIntroduzione
Data Warehouse: quote di mercato
0,0
5,0
10,0
15,0
20,0
25,0
30,0
35,0
Oracle IBM SAS
institute
M icrosoft Business
Objects
Teradata Cognos Hyperion
Solutions
Altri
2004
2005
Fonte:IDC
52
IntroduzioneIntroduzione
Data Mining (1)
• La maggior parte delle aziende dispone di enormi basi di daticontenenti dati di tipo operativo, queste basi di dati costituisconouna potenziale miniera di utili informazioni.
• Il Data Mining consiste in un insieme di tecniche e algoritmi dibase per l’estrazione di conoscenza.
• Un processo di Data Mining si basa sui seguenti elementi:– Dati: insieme di informazioni contenute in una base di dati o
data warehouse– Pattern: espressione in un linguaggio opportuno che
descrive in modo succinto le informazioni estratte dai dati
53
IntroduzioneIntroduzione
Data Mining (2)
• Il Data Mining si differenzia dal data retrieval andando allaricerca di relazioni e associazioni tra fenomeni non note a priorie, inoltre, fornendo misure statistiche che permettono di valutarerazionalmente, e sulla base di dati oggettivi, l'opportunità di unacerta decisione.
• Il Data Mining si differenzia dall’OLAP poiché combina in modomultivariato tutte le variabili a disposizione. Permette inoltre diandare oltre la visualizzazione dei riassunti presenti, formulandomodelli funzionali all’attività di business. Nel Data Mining, leipotesi di ricerca vengono scoperte nei dati, anziché suggeritedall’utente, come avviene nell’OLAP.
• Riassunto schematico dell’evoluzione degli strumenti dibusiness intelligence volti all’estrazione di conoscenza da un db:
DATA RETIEVAL OLAP DATA MINING54
IntroduzioneIntroduzione
Datamining: un esempio (1)
xx
x
x
x
xx
x
x
x
xx
x
x
ooo
oo
o
oo
o
ooo
o
o
o
o
x
Stipendio
Pres
titi
Persone che hanno ricevuto un prestito dalla banca:x: persone che hanno mancato la restituzione di rateo: persone che hanno rispettato le scadenze
10
55
IntroduzioneIntroduzione
Datamining: un esempio (2)
xx
x
x
x
xx
x
x
x
xx
x
x
ooo
oo
o
oo
o
ooo
o
o
o
o
x
Stipendio
Pres
titi
Si estrae la seguente regola:IF stipendio < k THEN mancati pagamenti
k
56
IntroduzioneIntroduzione
Costi delle fasi del ciclo di vita di un sistemainformatico
Analisi dei RequisitiAnalisi dei Requisiti
Specifica dei RequisitiSpecifica dei Requisiti
ProgettoProgetto
ImplementazioneImplementazione
TestingTesting dei moduli dei moduli
IntegrazioneIntegrazione
ManutenzioneManutenzione
La manutenzione ha un ruolopredominante nei costi delsoftware.
67%67%
2%2% 5%5%6%6%
5%5%7%7%
8%8%
Fonte: HP (1994)132 Progetti vari (1976-1981)
57
IntroduzioneIntroduzione
Costo della manutenzione di un sistemainformatico
•• Fase di ManutenzioneFase di Manutenzione.– E’ la voce principale (67%) tra i costi del ciclo di vita del
software.– Esistono diversi tipi di manutenzione:
• Manutenzione correttiva (20%). Correzione di erroriindividuati dopo l’accettazione da parte del cliente.
• Manutenzione adattiva (20%). Ha lo scopo di renderel’applicazione compatibile con un nuovo ambiente(sistema operativo, compilatore, hardware).
• Manutenzione perfettiva (60%). Modifiche atte a fornirenuove funzionalità al software.
•• RitiroRitiro.– Quando i ricavi non giustificano più i costi di manutenzione il
software viene ritirato.
58
IntroduzioneIntroduzione
Come scegliere il sistema adatto alla miaazienda?
• Nessuna ricetta semplice.• Molta esperienza e consulenti assolutamente indipendenti.• Ricordare la ripartizione dei costi precedente.• Il vero costo non e’ l’acquisto, ma la manutenzione.• In generale vale la nota regola del Keep It Simple Stupid (KISS)
59
IntroduzioneIntroduzione
Evoluzione dell’ICT (1)
• Anni 60 - mainframes• Anni 70 - minicomputers• Anni 80 - personal computers• Anni 90 - networking• Anni 00 - internet-based computing• L’ambiente dell’IT di oggi può essere descritto in diversi modi:
– “The network is the computer” - (Sun Microsystems)– “Networked-PC” - (Microsoft)– “Enterprise-wide networking” - (IBM)– “Networked Enterprise Resource Planning” - (SAP)
60
IntroduzioneIntroduzione
Evoluzione dell’ICT (2)
• Vecchi Sistemi– Grossi investimenti nel software richiedono tempi lungi per essere
ammortizzati.– Funzionano e sono già stati pagati.– L’hardware utilizzato è molto costoso da mantenere.
• Nuovi Sistemi– Possono essere giustificati da grossi risparmi nella manutenzione dei
programmi e dell’hardware rimpiazzando dei vecchi sistemi.– Sono più facili da usare dei vecchi sistemi.– Sono la base per sistemi più potenti che coprono uno spettro più ampio di
funzionalità.• Strategia:
– Mantenere il vecchio e gradualmente rimpiazzarlo con il nuovo.– Attenta e poderata evoluzione è il migliore approccio.– Seguire un ritmo di aggiornamento che è adeguato per la specifica
organizzazione.
11
61
IntroduzioneIntroduzione
Tracciare le Tendenze della Tecnologia
• Molto difficile nel medio lungo periodo prevedere le tendenzedelle tecnologie.
• Lo strumento che ci può aiutare nel fare questo sono le “Curvedi tendenza Tecnologica”.
• Dobbiamo usare queste tendenze per costruire un portafogliodiversificato di ICT che protegge gli investimenti nell’ICT daldivenire obsoleti.
62
IntroduzioneIntroduzione
Curve di Tendenza Tecnologica (1)
• Bleeding edge technology– Estremamente nuova – vecchia di 6 mesi - 2 anni.– Relativamente costosa ma con il potenziale per grossi risparmi grazie
all’aumento di produttività indotto.– Alto rischio dovuto alla sua instabilità.– Complessa – non completamente compresa o applicata.– A meno di indicazione contrarie per lo specifico settore solo il 10%-
15% dell’attività deve essere basato su questo tipo di tecnologica.
• Leading edge technology– Stabile ma nuova – vecchia di 1 – 5 anni.– Un rilevante segmento dei vostri competitor la sta utilizzando e per
essere competitivi occorre adottarla.– Dovreste avere il 50%-80% della vostra attività che usa questo tipi di
tecnologia.
63
IntroduzioneIntroduzione
Curve di Tendenza Tecnologica (2)
• Trailing edge technology– Tecnologie vecchie di 5 anni o più.– La tecnologia può ancora essere utilizzata – una possibile ragione
è il grosso investimento effettuato oppure la funzione svolta ècritica.
– Normalmente il vecchio software richiede vecchio hardware.– Vecchi programmi sono difficili da modificare perché le competenze
non sono più disponibili.– Solo il 10%-25% dell’attività dovrebbe usare questo tipo di
tecnologia.
64
IntroduzioneIntroduzione
E’ un obiettivo in movimento
65
IntroduzioneIntroduzione
Come usare le Curve di Tendenza Tecnologica
• La curva si muove avanti con il tempo– Diverse sono le velocità per diversi aspetti della tecnologia
• Media del settore– C’è una curva per l’organizzazione media
• Vostro settore– C’è una curva per l’organizzazione nel vostro settore – dove dovresti
essere• Tua organizzazione
– C’è una curva per dove la tua organizzazione è oggi ed un’altra perdove dovrebbe essere
– Analizza la tua organizzazione e disegna due curve:• una che rappresenta dove la tua organizzazione è oggi.• ed un’altra curva per dove la tua organizzazione dovrebbe essere per
essere più efficiente/efficace/competitiva.
66
IntroduzioneIntroduzione
Curva di Adozione Tecnologica
12
67
IntroduzioneIntroduzione
Esempio 1: la curva per i Sistemi Operativi
DOSWin 3.1
Win 95Win 98
Win NTWin 2000
UNIXLinux
OS/2
Mac System 7
Mac System 8
Mac OS X
Win XP
68
IntroduzioneIntroduzione
Esempio 2: la curva per Internet e il WebEnterprise Internet Access
None E-mail only
GopherFTP
Web Access
InternetCommerce
Push Technology
HTML SGML XMLText
BrowserCLI
Search Engines
Content Format
69
IntroduzioneIntroduzione
Portafoglio ICT di un’organizzazione
• Le Curve di Tendenza Tecnologica possono essere usate per costruireun portafoglio di ICT per un’organizzazione.
• Devono essere gestite allo stesso modo con cui gestiamo altriinvestimenti.
• Occorre avere un diversificato portafoglio di tecnologie che è adattoalla tua organizzazione.
• La giusta quantità della giusta tecnologia.• Costantemente monitorata e cambiata al variare delle tecnologia
dell’organizzazione.• Criteri
– La tecnologia diviene obsoleta– Competitor iniziano ad usare nuova tecnologia– Le pressioni del mercato e le opportunità impongono cambiamenti nel
portafoglio• Raccomando un mix di 10/80/10 di bleeding/leading/trailing edge ICT.
70
IntroduzioneIntroduzione
Hyperlinks
• ERP di SAP• ERP di Microsoft• ERP di SSA• CRM di SAP• CRM di Oracle• CRM di Microsoft• SCM di Oracle• SCM di SAP• Business Intelligence di IBM• Business Intelligence di Microsoft• Business Intelligence di Oracle
71
IntroduzioneIntroduzione
Bibliografia
• Information Technology for Management, Turban, Leidner,McLean, Wetherbe, ed. Wiley 2006
1
Introduzione
2
Organizzazione/Azienda
• utilizza un insieme di risorse e regole per lo svolgimento coordinato delle attività al fine del perseguimento degli scopi
• il sistema informativo è parte di ogni organizzazione• il sistema informativo esegue/gestisce processi informativi (cioè
i processi che coinvolgono informazioni )
3
Sistema informativo
• Componente (sottosistema) di una organizzazione che gestisce(acquisisce, elabora, conserva, produce) le informazioni diinteresse (cioè utilizzate per il perseguimento degli scopi dell’organizzazione stessa).– ogni organizzazioneha un sistema informativo,
eventualmente non esplicitato nella struttura; – quasi sempre, il sistema informativo è di supporto ad altri
sottosistemi , e va quindi studiato nel contesto in cui èinserito
– il sistema informativo è di solito suddiviso i n sottosistemi (inmodo gerarchico o decentrato), piùo meno fortemente integrati
4
Risorse
• le risorse di una azienda (o amministrazione):– persone – denaro – materiali – informazioni
5
Funzioni di un sistema informativo
• raccolta , acquisizione delle informazioni • archiviazione, conservazione delle informazioni • elaborazione delle informazioni • distribuzione, scambio di informazioni
6
Sistemi informativi e automazione
• Il concettodi “sistema informativo” è indipendente da qualsiasi automatizzazione: esistono organizzazioni la cui ragion d’essereè lagestione di informazioni (p. es. servizi anagrafici e banche) e che operano da secoli.
2
7
Sistema Informatico
• porzione automatizzata del sistema informativo• il sistema informatico è la parte del sistema informativo che
gestisce informazioni per mezzo della tecnologia informatica.
Organizzazione/Azienda
Sistema informativo
Sistema informatico
8
Sistema informativo e sistema informatico
• Anche prima di essere automatizzati, molti sistemi informativi si sono evoluti verso una razionalizzazionee standardizzazione delle proceduree dell’organizzazione delle informazioni .
9
Gestione delle informazioni
• Nelle attività umane, le informazioni vengono gestite (registratee scambiate) in forme diverse, a seconda delle necessitàecapacità:– idee informali – linguaggio naturale (scritto o parlato, formale ocolloquiale, in
una lingua o in un’altra)– disegni , grafici, schemi – numeri – codici (anche segreti)
• e su vari supporti, dalla memoria umana alla carta
10
Gestione delle informazioni
• Nelle attività standardizzate dei sistemi informativi complessi,sono state introdottecol tempo forme di organizzazioneecodifica delle informazioni .
• Ad esempio, nei servizi anagrafici si è iniziato con registrazioni discorsive e sono state poi introdotte informazioni via via più precise (e in un certo senso artificiali):– nome e cognome;– estremi anagrafici;– codice fiscale;
11
Informazioni e dati
• Nei sistemi informatici (e non solo in essi), le informazioni vengono rappresentate in modo essenziale, spartano:attraverso i dati.– informazione : notizia, dato o elemento che consente di
avere conoscenza più o meno esatta di fatti, situazioni , modidi essere.
– dato : ciò che è immediatamente presente alla conoscenza, prima di ogni elaborazione; (in informatica) elementi diinformazione costituiti da simboli che debbono essere elaborati.
(Vocabolario della lingua italiana, 1987)
12
Dati e informazioni
• Quindi , i dati sono fatti elementari, informazioni codificate, che hanno bisogno di essere interpretateper fornire conoscenza
Esempio‘Mario’ ’275’ su un fogliodi carta sono due dati. Se il foglio di carta viene fornito in risposta alladomanda “A chi mi devo rivolgere per il problemaX; qual è il suo numero ditelefono?”, allora i dati possono essere interpretati ed arricchirela conoscenza.
3
13
Perché i dati?
• La rappresentazione precisadi forme più ricchedi informazionee conoscenza è difficile
• I dati costituiscono spesso una risorsa strategica, perché più stabili nel tempo di altrecomponenti (processi, tecnologie, ruoli umani)
14
Base di dati
(accezione generica)• collezionedi dati, utilizzati per rappresentare le
informazioni di interesseper una o più applicazioni di una organizzazione.
(accezione specifica)• collezionedi dati gestita d a un DBMS
15
Sistema di gestione di basi di datiDataBase Management System — DBMS
Sistema (prodotto software) i ngrado di gestire collezioni didati che siano (anche):– grandi (di dimensioni (molto) maggiori della memoria
centraledei sistemi di calcolo utilizzati)– persistenti (con un periodo di vita indipendente dalle
singole esecuzioni dei programmi che le utilizzano)– condivise ( utilizzate da applicazioni diverse)
garantendo affidabilità (resistenza a malfunzionamenti hardwaree software) e privatezza (con una disciplina e un controllo degli accessi). Come ogni prodotto informatico, unDBMS deve essere efficiente (utilizzando al meglio le risorse dispazio e tempo del sistema) ed efficace (rendendo produttive l eattività dei suoi utilizzatori).
16
Condivisione
• Ogni organizzazione (speciese grande) è divisa in settori ocomunque svolge diverse attività. A ciascun settore o attività corrisponde un (sotto-)sistema informativo ( privato o porzione diun sistema più grande).
• Possono esistere sovrapposizioni fra i dati di interesse dei vari settori.
• Una base di dati è una risorsa integrata, condivisa fra i vari settori.
17
Condivisione (segue )
• L’integrazione e la condivisione permettono di ridurre laridondanza (evitando ripetizioni ) e, di conseguenza, lepossibiltàdi incoerenza (o inconsistenza) fra i dati.
• Poiché la condivisione non è mai completa ( o comunque nonopportuna) i DBMS prevedono meccanismi di definizione della privatezza dei dati e di limitazioni all’accesso(autorizzazioni).
• La condivisione richiede un opportuno coordinamento degli accessi: controllo della concorrenza .
18
Efficienza
• Si misura(come intutti i sistemi informatici) in termini di tempo di esecuzione (tempo di risposta) e spazio di memoria (principale e secondaria).
• I DBMS, a causa della varietà di funzioni , non sono necessariamente più efficienti dei file system.
• L’efficienza è il risultato della qualitàdel DBMS edelle applicazioni che lo utilizzano.
4
19
DBMS vs file system
• La gestione di insiemi di dati grandi e persistenti è possibile anche attraverso sistemi più semplici — gli ordinari file systemdei sistemi operativi , che permettono di realizzare anche rudimentali forme di condivisione .
• Non esiste una linea netta di separazione fra DBMS e non-DBMS.
• I DBMS estendono le funzionalità dei f i lesystem, fornendo più servizi ed i n maniera integrata .
• I file system prevedono forme di condivisione, permettendo accessi contemporanei in lettura ed esclusivi in scrittura: se è incorso un’operazionedi scrittura su un file, altri non possono accedere affattoal file. Nei DBMS, c’è maggiore flessibilità: si può accedere contemporaneamente a record diversi di uno stesso fileo addirittura allo stesso record (in lettura).
20
DBMS vs file system (2)
• Nei programmi tradizionali che accedono a file, ogni programma contiene una descrizione della struttura del file stesso, con iconseguenti rischi di incoerenza fra l e descrizioni (ripetute inciascun programma) e i file stessi.
• Nei DBMS, esiste una porzione della base di dati (il catalogo odizionario) che contiene una descrizione centralizzatadei dati,che può essere utilizzata dai vari programmi .
21
Descrizioni dei dati nei DBMS
• Esistono descrizioni e rappresentazioni dei dati a livelli diversi,che permettono l’indipendenza dei dati dalla rappresentazione fisica: i programmi fanno riferimento alla struttura a livello più alto, e le rappresentazioni sottostanti possono essere modificate senza necessitàdi modifica dei programmi.
• Precisiamo attraverso il concetto di modello dei dati.
22
Modello dei dati
• insiemedi costrutti utilizzati per organizzare i dati di interesse edescriverne la dinamica
• componente fondamentale: meccanismi di strutturazione (ocostruttori di tipo)
• comenei linguaggi di programmazione esistono meccanismi che permettono di definire nuovi tipi , così ogni modello dei dati prevede alcuni costruttori
• ad esempio, il modello relazionaleprevede il costruttore relazione, che permette di definire insiemi di record omogenei
23
Tabelle: rappresentazione di relazioni
CORSI Corso Docente AulaBasi di dati Rossi DS3Sistemi Neri N3Reti Bruni N3Controlli Bruni G
AULE Nome Edificio PianoDS1 Ex-OMI TerraN3 Ex-OMI TerraG Pincherle Primo
24
Schemi e istanze
In ogni base di dati esistono:• lo schema, sostanzialmente invariante nel tempo, che ne
descrive l a struttura ( aspetto intensionale);nell’esempio, le intestazioni delle tabelle
• l’istanza, costituita dai valori attuali, che possono cambiare moltoe molto rapidamente ( aspetto estensionale);nell’esempio, il “corpo” di ciascuna tabella
5
25
Due tipi (principali) di modelli
• modelli logici : utilizzati nei DBMS esistenti per l’organizzazionedei dati; ad essi fanno riferimento i programmi; sono indipendenti dalle strutture fisiche;esempi: relazionale, reticolare, gerarchico, a oggetti
• modelli concettuali: permettono di rappresentare i dati i n modo indipendente da ogni sistema, cercando di descrivere i concettidel mondo reale; sono utilizzati nelle fasi preliminari diprogettazione; il più notoè il modello Entity-Relationship
26
Architettura standard (ANSI/SPARC)a tre livelli per DBMS
BD
Schema logico
Schemaesterno
Schema interno
Schemaesterno
Schemaesterno
utenteutente
utenteutente utente
27
Architettura ANSI/SPARC: schemi
schema logico : descrizione dell’intera base di dati nel modello logico “principale” del DBMS
schema esterno: descrizione di parte della base di dati in un modello logico (“viste” parziali, derivate, anche in modelli diversi)
schema fisico : rappresentazione dello schema logico per mezzodi strutture fisiche di memorizzazione .
28
Una vista
CorsiCorso Docente AulaBasi di dati Rossi DS3Sistemi Neri N3Reti Bruni N3Controlli Bruni G
AuleNome Edificio PianoDS1 Ex-OMI TerraN3 Ex-OMI TerraG Pincherle Primo
CorsiSediCorso Aula Edificio PianoSistemi N3 Ex-OMI TerraReti N3 Ex-OMI TerraControlli G Pincherle Primo
29
Indipendenza dei dati
conseguenza della articolazione in livelli:l’accesso avviene solo tramite il livello esterno (che può coinciderecon il livello logico); due forme:
fisica: il livello logico e quello esterno sono indipendenti daquello fisico; una relazione è utilizzata nello stesso modo qualunque sia l a sua realizzazione fisica (che può anche cambiare nel tempo senza che debbano essere modificate le forme di utilizzo)
logica: il livello esterno è indipendente da quello logico – aggiunte o modifiche alle viste non richiedono modificheal
livello logico;– modifiche allo schema logico che lascino inalterato lo
schema esterno sono trasparenti
30
Linguaggi per basi di dati
• Un altro contributo all’efficacia: disponibilità di vari linguaggi einterfacce diverse.L’accesso ai dati può avvenire1. con linguaggi testuali interattivi2. con comandi (come quelli del linguaggio interattivo) immersi
in un linguaggio ospite (Pascal, C, Java, Cobol , etc.) 3. con comandi (come quelli del linguaggio interattivo) immersi
in un linguaggio ad hoc, con anche altre funzionalità (p.es. per grafici o stampe strutturate), anche con l’ausilio distrumenti di sviluppo (p. es. per lagestione di maschere)
4. con interfacce amichevoli (senza linguaggio testuale)
6
31
SQL, un linguaggio interattivo
SELECT Corso, Aula, PianoFROM Aule, CorsiWHERE Nome = AulaAND Piano="Terra"
Corso Aula PianoReti N3 TerraSistemi N3 Terra
32
SQL immerso in Pascal(o altro linguaggio ad alto livello)
write('nome della citta''?'); readln(citta); EXEC SQL DECLARE P CURSOR FOR
SELECT NOME, REDDITOFROM PERSONEWHERE CITTA = :citta;
EXEC SQL OPEN P ; EXEC SQL FETCH P INTO :nome, :reddito;while SQLCODE = 0 do begin
write('nome della persona:', nome, 'aumento?');readln(aumento);EXEC SQL UPDATE PERSONE SET REDDITO = REDDITO + :aumento
WHERE CURRENT OF PEXEC SQL FETCH P INTO :nome, :reddito
end;EXEC SQL CLOSE CURSOR P
33
SQL immerso in linguaggio ad hoc (Oracle PL/SQL)
declare Stip number;begin
select Stipendio into Stipfrom Impiegatowhere Matricola = '575488'for update of Stipendio;if Stip> 30 then
updateImpiegato set Stipendio = Stipendio * 1.1 where Matricola= '575488';else
updateImpiegato set Stipendio = Stipendio * 1.15 where Matricola= '575488';end if;commit ;
exceptionwhen no_data_found theninsert into Errorivalues('Non esiste la matricola specificata',sysdate);
end;
34
Interazione non testuale (in Access)
35
Una distinzione terminologica(separazione fra dati e programmi)
data definition language(DDL) : per la definizione di schemi (logici, esterni , fisici) e altreoperazioni generali;
data manipulation language (DML) : per l’interrogazionee l’aggiornamento di ( istanzedi) basi di dati.
36
Personaggi e interpreti
• progettisti e realizzatori di DBMS• progettisti della base di dati e amministratori della base di dati
(DBA)• progettisti e programmatori di applicazioni • utenti
– utenti finali (terminalisti): eseguono applicazioni predefinite(transazioni)
– utenti casuali: eseguono operazioni non previste a priori,usando linguaggi interattivi
7
37
Database administrator (DBA)
• Persona ogruppo di persone responsabiledel controllo centralizzato e della gestione del sistema, delle prestazioni ,dell’affidabilità, delle autorizzazioni .
• Le funzioni del DBA includono anche (parte di) quelle diprogettazione.
38
Transazioni
• Programmi che realizzano attività frequenti e predefinite, con poche eccezioni , previste a priori.
• Esempi:– versamento presso uno presso sportello bancario – emissione di certificato anagrafico – dichiarazione presso l’ufficiodi stato civile – prenotazione aerea
• Le transazioni sono di solito realizzate con programmi inlinguaggio ospite (tradizionaleo ad hoc).
• N. B.: il termine transazione ha un’altra accezione, più specifica: sequenza indivisibile di operazioni (o vengono eseguite tutte o nessuna).
39
Vantaggi e svantaggi dei DBMS
Pro• dati come risorsa comune, base di dati come modello della
realtà • gestione centralizzata con possibilità di standardizzazione ed
“economiadi scala”• disponibilità di servizi integrati • riduzionedi ridondanze e inconsistenze • indipendenza dei dati (favorisce lo sviluppo e la manutenzione
delle applicazioni )Contro• costo dei prodotti e della transizione verso di essi• non scorporabilità delle funzionalità (con riduzione di efficienza)
1
Il modello relazionale: strutture e vincoli
2
I modelli logici dei dati
• Tradizionalmente, esistono tre modelli logici: – gerarchico– reticolare– relazionale
• I modelli gerarchico e reticolare sono più vicini alle strutture fisiche di memorizzazione, mentre il modello relazionale è più astratto: – nel modello relazionale si rappresentanosolo valori —
anche i riferimenti fra dati in strutture(relazioni ) diverse sono rappresentati per mezzodei valori stessi;
– nei modelli gerarchico e reticolare si utilizzano riferimenti espliciti (puntatori) fra record.
• Più recentemente, è stato introdotto il modello a oggetti
3
Il modello relazionale
• Proposto da E. F. Codd nel 1970 per favorire l’indipendenza dei dati e reso disponibile come modello logico in DBMS reali nel1981 (non è facile implementare l’indipendenzacon efficienza e affidabilità!).
• Si basa sul concetto matematico di relazione (con una variante).
• Le relazioni hanno una rappresentazione naturale per mezzo di tabelle.
4
Relazione: tre accezioni
• relazione matematica : come nella teoria degli insiemi ; • relazionesecondo il modello relazionale dei dati ;• relazione (dall’inglese relationship) che rappresenta una classe
di fatti — una relazione matematica fra due entità, nel modello Entity-Relationship ; talvolta tradottocon associazione o correlazione.
5
Relazione matematica
• D1, D2, …, Dn (n insiemi anche non distinti) • il prodotto cartesianoD1×D2×…×Dn, è l’insieme di tutte le n-uple
ordinate (d1 , d2, …, dn) tali che d1∈D1, d2 ∈ D2, …, dn ∈ Dn. • una relazione matematica suD1, D2, …, Dn è un sottoinsieme
del prodotto cartesianoD1×D2×…×Dn.• D1, D2, …, Dn sono i domini della relazione. Una relazione su n
domini ha grado n .• il numero di n-uple è la cardinalità della relazione. Nelle
applicazioni reali, la cardinalità è sempre finita .
6
Relazione matematica, esempio
• D1={a,b}• D2={x,y,z}• prodotto cartesiano D1 × D2
• una relazione r ⊆ D1 × D2
a xa ya zb xb yb z
a xa zb yb z
2
7
Relazione matematica, proprietà
• In base alle definizione, una relazione matematicaè un insiemedi n-uple ordinate:
(d1, d2, …, dn) tali che d1∈D1, d2 ∈ D2, …, dn ∈ Dn
• una relazione è un insieme ; quindi : – non è definito alcun ordinamento frale n-uple; – le n- uple di una relazione sono distinte l’una dall’altra;
• un n-upleè al proprio interno ordinata: l’ i-esimo valore di ciascuna proviene dall’ i -esimo dominio; è cioè definito un ordinamento fra i domini.
8
Relazione matematica, esempio
Partite ⊆ string × string × integer × integer
• Ciascunodei domini ha due ruoli distinti, distinguibili attraversola posizione: il primo e il terzo dominio si riferisconoa nome e reti della squadra ospitante; il secondo e il quarto a nome e reti della squadra ospitata.
• La strutturaè posizionale
Juve Lazio 3 1Lazio Milan 2 0Juve Roma 1 2Roma Milan 0 1
9
Relazioni nel modello relazionale dei dati
– A ciascun dominio associamo un nome(attributo), unico nella relazione, che “descrive” il ruolo del dominio.
– Nella rappresentazione tabellare, gli attributi possono essere usati come intestazioni delle colonne.
– L’ordinamento fra gli attributi è irrilevante : la struttura è non posizionale
Casa Fuori RetiCasa RetiFuoriJuve Lazio 3 1Lazio Milan 2 0Juve Roma 1 2Roma Milan 0 1
10
Formalizzando
• L’associazione fra domini e attributi è definita da una funzione dom: X→D che associa a ciascun attributo un dominio.
• Una ennupla su un insieme di attributi X è una funzione che associa a ciascun attributo A in X un valore del dominio dom(A)
• Una relazione su X è un insieme di ennuple su X
11
Notazioni
• Se t è una ennupla su X e A∈X, allorat[A] (o t. A ) indica il valore di t su A .
• Nell’esempio, se t è la prima ennupla della tabellat[Fuori] = Lazio
• La stessa notazione è estesa anche ad insiemi di attributi, nel qual caso denota ennuple: t[Fuori,RetiF] è una ennupla su due attributi.
12
Tabelle e relazioni
• Una tabella rappresenta una relazionese– i valori di ciascuna colonna sono fra loro omogenei (dallo
stesso dominio)– le righe sono diverse fra loro– le intestazioni (attributi) delle colonne sono diverse tra loro
• Inoltre, in una tabella che rappresenta una relazione– l’ordinamento tra le righe è irrilevante– l’ordinamento tra le colonne è irrilevante
3
13
Il modello relazionale è basato su valori
• i riferimenti fra dati in relazioni diverse sono rappresentati per mezzodi valori dei domini che compaiono nelle ennuple.
14
studenti Matricola Cognome Nome Data di Nascita6554 Rossi Mario 5/12/19788765 Neri Paolo 3/11/19769283 Verdi Luisa 12/11/19793456 Rossi Maria 1/2/1978
corsi Codice Titolo Docente01 Analisi Neri02 Chimica Bruni04 Chimica Verdi
esami Studente Voto Corso3456 30 043456 24 029283 28 016554 26 01
15
studenti Matricola Cognome Nome Data di Nascita6554 Rossi Mario 5/12/19788765 Neri Paolo 3/11/19769283 Verdi Luisa 12/11/19793456 Rossi Maria 1/2/1978
corsi Codice Titolo Docente01 Analisi Neri02 Chimica Bruni04 Chimica Verdi
esami Studente Voto Corso30242826
16
Vantaggi della struttura basata su valori
• indipendenza dalle strutture fisiche (si potrebbe avere anchecon puntatori di alto livello) che possono cambiare anche dinamicamente
• si rappresenta solo ciò che è rilevante dal punto di vista dell’applicazione ( dell’utente); i puntatori sono meno comprensibili per l’utente finale (senza, l’utente finale vede gli stessi dati dei programmatori)
• i dati sono portabili piu' facilmenteda un sistema ad un altro• i puntatori sono direzionali Note: • i puntatori possono esistere a livello fisico • nel modello a oggetti esistono "una speciedi puntatori", ad alto
livello
17
Definizioni
Schema di relazione:un nome di relazione R con un insieme di attributi A1 ,..., An
R(A1,..., An)
Schema di base di dati:insiemedi schemi di relazione con nomi diversi:
R = {R1(X1), ..., Rn(Xn)}(Istanza di) relazione su uno schema R(X):
insieme r di ennuple su X (Istanza di) base di dati su uno schema R= {R1(X1), ..., Rn(Xn)} :
insiemedi relazioni r = {r1,..., rn} (con r i relazione su Ri)
18
Notazione
attributi: lettere iniziali dell’alfabeto, maiuscole: A , B , C , A’ , A1 , ...
insiemidi attributi: lettere finali dell’alfabeto, maiuscole: X , Y , Z , X’ , X1 , ...
giustapposizione dei nomi degli attributi: X=ABC (anziché X={A,B,C} )
unioni di insiemi : XY anziché X ∪ Y nomi di relazione: R e lettere circostanti, maiuscole, anche con
indici e pedici: R1, S, S’, ... relazione: come il nome della relazione, ma in minuscoloschema di base di dati: lettera maiuscola in grassetto R, S, ...base di dati: stesso simbolo dello schema, ma in minuscolo
4
19
Esempio
• sono possibili relazioni su unsolo attributo
studenti Matricola Cognome Nome Data di Nascita6554 Rossi Mario 5/12/19788765 Neri Paolo 3/11/19769283 Verdi Luisa 12/11/19793456 Rossi Maria 1/2/1978
Studenti lavoratori Matricola65548765
20
Strutture nidificate
"Da Filippo"Via Roma 23,Chissadove
Ricevuta 2369del 12/05/1997
3 Coperti 60002 Antipasti 120003 Primi 270002 Bistecche 36000
Totale 81000
"Da Filippo"Via Roma 23,
ChissadoveRicevuta 2456del 16/05/1997
2 Coperti 40001 Antipasti 60002 Primi 150002 Orate 500002 Caffè 3000
Totale 78000
21
Rappresentazione di strutture nidificate per mezzo di relazioni
ricevute Numero Data Totale2369 12/05/1997 810002456 16/05/1997 78000
dettaglio Numero Quantità Descrizione Importo2369 3 Coperti 60002369 2 Antipasti 120002369 3 Primi 270002369 2 Bistecche 360002456 2 Coperti 40002456 1 Antipasti 60002456 2 Primi 150002456 2 Orate 500002456 2 Caffè 3000
22
• Abbiamo rappresentato veramente tutti gli aspetti delle ricevute? • Dipende da che cosa ci interessa realmente!
– l'ordine delle righe e' rilevante?– possono esistere linee ripetute in una ricevuta?
• Sono possibili rappresentazioni diverse
23
Rappresentazione alternativa
ricevute Numero Data Totale2369 12/05/1997 810002456 16/05/1997 78000
dettaglio Numero Riga Quantità Descrizione Importo2369 1 3 Coperti 60002369 2 2 Antipasti 120002369 3 3 Primi 270002369 4 2 Bistecche 360002456 1 2 Coperti 40002456 2 1 Antipasti 60002456 3 2 Primi 150002456 4 2 Orate 500002456 5 2 Caffè 3000
24
Informazione incompleta
• ll modello relazionale impone ai dati una struttura rigida: – le informazioni sono rappresentateper mezzo di ennuple – solo alcuni formati di ennuple sono ammessi:– quelli che corrispondono agli schemi di relazione
• I dati disponibili possono non corrispondere esattamente al formato previsto, per varie ragioni .
5
25
Informazione incompleta: motivazioni
• Firenze è provincia, ma non conosciamo l'indirizzo della prefettura
• Tivoli non è provincia: non ha prefettura• Prato è “nuova” provincia: ha la prefettura?
Città Prefettura
Roma Via IV novembreFirenze
TivoliPrato
26
Tipi di valore nullo
• (almeno) tre casi differenti– valore sconosciuto: esiste un valore del dominio, ma non
è noto (Firenze) – valore inesistente: non esiste un valore del dominio(Tivoli) – valore senza informazione: non è notose esista o meno
un valore del dominio(Prato) • I DBMS non distinguono i tipi di valore nullo (e quindi
implicitamente adottano il valore senza informazione)
27
Informazione incompleta: soluzioni?
• non conviene (anche se spesso si fa) utilizzare valori ordinaridel dominio (0, stringa nulla, “99”, etc), per vari motivi : – potrebbero non esistere valori “non utilizzati” – valori “non utilizzati” potrebbero diventare significativi – in fase di utilizzo (ad esempio, nei programmi) sarebbe
necessario ogni volta tener conto del “significato” di questi valori
28
Informazione incompleta nel modello relazionale
• Si adotta una tecnica rudimentale ma efficace:– valore nullo: denota l’assenzadi un valoredel dominio (e
non è un valore del dominio) • Formalmente, è sufficiente estendere il concetto di ennupla:
t[A], per ogni attributo A, è un valore del dominio dom(A) oppure il valore nullo NULL
• Si possono (e debbono) imporre restrizioni sulla presenza di valori nulli
29
Troppi valori nulli!
Studenti Matricola Cognome Nome Nascita276545 Rossi Maria NULL
NULL Neri Anna 23/04/1972NULL Verdi Fabio 12/02/1972
Esami Studente Voto Corso276545 28 01
NULL 27 NULL
200768 24 NULL
Corsi Codice Titolo Docente01 Analisi Giani03 NULL NULL
NULL Chimica Belli
30
Vincoli di integrità
• Esistono istanzedi basi di dati che, pur sintatticamente corrette, non rappresentano informazioni possibili per l’applicazione di interesse.
Studenti Matricola Cognome Nome Nascita 276545 Rossi Maria 23/04/1968 276545 Neri Anna 23/04/1972 788854 Verdi Fabio 12/02/1972
Esami Studente Voto Lode Corso 276545 28 e lode 01 276545 32 02 788854 23 03 200768 30 e lode 05
Corsi Codice Titolo Docente
01 Analisi Giani03 NULL NULL
02 Chimica Belli
6
31
Vincolo di integrità
• Definizione– proprietà che deve essere soddisfatta dalle istanze che
rappresentano informazioni corrette per l’applicazione ogni vincolo può essere vistocome una funzione booleana(o un predicato) che associaad ogni istanza il valore vero o falso .
• Tipi di vincoli:– vincoli intrarelazionali; casi particolari:
• vincoli su valori (o di dominio) • vincoli di ennupla
– vincoli interrelazionali
32
Vincoli di integrità, motivazioni
• risultano utili al fine di descrivere la realtà di interesse in modo più accurato di quanto le strutture permettano;
• forniscono un contributo verso la “qualità dei dati” • costituiscono uno strumento di ausilio alla progettazione
(vedremo la “normalizzazione”) • sono utilizzati dal sistema nella scelta della strategia di
esecuzione delle interrogazioni
Nota: • non tutte le proprietà di interesse sono rappresentabili per
mezzodi vincoli esprimibili direttamente
33
Vincoli di ennupla
• Esprimono condizioni sui valori di ciascuna ennupla, indipendentemente dalle altre ennuple.
• Una possibile sintassi: espressione booleana (con AND, OR e NOT) di atomi che confrontano valori di attributo o espressioni aritmetiche su di essi.
• Un vincolodi ennupla è un vincolo di dominio se coinvolge unsolo attributo
• Esempi:(Voto ≥18) AND (Voto ≤30)
(Voto =30) OR NOT (Lode = “e lode”)
Lordo= (Ritenute + Netto)
34
Identificazione delle ennuple
• il numero di matricola identifica gli studenti :– non ci sono due ennuplecon lo stesso valore sull’attributo
Matricola • i dati anagrafici identificano gli studenti:
– non ci sono due ennuple uguali su tutti e tre gli attributi Cognome, Nome e Data di Nascita
Matricola Cognome Nome Corso Nascita6554 Rossi Mario Informatica 5/12/19788765 Rossi Mario Informatica 3/11/19764723 Verdi Laura Meccanica 10/7/19799283 Verdi Mario Informatica 3/11/19763456 Rossi Laura Meccanica 5/12/1978
35
Vincoli di chiave
• chiave:– insiemedi attributi che identificano univocamente le ennuple
di una relazione• più precisamente :
– un insieme K di attributi è superchiave per una relazione r se r non contiene due ennuple distinte t1 e t2 con t1[K] = t2[K]
– K è chiave per r se è una superchiave minimale (cioè non contiene un’altra superchiave) per r
36
• Matricolaè una superchiave:– contiene unsolo attributo e quindi è minimale– Matricola è una chiave
• Cognome, Nome, Nascita è un’altra chiave:– l’insieme Cognome, Nome, Nascita è superchiave– nessuno dei suoi sottoinsiemi è superchiave
Matricola Cognome Nome Corso Nascita6554 Rossi Mario Informatica 5/12/19788765 Rossi Mario Informatica 3/11/19764723 Verdi Laura Meccanica 10/7/19799283 Verdi Mario Informatica 3/11/19763456 Rossi Laura Meccanica 5/12/1978
7
37
• la relazione non contiene ennuple fra loro uguali su Cognome e Corso:– in ogni corso di studio gli studenti hanno cognomi diversi; – l’insieme { Cognome, Corso } è superchiave minimale e
quindi chiave • possiamo dire che questa proprietàè sempre soddisfatta?
– No! In generale ci possono essere in un corso di studio studenti con lo stesso cognome
Matricola Cognome Nome Corso Nascita6554 Rossi Mario Informatica 5/12/19788765 Rossi Mario Elettronica 3/11/19764723 Verdi Laura Meccanica 10/7/19799283 Verdi Mario Informatica 3/11/19763456 Rossi Laura Meccanica 5/12/1978
38
Chiavi, schemi e istanze
• i vincoli corrispondonoa proprietà del mondo reale modellato dalla basedi dati;
• quindi interessano a livellodi schema (con riferimento cioèa tutte le istanze):– ad uno schema associamo un insieme di vincoli e
consideriamo corrette (lecite, valide, ammissibili) solo le istanze che soddisfano tutti i vincoli;
– singole istanze possono soddisfare ulteriori vincoli (“per pura coincidenza”)
39
Individuazione delle chiavi
• definendo uno schema di relazione, associamo ad esso i vincolidi chiave che vogliamo siano soddisfatti dalle sue istanze(corrette)
• li individuiamo – considerando le proprietà che i dati soddisfano
nell’applicazione (il “ frammento di mondo reale di interesse”);
– notando quali insiemi di attributi permettonodi identificare univocamente le ennuple;
– e individuando i sottoinsiemi minimali di tali insiemi che conservano la capacità di identificare le ennuple.
40
Individuazione delle chiavi, esempio
• Allo schema di relazione STUDENTI(Matricola, Cognome, Nome, Corso, Nascita)
associamo i vincoli che indicano come chiavi gli insiemi di attributi Matricola e Cognome, Nome, Nascita
• La relazione
è corretta, perché soddisfa i vincoli associati allo schema.• Ne soddisfa anche altri. Ad esempio, Cognome, Corso è
chiave per essa.
Matricola Cognome Nome Corso Nascita6554 Rossi Mario Informatica 5/12/19788765 Rossi Mario Elettronica 3/11/19764723 Verdi Laura Meccanica 10/7/19799283 Verdi Mario Informatica 3/11/19763456 Rossi Laura Meccanica 5/12/1978
41
Esistenza delle chiavi
• poiché le relazioni sono insiemi , ogni relazione non può contenere ennuple distinte ma uguali fra loro:– ogni relazione ha come superchiave l’insieme degli attributi
su cui è definita; • poiché l’insieme di tutti gli attributi è una superchiave per ogni
relazione, ogni schema di relazione ha tale insieme come superchiave ;
• poiché l’insieme di attributi è finito , ogni schema di relazione ha (almeno) una chiave
42
Importanza delle chiavi
• l’esistenza delle chiavi garantisce l’accessibilitàa ciascun dato della basedi dati
• ogni singolo valore è univocamente accessibile tramite: – nome della relazione – valore della chiave – nome dell’attributo
• le chiavi sono lo strumento principale attraverso il quale vengono correlati i dati in relazioni diverse (“il modello relazionale è basato su valori”)
8
43
Chiavi e valori nulli
• In presenza di valori nulli, i valori degli attributi che formano la chiave – non permettono di identificare le ennuple come desiderato– né permettono di realizzare facilmente i riferimenti da altre
relazioni
Matricola Cognome Nome Nascita CorsoNULL Rossi Luca NULL Informatica
8765 Rossi Mario 01/05/61 Civile4856 Neri Mario NULL NULL
NULL Neri Mario 05/03/63 Civile
44
Chiave primaria
• La presenza di valori nulli nelle chiavi deve essere limitata • Soluzione pratica: per ogni relazione scegliamo una chiave (la
chiave primaria) su cui non ammettiamo valori nulli.• Notazione per la chiave primaria: gli attributi che la compongono
sono sottolineati
Matricola Cognome Nome Nascita Corso6554 Rossi Luca NULL Informatica8765 Rossi Mario 01/05/61 Civile4856 Neri Mario NULL NULL
6590 Neri Mario 05/03/63 Civile
45
Vincoli di integrità referenziale (“foreign key”)
• consentedi correlare informazioni presenti in relazioni diverse • le informazioni sono correlate attraverso valori comuni
utilizzando la natura “ value based“ del modello relazionale
46
Base di dati con vincoli di integrità referenziale
infrazioni Codice Data Vigile Prov Numero65524 3/9/1997 343 MI 3K988687635 4/12/1997 476 MI 6D556382236 4/12/1997 343 RM 7C556735632 6/1/1998 476 RM 7C556776543 5/3/1998 548 MI 6D5563
vigili Matricola Cognome Nome343 Rossi Luca476 Neri Pino548 Nicolosi Gino
automobili Prov Numero Proprietario …MI 3K9886 Nestore …MI 6D5563 Nestore …RM 7C5567 Menconi …RM 1A6673 Mussone …MI 5E7653 Marchi …
47
Vincoli di integrità referenziale (“foreign key”)
• informazioni in relazioni diverse sono correlate attraverso valori comuni
• in particolare, valori delle chiavi (primarie, di solito)• un vincolo di integrità referenziale fra un insieme di attributi X
di una relazione R1 e un’altra relazione R2 impone ai valori su X di ciascuna ennupla dell’istanza di R1 di comparire come valori della chiave (primaria) dell’istanza di R2
48
• nell’esempio, esistono vincoli di integrità referenziale fra: – l’attributoVigile della relazione INFRAZIONI e la relazione
VIGILI – gli attributi Prove Numero di INFRAZIONI e la relazione
AUTO
9
49
Base di dati che viola vincoli di integrità referenziale
infrazioni Codice Data Vigile Prov Numero 65524 3/9/1997 343 MI 3K9886 87635 4/12/1997 476 MI 6D5563 82236 4/12/1997 343 RM 7C5567 35632 6/1/1998 476 RM 7C5567 76543 5/3/1998 548 MI 6D5563
vigili Matricola Cognome Nome 343 Rossi Luca 548 Nicolosi Gino
automobili Prov Numero Proprietario … MI 3K9886 Nestore … RM 6D5563 Nestore … MI 7C5567 Menconi … RM 1A6673 Mussone … MI 5E7653 Marchi …
50
Vincoli di integrità referenziale: commenti
• I vincoli di integrità referenziale giocano un ruolo fondamentale nel concetto “modello relazionale basato su valori .”
• Sono possibili meccanismi per il supporto alla gestione dei vincoli di integrità referenziale (“azioni” da svolgere in corrispondenza a violazioni).
• In presenza di valori nulli i vincoli possono essere resi meno restrittivi • Attenzione ai vincoli su più attributi
– un vincolo di integrità referenziale fra un insieme di attributi X di una relazione R1 e un’altra relazione R2 impone che a ciascuno degli attributi in X deve corrispondere un attributo della chiave primaria K di R2:
• Sia X= A1 A2... Ap e K= B1 B2... Bp il vincolo è soddisfatto se perogni t1 in R1 senza nulli e t2 in R2 t1[ Ai]= t2[ Bi] per ogni i fra 1 e p
Algebra e Calcolo relazionale
Algebra e calcolorelazionale
(parte 1)
2
Algebra e Calcolo relazionale
Linguaggi di interrogazione per basi di datirelazionali
• Operazioni su basi di dati:
– interrogazioni (queries): “legge” dati dal base di dati
– aggiornamenti (updates): “modifica” il contenuto della base di dati• Entrambe possono essere modellate come funzioni da basi di dati a
basi di dati• Fondamenti possono essere studiati nel contesto dei linguaggi di
interrogazione:– algebra relazionale, un linguaggio “procedurale”
– calcolo relazionale, un linguaggio “dichiarativo”
– (brevemente) Datalog, un linguaggio di interrogazione più potente• Poi studieremo SQL, un linguaggio pratico (con caratteristiche
dichiarative e procedurali) per esprimere interrogazioni edaggiornamenti
3
Algebra e Calcolo relazionale
Algebra relazionale
• Una collezione di operatori– definiti su relazioni– produce relazioni come risultatoe quindi possono essere combinate per formare espressionipiù complesse
• Operatori– unione, intersezione, differenza– ridenominazione– selezione– proiezione– join (join naturale, prodotto cartesiano, theta join)
4
Algebra e Calcolo relazionale
Unione, intersezione, differenza
• Relazioni sono insiemi, quindi possiamo applicare gli operatoritra insiemi
• Tuttavia, vogliamo che il risultato siano relazioni (cioè insiemiomogenei di ennuple)
• Quindi:– È significativo applicare l’unione, intersezione e differenza
solo a coppie di relazioni definite su gli stessi attributi
5
Algebra e Calcolo relazionale
Unione
Number Surname Age7274 Robinson 377432 O'Malley 399824 Darkes 38
Number Surname Age9297 O'Malley 567432 O'Malley 399824 Darkes 38
Graduates
Managers
Number Surname Age7274 Robinson 377432 O'Malley 399824 Darkes 389297 O'Malley 56
Graduates ∪ Managers
6
Algebra e Calcolo relazionale
Intersezione
Number Surname Age7274 Robinson 377432 O'Malley 399824 Darkes 38
Number Surname Age9297 O'Malley 567432 O'Malley 399824 Darkes 38
Graduates
ManagersNumber Surname Age
7432 O'Malley 399824 Darkes 38
Graduates ∩ Managers
7
Algebra e Calcolo relazionale
Differenza
Number Surname Age7274 Robinson 377432 O'Malley 399824 Darkes 38
Number Surname Age9297 O'Malley 567432 O'Malley 399824 Darkes 38
Graduates
ManagersNumber Surname Age
7274 Robinson 37
Graduates - Managers
8
Algebra e Calcolo relazionale
Paternity ∪ Maternity ???
Father ChildAdam CainAdam Abel
Abraham IsaacAbraham Ishmael
Paternity Mother ChildEve CainEve Seth
Sarah IsaacHagar Ishmael
Maternity
Una utile ma impossibile unione
• problema: Father e Mother sono nomi differenti, ma entrambirappresentato un "Parent"
• soluzione: ridenominare gli attributi
9
Algebra e Calcolo relazionale
Ridenominazione
• operatore unario• “modifica i nomi di attributi" senza cambiare i valori• elimina le limitazioni associate con gli operatori su insiemi• notazione:
– ρY← X.(r)• esempio:
– ρParent ← Father.(Paternity)• se ci sono due o più attributi coinvolti, allora l’ordine è
significativo:
– ρLocation,Pay ← Branch,Salary.(Employees)
10
Algebra e Calcolo relazionale
Ridenominazione, esempio
Father ChildAdam CainAdam Abel
Abraham IsaacAbraham Ishmael
Paternity
Parent ChildAdam CainAdam Abel
Abraham IsaacAbraham Ishmael
ρParent ← Father.(Paternity)
11
Algebra e Calcolo relazionale
Ridenominazione e unione
Father ChildAdam CainAdam Abel
Abraham IsaacAbraham Ishmael
Paternity Mother ChildEve CainEve Seth
Sarah IsaacHagar Ishmael
Maternity
ρParent ← Father.(Paternity) ∪ ρParent ← Mother.(Maternity)
Parent ChildAdam CainAdam Abel
Abraham IsaacAbraham Ishmael
Eve CainEve Seth
Sarah IsaacHagar Ishmael
12
Algebra e Calcolo relazionale
Ridenominanzione e unione con più attributi
Surname Branch SalaryPatterson Rome 45Trumble London 53
Employees
ρLocation,Pay ← Branch,Salary (Employees) ∪ ρLocation,Pay ← Factory, Wages (Staff)
Surname Location PayPatterson Rome 45Trumble London 53Cooke Chicago 33Bush Monza 32
Surname Factory WagesCooke Chicago 33Bush monza 32
Staff
13
Algebra e Calcolo relazionale
Selezione e proiezione
• Due operatori unari, che sono ortogonali tra di loro:– selezione realizza una decomposizione “orizzontale"– Proiezione realizza una decomposizione "verticale”
A B C
A B C
Selezione
ÿ
A B C
Proiezione
ÿ
A B
14
Algebra e Calcolo relazionale
Selezione
• Produce risultati– con lo stesso schema dell’operando– con un sottoinsieme delle ennuple (che soddisfano una
condizione)• Notazione:
– σF(r)• Semantica:
– σF(r) = { t | t ∈r e t soddisfa F}
15
Algebra e Calcolo relazionale
Selezione, esempio
Surname FirstName Age SalarySmith Mary 25 2000Black Lucy 40 3000Verdi Nico 36 4500Smith Mark 40 3900
Employees
Surname FirstName Age SalarySmith Mary 25 2000Verdi Nico 36 4500
σ Age<30 ∨ Salary>4000 (Employees)
16
Algebra e Calcolo relazionale
Selezione, un altro esempio
Surname FirstName PlaceOfBirth ResidenceSmith Mary Rome MilanBlack Lucy Rome RomeVerdi Nico Florence FlorenceSmith Mark Naples Florence
Citizens
σ PlaceOfBirth=Residence (Citizens)
Surname FirstName PlaceOfBirth ResidenceBlack Lucy Rome RomeVerdi Nico Florence Florence
17
Algebra e Calcolo relazionale
Proiezione
• Produce risultati– su un sottoinsieme degli attributi dell’operando– con valori da tutte le sue ennuple
• Notazione (data una relazione r(X) e un sottoinsieme Y di X):
– πY(r)• Semantica:
– πY(r) = { t[Y] | t ∈ r }
18
Algebra e Calcolo relazionale
Proiezione, esempio
Surname FirstName Department HeadSmith Mary Sales De RossiBlack Lucy Sales De RossiVerdi Mary Personnel FoxSmith Mark Personnel Fox
Employees
Surname FirstNameSmith MaryBlack LucyVerdi MarySmith Mark
πSurname, FirstName(Employees)
19
Algebra e Calcolo relazionale
Proiezione, un altro esempio
Surname FirstName Department HeadSmith Mary Sales De RossiBlack Lucy Sales De RossiVerdi Mary Personnel FoxSmith Mark Personnel Fox
Employees
Department HeadSales De Rossi
Personnel Fox
πDepartment, Head (Employees)
20
Algebra e Calcolo relazionale
Cardinalità della proiezione
• Il risultato di una proiezione deve contenere al più tante ennuplequante sono le ennuple dell’operando
• Può contenerne di meno, se diverse ennuple “collassano"
• πY(r) contiene tante ennuple quante r se e solo se Y è unasuperchiave per r;– Questo vale anche se Y è superchiave “per caso“ (cioè non
è stata definita come superchiave nello schema, ma èsuperchiave per una specifica istanza), vediamo un esempio
21
Algebra e Calcolo relazionale
Ennuple che collassano
RegNum Surname FirstName BirthDate DegreeProg284328 Smith Luigi 29/04/59 Computing296328 Smith John 29/04/59 Computing587614 Smith Lucy 01/05/61 Engineering934856 Black Lucy 01/05/61 Fine Art965536 Black Lucy 05/03/58 Fine Art
Students
Surname DegreeProgSmith ComputingSmith EngineeringBlack Fine Art
πSurname, DegreeProg (Students)
22
Algebra e Calcolo relazionale
Ennuple che non collassano “per caso”
Students
πSurname, DegreeProg (Students) Surname DegreeProgSmith ComputingSmith EngineeringBlack Fine ArtBlack Engineering
RegNum Surname FirstName BirthDate DegreeProg296328 Smith John 29/04/59 Computing587614 Smith Lucy 01/05/61 Engineering934856 Black Lucy 01/05/61 Fine Art965536 Black Lucy 05/03/58 Engineering
23
Algebra e Calcolo relazionale
Join
• È il più caratteristico degli operatori dell’algebra relazionale• Permette di correlare dati contenuti in diverse relazioni,
confrontando i valori contenuti in esse ed utilizzando la natura“value-based” del modello relazionale
• Due sono i tipi principali di join:– join "naturale" : prende in considerazione i nomi degli
attributi– "theta" join
• Tutti e due sono denotati con il simbolo ÿ
24
Algebra e Calcolo relazionale
Il join naturale
Employee DepartmentSmith salesBlack productionWhite production
Department Headproduction Mori
sales Brown
Employee Department HeadSmith sales BrownBlack production MoriWhite production Mori
r1 r2
r1ÿ r2
25
Algebra e Calcolo relazionale
Join naturale: definizione
• r1 (X1), r2 (X2)• r1ÿ r2 (join naturale di r1 ed r2) è una relazione su X1X2
(l’unione dei due insiemi):
{ t su X1X2 | t [X1] ∈ r1 e t [X2] ∈ r2 }
o, equivalentemente
{ t su X1X2 | esiste t1 ∈ r1 e t2 ∈ r2 con t [X1] = t1 e t [X2] = t2 }
26
Algebra e Calcolo relazionale
Join naturale: commenti
• Le ennuple nel risultato sono ottenute combinando le ennuplenegli operandi con uguali valori sugli attributi comuni
• Gli attributi comuni spesso formano una chiave di uno dei dueoperandi (ricordiamo: i riferimenti sono realizzati attraversochiavi, e noi facciamo il join per poter seguire i riferimenti)
27
Algebra e Calcolo relazionale
Un altro join naturale
Offences Code Date Officer Dept Registartion143256 25/10/1992 567 75 5694 FR987554 26/10/1992 456 75 5694 FR987557 26/10/1992 456 75 6544 XY630876 15/10/1992 456 47 6544 XY539856 12/10/1992 567 47 6544 XY
Cars Registration Dept Owner …6544 XY 75 Cordon Edouard …7122 HT 75 Cordon Edouard …5694 FR 75 Latour Hortense …6544 XY 47 Mimault Bernard …
Code Date Officer Dept Registration Owner …143256 25/10/1992 567 75 5694 FR Latour Hortense …987554 26/10/1992 456 75 5694 FR Latour Hortense …987557 26/10/1992 456 75 6544 XY Cordon Edouard …630876 15/10/1992 456 47 6544 XY Cordon Edouard …539856 12/10/1992 567 47 6544 XY Cordon Edouard …
Offencesÿ Cars
28
Algebra e Calcolo relazionale
Ancora un altro join
• Confronto con l’unione:– Gli stessi dati possono essere combinati in vari modi
Father ChildAdam CainAdam Abel
Abraham IsaacAbraham Ishmael
Paternity Mother ChildEve CainEve Seth
Sarah IsaacHagar Ishmael
Maternity
Paternityÿ Maternity
Father Child MotherAdam Cain Eve
Abraham Isaac SarahAbraham Ishmael Hagar
29
Algebra e Calcolo relazionale
I join possono essere "incompleti"
• Se una ennupla non ha una "controparte" nell’altra relazione,allora non contribuisce al join ("dangling" ennupla)
Employee DepartmentSmith salesBlack productionWhite production
Department Headproduction Moripurchasing Brown
Employee Department HeadBlack production MoriWhite production Mori
r1 r2
r1ÿ r2
30
Algebra e Calcolo relazionale
I join possono essere vuoti
• Come caso estremo, possiamo avere che nessuna ennupla hauna controparte, e tutte le ennuple sono dangling
Employee DepartmentSmith salesBlack productionWhite production
Department Headmarketing Mori
purchasing Brown
Employee Department Head
r1 r2
r1ÿ r2
31
Algebra e Calcolo relazionale
L’altro estremo
• Se ogni ennupla di un operando può essere combinata con tuttele ennuple dell’altro, allora il join ha una cardinalità che è ilprodotto delle cardinalità degli operandi
Employee ProjectSmith ABlack AWhite A
Project HeadA MoriA Brown
Employee Project HeadSmith A MoriBlack A BrownWhite A MoriSmith A BrownBlack A MoriWhite A Brown
r1 r2
r1ÿ r2
32
Algebra e Calcolo relazionale
Quante tuple ci sono in un join?
Consideriamo r1 (X1), r2 (X2)• il join ha una cardinalità tra zero ed il prodotto delle cardinalità
degli operandi:0 ≤ | r1ÿ r2 | ≤ | r1 | × | r2|
(| r | è cardinalità della relazione r)• inoltre:
– se il join è completo, allora la sua cardinalità è almeno ilmassimo tra | r1 | e | r2|
– se X1∩X2 contiene una chiave per r2, allora | r1ÿ r2 | ≤ | r1|
– se X1∩X2 è la chiave primaria per r2 e c’è un vincolo diintegrità referenziale tra X1∩X2 in r1 e tale chiave, allora| r1ÿ r2 | = | r1|
33
Algebra e Calcolo relazionale
Join esterno
• una variante del join, per mantenere tutti le informazionicontenute negli operandi
• “riempe con nulls" le ennuple che non hanno una controparte• Ci sono tre varianti:
– “sinistra": solo ennuple del primo operando sono riempitecon nulls
– “destra": solo ennuple del secondo operando sono riempitecon nulls
– "full": ennuple di tutti e due gli operando sono riempite connulls
34
Algebra e Calcolo relazionale
Join esterniEmployee Department
Smith salesBlack productionWhite production
Department Headproduction Moripurchasing Brown
Employee Department HeadSmith Sales NULL
Black production MoriWhite production Mori
r1 r2
r1ÿ LEFTr2
Employee Department HeadBlack production MoriWhite production Mori
NULL purchasing Brown
r1ÿ RIGHT r2
Employee Department HeadSmith Sales NULL
Black production MoriWhite production Mori
NULL purchasing Brown
r1ÿ FULL r2
35
Algebra e Calcolo relazionale
Join ennario
• Il join naturale è– commutativo: r1 ÿ r2 = r2 ÿ r1
– associativo: (r1 ÿ r2) ÿ r3 = r1 ÿ (r2 ÿ r3)
• Quindi possiamo scrivere join ennari senza ambiguità:r1 ÿ r2 ÿ … ÿ rn
36
Algebra e Calcolo relazionale
Join ennario, esempioEmployee Department
Smith salesBlack productionBrown marketingWhite production
Department Divisionproduction Amarketing B
purchasing B
r1 r2
Division HeadA MoriB Brown
r3
Employee Department Division HeadBlack production A MoriBrown marketing B BrownWhite production A Mori
r1ÿ r2ÿ r3
37
Algebra e Calcolo relazionale
Prodotto cartesiano
• Il join naturale è definito anche quando gli operandi non hannoattributi in comune
• In questo caso nessuna condizione è imposta sulle ennuple, equindi il risultato contiene ennuple ottenute combinando leennuple degli operandi in tutti I modi possibili
38
Algebra e Calcolo relazionale
Prodotto cartesiano: esempio
Employee ProjectSmith ABlack ABlack B
Code NameA VenusB Mars
Employee Project Code NameSmith A A VenusBlack A A VenusBlack B A VenusSmith A B MarsBlack A B MarsBlack B B Mars
Employees Projects
Employesÿ Projects
39
Algebra e Calcolo relazionale
Theta-join
• In molti casi, il prodotto cartesiano è significativo solo se seguitoda una selezione:– a tale scopo è stato introdotto il theta-join che è un
operatore derivator1 ÿ F r2 = σF(r1 ÿ r2)
– se F è una congiunzione di uguaglianze, allora abbiamo unequi-join
40
Algebra e Calcolo relazionale
Equi-join: esempio
Employee ProjectSmith ABlack ABlack B
Code NameA VenusB Mars
Employee Project Code NameSmith A A VenusBlack A A VenusBlack B B Mars
Employees Projects
Employesÿ Project=Code Projects
41
Algebra e Calcolo relazionale
Interrogazioni
• Una interrogazione è una funzione da instanze di basi di dati arelazioni
• Le interrogazioni sono definite usando l’algebra relazionalemediante espressioni su relazioni
42
Algebra e Calcolo relazionale
Una base di dati per gli esempi
Number Name Age Salary101 Mary Smith 34 40103 Mary Bianchi 23 35104 Luigi Neri 38 61105 Nico Bini 44 38210 Marco Celli 49 60231 Siro Bisi 50 60252 Nico Bini 44 70301 Steve Smith 34 70375 Mary Smith 50 65
Employees
Head Employee210 101210 103210 104231 105301 210301 231375 252
Supervision
43
Algebra e Calcolo relazionale
Esempio 1
• Trova il numero, nome ed eta’ degli impiegati che guadagnanopiù di 40 mila.
Number Name Age104 Luigi Neri 38210 Marco Celli 49231 Siro Bisi 50252 Nico Bini 44301 Steve Smith 34375 Mary Smith 50
44
Algebra e Calcolo relazionale
Esempio 2
• Trova le matricole dei capi degli impiegati che guadagnano piùdi 40 mila
Head210301375
45
Algebra e Calcolo relazionale
Esempio 3
• Trova nome e stipendio dei capi degli impiegati cheguadagnano più di 40 mila
NameH SalaryHMarco Celli 60Steve Smith 70Mary Smith 65
46
Algebra e Calcolo relazionale
Esempio 4
• Trova gli impiegati che guadagnano più del rispettivo capo,mostrando matricola, nome e stipendio di ciascuno di essi e delcapo
Number Name Salary NumberH NameH SalaryH104 Luigi Neri 61 210 Marco Celli 60252 Nico Bini 70 375 Mary Smith 65
47
Algebra e Calcolo relazionale
Esempio 5
• Trova matricola e nome dei capi i cui impiegati guadagnano tuttipiù di 40 mila
• Applica la doppia negazione: trova i capi per i quali non vi siaalcun impiegato con stipendio non superiore a 40 mila
Number Name301 Steve Smith375 Mary Smith
48
Algebra e Calcolo relazionale
Equivalenza
• L’algebra relazionale, in modo analogo ad altri strumenti formaliconsente di formulare espressioni fra loro equivalenti
• Nel contesto dei numeri reali e agli operatori di addizione emoltiplicazione, vale l’equivalenza
x × (y + z) ≡ x × y + x × z
• Nell’algebra relazionale possiamo dare una definizione analogafacendo attenzione al fatto che l’equivalenza può essereassoluta, oppure dipendere dallo schema– E1 ≡R E2 se E1(r) = E2(r), per ogni istanza r di R
– E1 ≡ E2 se E1 ≡R E2 per ogni schema R
49
Algebra e Calcolo relazionale
Tipi di equivalenze
• L’equivalenza relativa allo schema è: E1 ≡R E2
• L’equivalenza assoluta è: E1 ≡ E2
La distinzione è importante poiché gli schemi degli operandi non vengono
esplicitati nelle espressioni ed il comportamento può variare a secondo
degli attributi negli schemi
Es. eq assoluta (sempre valida)
π AB (σ A > 0 (R)) ≡ σA > 0 (πAB(R))
Es. eq relativa (valida se e solo se in R l’intersezione fra gli attributi di R1e R2 è pari ad A)
π AB (R1) ÿ π AC (R2) ≡R π ABC (R1 ÿ R2)
50
Algebra e Calcolo relazionale
Motivazioni
• L’equivalenze è importante dal punto di vista applicativo, nellafase di esecuzione delle interrogazioni per motivi diottimizzazione.
• Data una certa interrogazione, questa viene trasformata in unaequivalente, ma che richiede meno tempo di esecuzione
• In particolare sono interessanti le trasformazioni che riducono ledimensioni dei risultati intermedi e quelle che preparanoall’applicazione di una trasformazione che riduce le dimensionidel risultato intermedio
51
Algebra e Calcolo relazionale
Trasformazioni
1. Atomizzazione delle selezioni
σ F1 ∧ F2 (E) ≡ σ F1 (σ F2 (E))
2. Idempotenza della proiezione
π X (E) ≡ π X (π XY (E))
3. Anticipazione delle selezione rispetto al join
σ F (E1 ÿ E2) ≡ E1 ÿ σ F (E2)
se la condizione F è riferita solo ad attributi della sottoespressione E2
52
Algebra e Calcolo relazionale
Trasformazioni (2)
4. Anticipazione della proiezione rispetto al join
π X1Y2 (E1 ÿ E2) ≡ E1 ÿ π Y2 (E2)
siano E1 ed E2definite su X1 e X2; se Y2 ⊆ X2 e Y2 ⊇X1 ∩ X2
(cioè gli attributi in X2 – Y2 non sono coinvolti nel join) allora vale
l’equivalenza
5. Inglobamento di una selezione in un prodotto cartesiano aformare un join
σ F (E1 ÿ E2) ≡ E1 ÿ F E2
53
Algebra e Calcolo relazionale
Trasformazioni (3)
6. Distributività della selezione rispetto all’unione
σ F (E1 ∪ E2) ≡ σ F (E1) ∪ σ F (E2)
7. Distributività della selezione rispetto differenza
σ F (E1 - E2) ≡ σ F (E1) - σ F (E2)
8. Distributività della proiezione rispetto all’unione
π X (E1 ∪ E2) ≡ π X (E1) ∪ π X (E2)
Si noti che la proiezione non è distributiva rispetto alla differenza
54
Algebra e Calcolo relazionale
Trasformazioni (4)
Altre trasformazioni si basano sulla corrispondenza fra gli operatoriinsiemistici e le selezioni complesse
9. σ F1 ∨ F2 (R) ≡ σ F1 (R) ∪ σ F2 (R)
10. σ F1 ∧ F2 (R) ≡ σ F1 (R) ∩ σ F2 (R) ≡ σ F1 (R) ÿ σ F2 (R)
11. σ F1 ∧ ¬(F2) (R) ≡ σ F1 (R) - σ F2 (R)
C’è anche la proprietà commutativa e associativa di tutti glioperatori binari esclusa la differenza e la proprietà distributiva deljoin rispetto all’unione
12. E ÿ (E1 ∪ E2) ≡ E ÿ E1 ∪ (E ÿ E2)
55
Algebra e Calcolo relazionale
Esempio
• Trova i numeri di matricola dei capi di impigati con meno di 30anni.
π Capo (σ Matr=Imp ∧ Età<30 (Impiegatiÿ Supervisione))
Regola 1, spezziamo la selezione
π Capo (σ Matr=Imp (σ Età<30 (Impiegatiÿ Supervisione)))
Regola 5 per selezione esterna e Regola 3 per altra selezione
π Capo (σ Età<30 (Impiegati)ÿ Matr=Imp Supervisione)
Regola 4 elimina attributi inutili al primo membro
π Capo (π Matr (σ Età<30 (Impiegati))ÿ Matr=Imp Supervisione)
56
Algebra e Calcolo relazionale
Algebra con i valori nulli
• σ Age>30 (People)• quali ennuple appartengono al risultato?• la prima si, la seconda no e la terza?
Name Age SalaryAldo 35 15
Andrea 27 21Maria NULL 42
People
Algebra e Calcolo relazionale
Algebra e calcolorelazionale
(parte 2)
2
Algebra e Calcolo relazionale
Algebra e valori nulli
• σ Età>30 (Persone)
• Quali ennuple compaiono nel risultato?
• La prima sì, la seconda no; e la terza?
Persone Nome Età Reddito
Aldo 35 15Andrea 27 21Maria NULL 42
3
Algebra e Calcolo relazionale
Una logica a tre valori
• Vero, Falso, Sconosciuto(U)• Tabelle di verità:
• Una selezione produce come risultato le ennuple per cui ilpredicato di selezione è vero
• In molti casi la logica a tre valori produce un risultato “sensato,“in altri no
notF VU UV F
or F U VF F U VU U U VV V V V
and F U VF F F FU F U UV F U V
4
Algebra e Calcolo relazionale
Un risultato non desiderabile
σ Età>30 (Persone) ∪ σ Età≤30 (Persone) ≠ Persone
• Perché? Perché le selezioni vengono valutate separatamente!
• Ma anche
σ Età>30 ∨ Età≤30 (Persone) ≠ Persone
• Perché? Perché anche le condizioni atomiche vengono valutate
separatamente!
5
Algebra e Calcolo relazionale
Soluzione
• Trattare il valore nullo "sintatticamente," con condizioniatomiche specifiche:
A IS NULL
A IS NOT NULL
• A questo punto:
σ Età>30 (Persone) ∪ σ Età≤30 (Persone) ∪ σ Età IS NULL (Persone) =
σ Età>30 ∨ Età≤30 ∨ Età IS NULL (Persone) = Persone
6
Algebra e Calcolo relazionale
Viste (relazioni derivate)
• Possono esistere rappresentazioni diverse per gli stessi dati(cfr. architettura ANSI/SPARC a tre livelli)
• In una base dei dati relazionale, relazioni derivate :– relazioni il cui contenuto è funzione del contenuto di altre
relazioni (definito per mezzo di interrogazioni)• In contrasto, le relazioni di base hanno un contenuto autonomo• Le relazioni derivate possono essere definite su altre derivate,
ma a condizione che la definizione non sia ricorsiva (comeinvece accade in Datalog che vedremo)
7
Algebra e Calcolo relazionale
Architettura standard (ANSI/SPARC)a tre livelli per DBMS
BD
Schema logico
Schemaesterno
Schema interno
Schemaesterno
Schemaesterno
utenteutente
utenteutente utente
8
Algebra e Calcolo relazionale
Viste virtuali e materializzate
• Due tipi di relazioni derivate:– viste materializzate : relazioni derivate memorizzate nella
base di dati;vantaggi: immediatamente disponibili per le interrogazionisvantaggi: appesantiscono gli aggiornamenti; non sonosupportate dai DBMS
– relazioni virtuali (o viste ): sono supportate dai DBMS;una interrogazione su una vista viene eseguita "ricalcolando"la vista (o quasi)
9
Algebra e Calcolo relazionale
Viste, motivazioni
• Schema esterno o vista d'utente:– ogni utente vede solo cio' che gli interessa e nel modo in cui gli
interessa, senza essere distratto dal resto– ogni utente vede solo cio' che e' autorizzato a vedere
(autorizzazioni sulle viste)• Strumento di programmazione: con le viste si puo' semplificare la
scrittura di interrogazioni; molto utile per espressioni complesse e/o consottoespressioni ripetute
• Utilizzo di programmi esistenti su schemi ristrutturati (R(ABC) vienesostuita da R1(AB) ed R2(BC). Posso usare R = R1ÿ R2). Importanteper l’integrazione dei dati proveniente da sorgenti diverse
Invece:• L'utilizzo di viste non influisce sull'efficienza delle interrogazioni (salvo
aspetti trascurabili)
10
Algebra e Calcolo relazionale
Viste, esempio
• una vista:Supervisione = π Impiegato, Direttore (Afferenza ÿ Direzione)
• un'interrogazione sulla vistaσDirettore='Leoni' (Supervisione)
• viene eseguita comeσDirettore='Leoni' (π Impiegato, Direttore (Afferenza ÿ Direzione))
AfferenzaImpiegato RepartoRossi VenditeNeri AcquistiBruni VenditeMori Personale
DirezioneReparto DirettoreAcquisti LeoniVendite FalchiPersonale Leoni
11
Algebra e Calcolo relazionale
Viste come strumento di programmazione
• Trovare gli impiegati che hanno lo stesso direttore di Rossi.
• Senza vista:π Impiegato((Afferenza ÿ Direzione) ÿ
ρImpR,RepR ← Impiegato,Reparto(σImpiegato='Rossi' (Afferenza) ÿ Direzione))
• Con la vista:π Impiegato( Supervisione ÿ
ρImpR ← Impiegato(σImpiegato='Rossi' (Supervisione)))
12
Algebra e Calcolo relazionale
Viste e aggiornamenti, attenzione
• Vogliamo inserire, nella vista, il fatto che Mori ha come direttoreLupi; come facciamo?
• Gli aggiornamenti possibili sulle viste sono limitati
AfferenzaImpiegato RepartoRossi VenditeNeri Acquisti
DirezioneReparto DirettoreAcquisti LeoniVendite Falchi
SupervisioneImpiegato DirettoreRossi FalchiNeri Leoni
13
Algebra e Calcolo relazionale
Calcolo relazionale
• Una famiglia di linguaggi dichiarativi , basati sul calcolo deipredicati del primo ordine
• Diverse versioni:– calcolo relazionale su domini– calcolo su ennuple con dichiarazioni di range
14
Algebra e Calcolo relazionale
Commenti
• Differenze rispetto al calcolo dei predicati (per chi lo conosce):– simboli di predicato
• relazioni nella base di dati• predicati "standard" predefiniti (=, >, ...)
– non ci sono "simboli di funzione"– interessano (quasi) solo "formule aperte“ (con variabili
libere)– utilizziamo notazione non posizionale
15
Algebra e Calcolo relazionale
Calcolo su domini: sintassi e semantica
• Le espressioni hanno la forma:{ A1: x1, …, Ak: xk | f }
– f e' una formula (con connettivi booleani e quantificatori)– A1: x1, …, Ak: xk "target list":
• A1, …, Ak attributi distinti (anche non nella base di dati)• x1, …, xk variabili distinte
• Semantica: il risultato e' una relazione su A1, …, Ak che contieneennuple di valori per x1, …, xk che rendono vera la formula f
16
Algebra e Calcolo relazionale
Base di dati per gli esempi
Impiegati(Matricola,Nome, Età, Stipendio)Supervisione(Capo, Impiegato)
17
Algebra e Calcolo relazionale
Esempio 0
• Trovare matricola, nome, età e stipendio degli impiegati cheguadagnano più di 40 milioni
σStipendio>40(Impiegati)
{ Matricola: m, Nome: n, Età: e, Stipendio: s |Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) ∧ s > 40 }
18
Algebra e Calcolo relazionale
Esempio 1
• Trovare matricola, nome ed età degli impiegati che guadagnanopiù di 40 milioni
πMatricola, Nome, Età(σStipendio>40(Impiegati))
{ Matricola: m, Nome: n, Età: e |∃s (Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) ∧
s > 40) }oppure più semplicemente
{ Matricola: m, Nome: n, Età: e |Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) ∧ s > 40 }
19
Algebra e Calcolo relazionale
Esempio 2
• Trovare le matricole dei capi degli impiegati che guadagnanopiù di 40 milioni
πCapo (Supervisione ÿ Impiegato=Matricola (σStipendio>40(Impiegati)))
{ Capo: c | Supervisione(Capo:c,Impiegato:m) ∧Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) ∧ s > 40 }
20
Algebra e Calcolo relazionale
Esempio 3
• Trovare nome e stipendio dei capi degli impiegati cheguadagnano più di 40 milioni
πNomeC,StipC (ρMatrC,NomeC,StipC,EtàC ← Matr,Nome,Stip,Età(Impiegati)ÿ MatrC=Capo
(Supervisione ÿ Impiegato=Matricola (σStipendio>40(Impiegati))))
{ NomeC: nc, StipC: sc |Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) ∧ s > 40
∧ Supervisione(Capo:c,Impiegato:m) ∧Impiegati(Matricola: c, Nome: nc, Età: ec, Stipendio: sc) }
21
Algebra e Calcolo relazionale
Esempio 4
• Trovare gli impiegati che guadagnano più del rispettivo capo,mostrando matricola, nome e stipendio di ciascuno di essi e delcapo
πMatr,Nome,Stip,MatrC,NomeC,StipC
(σStipendio>StipC(ρMatrC,NomeC,StipC,EtàC ← Matr,Nome,Stip,Età(Impiegati)ÿ MatrC=Capo
(Supervisione ÿ Impiegato=Matricola ( (Impiegati))))
{ Matr: m, Nome: n, Stip: s, MatrC: c, NomeC: nc, StipC: sc |Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s)
∧ Supervisione(Capo:c,Impiegato:m) ∧Impiegati(Matricola: c, Nome: nc, Età: ec, Stipendio: sc) ∧
s > sc}
22
Algebra e Calcolo relazionale
Esempio 5
• Trovare matricola e nome dei capi i cui impiegati guadagnanotutti più di 40 milioni.
πMatricola,Nome (Impiegati ÿ Matricola=Capo
(πCapo (Supervisione) -πCapo (Supervisione ÿ Impiegato=Matricola (σStipendio ≤ 40(Impiegati))))
{Matricola: c, Nome: n |Impiegati(Matricola: c, Nome: n, Età: e, Stipendio: s) ∧
Supervisione(Capo:c, Impiegato:m) ∧¬ ∃m'(∃n'(∃e'(∃s'(Impiegati(Matr: c', Nome: n', Età: e', Stip: s') ∧
Supervisione(Capo:c, Impiegato:m') ∧ s' ≤ 40}
23
Algebra e Calcolo relazionale
Quantificatori esistenziali o universali?
• Sono intercambiabili, per le leggi di De Morgan:
{Matricola: c, Nome: n |Impiegati(Matricola: c, Nome: n, Età: e, Stipendio: s) ∧
Supervisione(Capo:c, Impiegato:m) ∧¬ ∃m'(∃n'(∃e'(∃s'(Impiegati(Matr: c', Nome: n', Età: e', Stip: s') ∧
Supervisione(Capo:c, Impiegato:m') ∧ s' ≤ 40}
{Matricola: c, Nome: n |Impiegati(Matricola: c, Nome: n, Età: e, Stipendio: s) ∧
Supervisione(Capo:c, Impiegato:m) ∧∀m'(∀n'(∀e'(∀s'(¬(Impiegati(Matr:c', Nome:n', Età:e', Stip:s') ∧
Supervisione(Capo:c, Impiegato:m')) ∨ s' > 40}
24
Algebra e Calcolo relazionale
Calcolo su domini, discussione
• Pregi:– dichiaratività
• Difetti:– "verbosità": tante variabili!– espressioni senza senso:
{ A: x | ¬ R(A: x) }{ A: x, B: y | R(A: x) }
{ A: x, B: y | R(A: x) ∧ y=y }queste espressioni sono "dipendenti dal dominio " evorremmo evitarle;nell'algebra espressioni come queste non sono formulabili:l'algebra è indipendente dal dominio
25
Algebra e Calcolo relazionale
Calcolo e algebra
• Calcolo e algebra sono "equivalenti "– per ogni espressione del calcolo relazionale che sia
indipendente dal dominio esiste un'espressione dell'algebrarelazionale equivalente a essa
– per ogni espressione dell'algebra relazionale esisteun'espressione del calcolo relazionale equivalente a essa (edi conseguenza indipendente dal dominio)
– non si considerano i valori nulli
26
Algebra e Calcolo relazionale
Calcolo su ennuplecon dichiarazioni di range
• Per superare le limitazioni del calcolo su domini:– dobbiamo "ridurre" le variabili; un buon modo: una variabile
per ciascuna ennupla– far si' che i valori provengano dalla base di dati
• Il calcolo su ennuple con dichiarazioni di range risponde adentrambe le esigenze
27
Algebra e Calcolo relazionale
Calcolo su ennuplecon dichiarazioni di range, sintassi
• Le espressioni hanno la forma:{ TargetList | RangeList | Formula }
– RangeList elenca le variabili libere della Formula ognunacon il relativo campo di variabilità (una relazione)
– TargetList ha elementi del tipo Y: x.Z (oppure x.Z o anchex.*) (con Y e Z attributi ed x variabile)
– Formula ha:
• atomi di confronto x.A ϑ c, x.A ϑ y.B• connettivi• quantificatori che associano un range alle variabili
∃x(R)(...)∀x(R)(...)
28
Algebra e Calcolo relazionale
Esempio 0
• Trovare matricola, nome, età e stipendio degli impiegati cheguadagnano più di 40 milioni
σStipendio>40(Impiegati)
{ Matricola: m, Nome: n, Età: e, Stipendio: s |Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) ∧ s > 40 }
{ i.* | i(Impiegati) | i.Stipendio > 40 }
29
Algebra e Calcolo relazionale
Esempio 1
• Trovare matricola, nome ed età degli impiegati che guadagnanopiù di 40 milioni
πMatricola, Nome, Età(σStipendio>40(Impiegati))
{ Matricola: m, Nome: n, Età: e |Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) ∧ s > 40 }
{ i.(Matricola,Nome,Età) | i(Impiegati) |i.Stipendio > 40 }
30
Algebra e Calcolo relazionale
Esempio 2
• Trovare le matricole dei capi degli impiegati che guadagnanopiù di 40 milioni
πCapo (Supervisione ÿ Impiegato=Matricola (σStipendio>40(Impiegati)))
{ Capo: c | Supervisione(Capo:c,Impiegato:m) ∧Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) ∧ s > 40 }
{ s.Capo | i(Impiegati) , s(Supervisione) |
i.Matricola=s.Impiegato ∧ i.Stipendio > 40 }
31
Algebra e Calcolo relazionale
Esempio 3
• Trovare nome e stipendio dei capi degli impiegati cheguadagnano più di 40 milioni
πNomeC,StipC (ρMatrC,NomeC,StipC,EtàC ← Matr,Nome,Stip,Età(Impiegati) ÿ MatrC=Capo(Supervisione ÿ Impiegato=Matricola (σStipendio>40(Impiegati))))
{ NomeC: nc, StipC: sc |Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) ∧ s > 40
Supervisione(Capo:c,Impiegato:m) ∧Impiegati(Matricola: c, Nome: nc, Età: ec, Stipendio: sc) }
{ NomeC,StipC: i'.(Nome,Stip) |i'(Impiegati), s(Supervisione), i(Impiegati) |
i'.Matricola=s.Capo ∧ i.Matricola=s.Impiegato ∧ i.Stipendio > 40 }
32
Algebra e Calcolo relazionale
Esempio 4
• Trovare gli impiegati che guadagnano più del rispettivo capo,mostrando matricola, nome e stipendio di ciascuno di essi e delcapo
{ Matr: m, Nome: n, Stip: s, NomeC: nc, StipC: sc |Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s)
Supervisione(Capo:c,Impiegato:m) ∧Impiegati(Matricola: c, Nome: nc, Età: ec, Stipendio: sc) ∧
s > sc}
{ i.(Nome,Matr,Stip), NomeC,MatrC,StipC: i'.(Nome,Matr,Stip) |
i'(Impiegati), s(Supervisione), i(Impiegati) |
i'.Matricola=s.Capo ∧ i.Matricola=s.Impiegato ∧ i.Stipendio > i'.Stipendio }
33
Algebra e Calcolo relazionale
Esempio 5
• Trovare matricola e nome dei capi i cui impiegati guadagnanotutti più di 40 milioni.
{Matricola: c, Nome: n |Impiegati(Matricola: c, Nome: n, Età: e, Stipendio: s) ∧
Supervisione(Capo:c, Impiegato:m) ∧¬ ∃m'(∃n'(∃e'(∃s'(Impiegati(Matr: c', Nome: n', Età: e', Stip: s') ∧
Supervisione(Capo:c, Impiegato:m') ∧ s' ≤ 40}
{ i.(Matricola, Nome) | s(Supervisione), i(Impiegati) |
i.Matricola=s.Capo ∧ ¬(∃i'(Impiegati)(∃s'(Supervisione)(s.Capo=s'.Capo ∧ s'.Impiegato=i'.Matricola ∧ i'.Stipendio ≤ 40))) }
34
Algebra e Calcolo relazionale
Attenzione!
• Il calcolo su ennuple con dichiarazioni di range non permette diesprimere alcune interrogazioni importanti, in particolare leunioni:
R1(AB) ∪ R2(AB)• Quale potrebbe essere il range per una variabile?
• Per questa ragione SQL (che è basato su questo calcolo)prevede un operatore esplicito di unione, ma non tutte leversioni prevedono intersezione e differenza
35
Algebra e Calcolo relazionale
Calcolo e algebra relazionale: limiti
• Calcolo e algebra sono sostanzialmente equivalenti: l'insieme diinterrogazioni con essi esprimibili è quindi significativo
• Ci sono però interrogazioni interessanti non esprimibili:
– calcolo di valori derivati: possiamo solo estrarre valori, noncalcolarne di nuovi; calcoli di interesse:
• a livello di ennupla o di singolo valore (conversioni di unità dimisura, calcolo di somme, differenze, etc.)
• su insiemi di ennuple (calcolo di valori aggregati: somme,medie, etc.)
le estensioni sono ragionevoli, le vedremo in SQL
– interrogazioni inerentemente ricorsive , come la chiusuratransitiva
36
Algebra e Calcolo relazionale
Chiusura transitiva, come si fa?
• Per ogni impiegato, trovare tutti i superiori.• Basterebbe il join della relazione con se stessa, previa
opportuna ridenominazione• Ma su questa:
SupervisioneCapo ImpiegatoFalchi RossiLupi NeriLeoni FalchiGalli Leoni
Superiore ImpiegatoFalchi RossiLupi NeriLeoni FalchiGalli LeoniLeoni RossiGalli FalchiGalli Rossi
37
Algebra e Calcolo relazionale
Chiusura transitiva, esempio
• Per ogni impiegato, trovare il capo ed il capo del capoπCapoC, Imp (ρCapoC,ImpC ← Capo,Imp(Supervisione) ÿ ImpC=Capo
(Supervisione)) ∪ ρCapoC,Imp← Capo,Imp(Supervisione)
• Per ogni impiegato, trovare il capo del capo del capo, il capo delcapo occorre usare un altro join
• Servono quindi due join! In generale quanti? Non c'è limite!
38
Algebra e Calcolo relazionale
Chiusura transitiva, impossibile!
• Non esiste in algebra e calcolo relazionale la possibilità diesprimere l'interrogazione che, per ogni relazione binaria, necalcoli la chiusura transitiva
• Nota: per ciascuna relazione, è possibile calcolare la chiusuratransitiva, ma con un'espressione ogni volta diversa (quanti joinservono? Non c'è limite al numero dei join
• Per ovviare a questo problema e’ stato introdotto il Datalog
39
Algebra e Calcolo relazionale
Datalog: sintassi
• Un linguaggio di programmazione logica per basi di dati derivato dalProlog
• Utilizza predicati di due tipi:– estensionali: relazioni della base di dati– intensionali: corrispondono alle viste
• Il linguaggio è basato su regole che sono utilizzate per "definire" ipredicati intensionali
• Regole:testa ← corpo
– testa è un predicato atomico (intensionale)– corpo è una congiunzione di condizioni atomiche
• Le interrogazioni sono specificate per mezzo di predicati atomici(convenzionalmente preceduti da "?")
40
Algebra e Calcolo relazionale
Esempio 1
• Trovare matricola, nome, età e stipendio degli impiegati chehanno 30 anni
{ Matricola: m, Nome: n, Età: e, Stipendio: s |Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) ∧ e= 30 }
? Impiegati(Matricola: m, Nome: n, Età: 30, Stipendio: s)
41
Algebra e Calcolo relazionale
Esempio 2
• Trovare matricola, nome, età e stipendio degli impiegati cheguadagnano più di 40 milioni
{ Matricola: m, Nome: n, Età: e, Stipendio: s |Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) ∧ s > 40 }
• Serve un predicato intensionale definito mediante regoleDatalog
ImpRicchi(Matricola: m, Nome: n, Età: e, Stipendio: s) ←Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s), s >40.
? ImpRicchi(Matricola: m, Nome: n, Età: 30, Stipendio: s)
42
Algebra e Calcolo relazionale
Esempio 3
• Trovare le matricole dei capi degli impiegati che guadagnanopiù di 40 milioni
{ Capo: c | Supervisione(Capo:c,Impiegato:m) ∧Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) ∧ s > 40 }
CapiDeiRicchi (Capo:c) ←ImpRicchi(Matricola: m, Nome: n, Età: e, Stipendio: s),Supervisione (Capo:c,Impiegato:m).
? CapiDeiRicchi (Capo:c)
43
Algebra e Calcolo relazionale
Esempio 4
• Trovare matricola e nome dei capi i cui impiegati guadagnanotutti più di 40 milioni.
• serve la negazioneCapiDiNonRicchi (Capo:c) ←
Supervisione (Capo:c,Impiegato:m),Impiegati (Matricola: m, Nome: n, Età: e, Stipendio: s) ,s ≤ 40.
CapiSoloDiRicchi (Matricola: c, Nome: n) ←Impiegati (Matricola: c, Nome: n, Età: e, Stipendio: s) ,Supervisione (Capo:c,Impiegato:m),not CapiDiNonRicchi (Capo:c).
? CapiSoloDiRicchi (Matricola: c, Nome: n)
44
Algebra e Calcolo relazionale
Esempio 5
• Per ogni impiegato, trovare tutti i superiori.
• Serve la ricorsione
Superiore (Impiegato: i, SuperCapo: c) ←Supervisione (Impiegato: i, Capo: c).
Superiore (Impiegato: i, SuperCapo: c) ←Supervisione (Impiegato: i, Capo: c'),
Superiore (Impiegato: c', SuperCapo: c).
? Superiore (Impiegato: i, SuperCapo: c)
45
Algebra e Calcolo relazionale
Datalog: semantica
• La definizione della semantica delle regole ricorsive è delicata(in particolare con la negazione)
• Potere espressivo:– Datalog non ricorsivo senza negazione è equivalente al
calcolo senza negazione e senza quantificatore universale– Datalog non ricorsivo con negazione è equivalente al calcolo
e all'algebra– Datalog ricorsivo senza negazione e calcolo sono
incomparabili– Datalog ricorsivo con negazione è più espressivo di calcolo
e algebra
SQL
SQL
2
SQL
SQL
• Structured Query Language• è un linguaggio con varie funzionalità:
– contiene sia il DDL sia il DML;• esistono varie versione dell’SQL;• vediamo gli aspetti essenziali non i dettagli• “storia”:
– prima proposta SEQUEL (IBM Reserach, 1974);– prima implementazione in SQL/DS (IBM, 1981);– dal 1983 ca., “standard di fatto”– standard (1986, poi 1989 e infine 1992) recepito in parte;– standard SQL3 di prossima approvazione
3
SQL
Domini
• Domini elementari (predefiniti)• Domini definiti dall‘utente (semplici, ma riutilizzabili)
4
SQL
Domini elementari
• Carattere: singoli caratteri o stringhe, anche di lunghezzavariabile
character [ varying ] [ ( Lunghezza ) ][ character set NomeFamigliaCaratteri ]
• Bit: singoli booleani o stringhebit [ varying ] [ ( Lunghezza ) ]
• Numerici, esatti e approssimati:numeric [( Precisione [ , Scala ) ] ]integer
float [( Precisione ) ]double precision
5
SQL
Domini elementari, 2
• Data, ora, intervalli:date
time [( Precisione ) ] [ with time zone ]timestamp [( Precisione ) ] [ with time zone ]interval UnitàDiTempo [ to UnitàDiTempo ]
6
SQL
Definizione di domini
• Istruzione CREATE DOMAIN:– definisce un dominio (semplice), utilizzabile in definizioni di
relazioni• Sintassi
create domain NomeDominio as Tipo[ Default ][ Vincoli ]
• Default (utilizzabili anche nella CREATE TABLE)default < Valore | user | null >
• Esempiocreate domain Voto as smallint default null
check ( value >=18 and value <= 30 )
7
SQL
Vincoli intrarelazionali
• not null (su singoli attributi)• unique : permette di definire chiavi; sintassi:
– per singoli attributi:unique dopo il dominio
– chiavi formate da più attributi:unique ( Attributo { , Attributo } )
• primary key : definizione della chiave primaria (una sola,implica not null ); sintassi, come per unique
• check , vedremo più avanti
8
SQL
Vincoli intrarelazionali, esempi
Nome character(20) not null,Cognome character(20) not null,unique (Cognome,Nome)
• è diverso da:
Nome character(20) not null unique,Cognome character(20) not null unique
9
SQL
Vincoli interrelazionali
• check , vedremo più avanti• references e foreign key (chiave esterna) permettono di definire
vincoli di integrità referenziale; sintassi:– per singoli attributi:
references dopo il dominio– riferimenti su più attributi:
foreign key( Attributo { , Attributo } )
references ...
• è possibile associare politiche di reazione alla violazione dei vincoli(causate da modifiche sulla tabella esterna, cioè quella cui si fariferimento)
10
SQL
Richiamo: base di daticon vincoli di integrità referenziale
infrazioni Codice Data Vigile Prov Numero65524 3/9/1997 343 MI 3K988687635 4/12/1997 476 MI 6D556382236 4/12/1997 343 RM 7C556735632 6/1/1998 476 RM 7C556776543 5/3/1998 548 MI 6D5563
vigili Matricola Cognome Nome343 Rossi Luca476 Neri Pino548 Nicolosi Gino
automobili Prov Numero Proprietario …MI 3K9886 Nestore …MI 6D5563 Nestore …RM 7C5567 Menconi …RM 1A6673 Mussone …MI 5E7653 Marchi …
11
SQL
Vincoli interrelazionali, esempio
create table Infrazioni(
Codice character(6) primary key,
Data date not null,
Vigile integer not null
references Vigile(Matricola),
Provincia character(2),
Numero character(6) ,
foreign key(Provincia, Numero) references
Automobili(Provincia, Numero)
)
Infrazioni e’ una tabella interna, Vigile e Automobili sonoesterne
12
SQL
Violazione dei vincoli
• per tutti i vincoli visti fino ad ora si assume che se violati a causadi un aggiornamento, il comando di aggiornamento vengarifiutato segnalando l’errore all’utente.
• per i vincoli di integrità referenziale, SQL permette di sceglierealtre reazioni da adottare quando viene rilevata una violazione
• la reazione è possibile solo per le operazioni sulla tabellaesterna che si (possono) propagano secondo una certa politicaverso la tabella interna
• le violazioni possibili sono causate da modifiche del valoredell’attributo riferito e dalla cancellazione di righe (es. modifichedell’attributo Provincia e cancellazione di righe da Vigile )
13
SQL
Politiche di reazione
• Specificata immediatamente dopo il vincolo di integrità consentedi associare politiche diverse ai diversi eventi (delete, update)secondo la seguente sintassi:
on < delete | update >< cascade | set null | set default |
no action >
14
SQL
Reazioni per delete
• cascade : si propagano le cancellazioni• set null : all’attributo referente viene assegnato il valore nullo
al posto del valore cancellato nella tabella• set default : all’attributo referente viene assegnato il valore
di default al posto del valore cancellato nella tabella esterna• no action : la cancellazione non viene consentita
15
SQL
Reazioni per update
• cascade : il nuovo valore valore viene propagato nell’altratabella
• set null : all’attributo referente viene assegnato il valore nulloal posto del valore modificato nella tabella
• set default : all’attributo referente viene assegnato il valoredi default al posto del valore modificato nella tabella esterna
• no action : l’azione di modifica non viene consentita
16
SQL
Modifiche degli schemi
Fornisce primitive per la manipolazione di schemi chepermettono di modificare gli schemi:
• alter domain
• alter table
• drop domain
• drop table
• ...
17
SQL
Dizionario dei Dati
• Tutti i DBMS relazionali gestiscono le descrizioni delle tabellepresenti nella basi di dati mediante una struttura relazionale,cioè mediante tabelle.
• La base di dati contiene due tipi di tabelle:– quelle contente i dati, e– quelle contenente i metadati (dati che descrivono dati), dette
il catalogo della base di dati oppure il dizionario dei dati
• I comandi di definizione e modifica dello schema manipola ildizionario dei dati
18
SQL
Definizione degli indici
• è rilevante dal punto di vista delle prestazioni• ma è a livello più basso (fisico e non logico)• non ne parliamo qui• in passato era importante perché in alcuni sistemi era l‘unico
mezzo per definire chiavi
19
SQL
SELECT, sintassi
select AttrExpr [ [as ] Alias ] { , AttrExpr [ [as ] Alias ] }from Tabella [ [as ] Alias ] { , Tabella [ [as ] Alias ] }[ where Condizione ]
• le tre parti vengono di solito chiamate
– target list– clausola from
– clausola where
• seleziona tra le righe che appartengono al prodotto cartesiano delletabelle elencate nella clausola from quelle che soddisfano lacondizione espressa nell‘argomento della clausola where
20
SQL
persone Nome Eta RedditoAndrea 27 21
Aldo 25 15Maria 55 42Anna 50 35
Filippo 26 30Luigi 50 40
Franco 60 20Olga 30 41
Sergio 85 35Luisa 75 87
maternita Madre FiglioLuisa MariaLuisa LuigiAnna OlgaAnna FilippoMaria AndreaMaria Aldo
paternita Padre FiglioSergio FrancoLuigi OlgaLuigi Filippo
Franco AndreaFranco Aldo
21
SQL
Selezione e proiezione
“Nome e reddito delle persone con meno di trenta anni”
πNome, Reddito(σEta<30(persone))
select nome, redditofrom personewhere eta < 30
22
SQL
SELECT, abbreviazioni
• data una relazione R su A e B
select *from R
• equivale (intutivamente) a
select X.A AS A, X.B AS Bfrom R Xwhere true
23
SQL
Impiegato Nome Cognome Dipart Ufficio StipendioMario Rossi Amministrazione 10 45Carlo Bianchi Produzione 20 36
Giuseppe Verdi Amministrazione 20 40Franco Neri Distribuzione 16 45Carlo Rossi Direzione 14 80
Lorenzo Lanzi Direzione 7 73Paola Borroni Amministrazione 75 40Marco Franco Produzione 20 46
Dipartimento Nome Indirizzo CittaAmministrazione Via Tito Livio Milano
Produzione P.zza Lavater TorinoDistribuzione Via Segre Roma
Direzione Via Tito Livio MilanoRicerca Via Morone Milano
24
SQL
Selezione, senza proiezione
select *
from Impiegato
where Cognome = 'Rossi’
Nome Cognome Dipart Ufficio StipendioMario Rossi Amministrazione 10 45Carlo Rossi Direzione 14 80
(σCognome=Rossi(impiegato))
25
SQL
Espressioni nella target list
select Stipendio/12 as StipendioMensile
from Impiegato
where Cognome = 'Bianchi'
StipendioMensile3.00
26
SQL
Disgiunzione
select Nome, Cognome
from Impiegato
where Dipart = 'Amministrazione' or
Dipart = 'Produzione'
Nome CognomeMario RossiCarlo Bianchi
Giuseppe VerdiPaola BorroniMarco Franco
27
SQL
Condizione complessa
select Nome
from Impiegato
where Cognome = 'Rossi' and
(Dipart = 'Amministrazione' or
Dipart = 'Produzione')
NomeMario
28
SQL
Condizione “LIKE”
“Gli impiegati che hanno un cognome che ha una 'o' in secondaposizione e finisce per 'i'.”
select *
from Impiegato
where Cognome like '_o%i'
Nome Cognome Dipart Ufficio StipendioMario Rossi Amministrazione 10 45Carlo Rossi Direzione 14 80Paola Borroni Amministrazione 75 40
29
SQL
Gestione dei valori nulli
“Gli impiegati che hanno o potrebbero avere uno stipendio minoredi 50 milioni”
select *
from Impiegato
where Stipendio < 50 or Stipendio is null
Nome Cognome Dipart Ufficio StipendioMario Rossi Amministrazione 10 45Carlo Rossi Direzione 14 80Paola Borroni Amministrazione 75 NULL
Nome Cognome Dipart Ufficio StipendioMario Rossi Amministrazione 10 45Paola Borroni Amministrazione 75 NULL
30
SQL
SELECT e algebra relazionale
select R1.A1, R2.A4from R1, R2where R1.A2 = R2.A3
• prodotto cartesiano delle relazioni nella clausola from selezionecon la condizione nella clausola where
• proiezione come nella target list
π A1,A4 (σA2=A3 (R1 ÿ R2))
31
SQL
SELECT e algebra relazionale, ancora
• possono essere necessarie ridenominazioni– nel prodotto cartesiano
– nella target list
select X.A1 AS B1, X.A2 AS B2, Y.A4 AS B3from R1 X, R2 Y, R1 Zwhere X.A2 = Y.A3 AND Y.A4 = Z.A1
ρ B1,B2,B3←A1,A2,A4 (π A1,A2,A4 (σ A2 = A3 ∧ A4 = C1(
R1 ÿ R2 ÿ ρ C1,C2 ← A1,A2 (R1))))
32
SQL
Selezione, proiezione e join“I padri di persone che guadagnano più di venti milioni”
πPadre(paternita ÿ Figlio =Nome (σReddito>20 (persone)))
select distinct padrefrom persone, paternitawhere figlio = nome and
reddito > 20
33
SQL
Proiezione, senza selezione
select Nome, Cognome
from Impiegato
Nome CognomeMario RossiCarlo Bianchi
Giuseppe VerdiFranco NeriCarlo Rossi
Lorenzo LanziPaola BorroniMarco Franco
34
SQL
Proiezione: duplicati
select Cognome
from Impiegato
CognomeRossi
BianchiVerdiNeri
RossiLanzi
BorroniFranco
select distinct Cognome
from Impiegato
CognomeRossi
BianchiVerdiNeri
LanziBorroniFranco
35
SQL
Join naturale“Padre e madre di ogni persona”
paternita ÿ maternita
select paternita.figlio, padre, madrefrom maternita, paternitawhere paternita.figlio = maternita.figlio
πFiglio,Padre,Madre(paternitaÿ Figlio = Nome (ρNome ← Figlio(maternita)))
36
SQL
Join di una relazione con se stessa
“Le persone che guadagnano più dei rispettivi padri;mostrare nome, reddito e reddito del padre”
πNome, Reddito, RP (σReddito>RP (ρNP,EP,RP ← Nome,Eta,Reddito(persone)ÿ NP=Padre
(paternita ÿ Figlio =Nome persone)))
select f.nome, f.reddito, p.reddito
from persone p, paternita, persone fwhere p.nome = padre and
figlio = f.nome andf.reddito > p.reddito
37
SQL
Ridenominazione del risultato
“Le persone che guadagnano più dei rispettivi padri;mostrare nome, reddito e reddito del padre”
πFiglio, Reddito, RP (σReddito>RP (ρNP,EP,RP ← Nome,Eta,Reddito(persone)
ÿ NP=Padre
(paternita ÿ Figlio =Nome persone)))
select figlio,f.reddito as reddito,p.reddito as redditoPadre
from persone p, paternita, persone fwhere p.nome = padre and
figlio = f.nome andf.reddito > p.reddito
38
SQL
SELECT, con join esplicito, sintassi
select AttrExpr [ [as ] Alias ] {,AttrExpr [ [as ] Alias ] }from Tabella [ [ as ] Alias ]
{[ TipoJoin ] join Tabella [ [ as ] Alias ] on CondDiJoin }, ...[ where AltraCondizione ]
39
SQL
Join esplicito“Padre e madre di ogni persona”
paternita ÿ maternita
πFiglio,Padre,Madre(paternitaÿ Figlio = Nome ρNome ← Figlio(maternita))
select madre, paternita.figlio, padrefrom maternita join paternita on
paternita.figlio = maternita.figlio
40
SQL
Ulteriore estensione: join naturale“Padre e madre di ogni persona”
paternita ÿ maternita
πFiglio,Padre,Madre(paternitaÿ Figlio = Nome ρNome←Figlio(maternita))
select madre, paternita.figlio, padre
from maternita natural join paternita
select madre, paternita.figlio, padrefrom maternita join paternita on
paternita.figlio = maternita.figlio
41
SQL
Joinmaternita Madre Figlio
Luisa MariaLuisa LuigiAnna OlgaAnna FilippoMaria AndreaMaria Aldo
paternita Padre FiglioSergio FrancoLuigi OlgaLuigi Filippo
Franco AndreaFranco Aldo
Madre Figlio PadreAnna Olga LuigiAnna Filippo LuigiMaria Andrea FrancoMaria Aldo Franco
42
SQL
Outer join sinistromaternita Madre Figlio
Luisa MariaLuisa LuigiAnna OlgaAnna FilippoMaria AndreaMaria Aldo
paternita Padre FiglioSergio FrancoLuigi OlgaLuigi Filippo
Franco AndreaFranco Aldo
Madre Figlio PadreLuisa Maria NULL
Luisa Luigi NULL
Anna Olga LuigiAnna Filippo LuigiMaria Andrea FrancoMaria Aldo Franco
43
SQL
Outer join completomaternita Madre Figlio
Luisa MariaLuisa LuigiAnna OlgaAnna FilippoMaria AndreaMaria Aldo
paternita Padre FiglioSergio FrancoLuigi OlgaLuigi Filippo
Franco AndreaFranco Aldo
Madre Figlio PadreLuisa Maria NULL
Luisa Luigi NULL
Anna Olga LuigiAnna Filippo LuigiMaria Andrea FrancoMaria Aldo FrancoNULL Franco Sergio
44
SQL
Outer join
“Padre e, se nota, madre di ogni persona”
select paternita.figlio, padre, madrefrom paternita left natural join maternita
select paternita.figlio, padre, madrefrom paternita left join maternita on
paternita.figlio = maternita.figlio
paternita maternitaLEFT
πFiglio,Padre,Madre(paternita ρNome ← Figlio(maternita))Figlio = Nome
LEFT
45
SQL
Join esplicito
select I.Nome, Cognome, Citta
from Impiegato I join Dipartimento D
on Dipart = D.Nome
Nome Cognome DipartMario Rossi MilanoCarlo Bianchi Torino
Giuseppe Verdi MilanoFranco Neri RomaCarlo Rossi Milano
Lorenzo Lanzi MilanoPaola Borroni MilanoMarco Franco Torino
46
SQL
Ordinamento del risultato
order by AttrDiOrdinamento [ asc | desc ]{, AttrDiOrdinamento [ asc | desc ] }
select Cognome, Nome, Stipendio
from Impiegato
where Dipart like 'Amm%'
order by Stipendio desc, Cognome
Cognome Nome StipendioRossi Mario 45
Borroni Paola 40Verdi Giuseppe 40
47
SQL
Necessità di operatori su tuple
• tutte le condizioni dell’algebra vengono valutate su una tuplaalla volta
• la condizione è sempre un predicato che viene valutato suciascuna tupla indipedentemente da tutte le altre
• se volessi contare il numero di impiegati di un certo dipartimentoa partire da una relazione Impiegato come si fa?
• occorre introdurre degli operatori che consentono di valutareproprietà che dipendono da insiemi di tuple
• questi operatori sono detti operatori aggregati
48
SQL
Operatori aggregati
select count(*) AS NumeroImpiegatifrom Impiegatowhere Dipart = 'Produzione'
• l’operatore aggregato (count ) viene applicato al risultatodell’interrogazione:
select *from Impiegatowhere Dipart = 'Produzione'
NumeroImpiegati2
49
SQL
COUNT: sintassi
count ( < * | [ distinct | all ] ListaAttributi > )
select count(Stipendio) as NumeroStipendi
from Impiegato
select count(distinct Stipendio)
as StipendiDiversi
from Impiegato
NumeroStipendi8
StipendiDiversi6
50
SQL
COUNT e valori nulli
select count(*) as NumeroImpiegati
from Impiegato
select count(Stipendio) as NumeroStipendi
from Impiegato
NumeroImpiegati3
NumeroStipendi2
Impiegato Nome Cognome Dipart Ufficio StipendioMario Rossi Amministrazione 10 45Carlo Bianchi Produzione 20 45
Giuseppe Verdi Amministrazione 20 NULL
51
SQL
Somma, media, massimo, minimo
< sum | max | min | avg > ( [ distinct | all ] AttrEspr )
Totale degli stipendi del dipartimento amministrazione
select sum(Stipendio) as TotaleStipendifrom Impiegato
where Dipart = 'Amministrazione'
• escludono opportunamente i valori nulli
TotaleStipendi125
52
SQL
Join e operatore aggregato
“Il massimo stipendio tra quelli degli impiegati che lavorano in undipartimento con sede a Milano”
select max(Stipendio)
from Impiegato, Dipartimento D
where Dipart = D.Nome and
Citta = 'Milano'
• Nota: non abbiamo usato la as e l’attributo nel risultato non hanome
80
53
SQL
Operatori aggregati e target list
• un’interrogazione scorretta:
select Cognome, Nome, max(Stipendio)
from Impiegato, Dipartimento
where Dipart = NomeDip and
Citta = 'Milano’
• di chi sarebbe il cognome? La target list deve essere omogenea
select max(Stipendio), min(Stipendio)
from Impiegato
54
SQL
Operatori aggregati e raggruppamenti
“Per ogni dipartimento, la somma degli stipendi”
select Dipart, sum(Stipendio) as SommaStipendi
from Impiegato
group by Dipart
Dipart SommaStipendiAmministrazione 125
Produzione 82Distribuzione 45
Direzione 153
55
SQL
Semantica di interrogazionicon operatori aggregati e raggruppamenti
• interrogazione senza group by e senza operatori aggregati:
select Dipart, Stipendio
from Impiegato
Dipart StipendioAmministrazione 45
Produzione 36Amministrazione 40
Distribuzione 45Direzione 80Direzione 73
Amministrazione 40Produzione 46
56
SQL
Semantica …, 2
• poi si raggruppa e si applica l’operatore aggregato a ciascungruppo
dopo group by dopo sum()as
Dipart StipendioAmministrazione 45Amministrazione 40Amministrazione 40
Distribuzione 45Direzione 80Direzione 73
Produzione 36Produzione 46
Dipart SommaStipendiAmministrazione 125
Distribuzione 45Direzione 153
Produzione 82
57
SQL
Condizioni sui gruppi
“I dipartimenti che spendono più di 100 milioni in stipendi”
select Dipart,
sum(Stipendio) as SommaStipendi
from Impiegati
group by Dipart
having sum(Stipendio) > 100
Dipart SommaStipendiAmministrazione 125
Direzione 153
58
SQL
WHERE o HAVING?
“I dipartimenti per cui la media degli stipendi degli impiegati chelavorano nell'ufficio 20 è superiore a 25 milioni”
select Dipart
from Impiegato
where Ufficio = 20
group by Dipart
having avg(Stipendio) > 25
59
SQL
Sintassi, riassumiamo
SelectSQL ::=select ListaAttributiOEspressionifrom ListaTabelle[ where CondizioniSemplici ][ group by ListaAttributiDiRaggruppamento ][ having CondizioniAggregate ][ order by ListaAttributiDiOrdinamento ]
60
SQL
Unione, intersezione e differenza
• La select da sola non permette di fare unioni; serve uncostrutto esplicito:
SelectSQL { < union | intersect | except > [ all ] SelectSQL }
select Nomefrom Impiegatounionselect Cognome as Nomefrom Impiegato
• i duplicati vengono eliminati (a meno che si usi all ); anchedalle proiezioni!
61
SQL
Notazione posizionale!
select padre
from paternita
union
select madre
from maternita
• quali nomi per gli attributi del risultato?– nessuno– quelli del primo operando– …
62
SQL
Notazione posizionale, 2
select padre, figlio
from paternita
union
select figlio, madre
from maternita
select padre, figlio
from paternita
union
select madre, figlio
from maternita
63
SQL
Notazione posizionale, 3
• Anche con le ridenominazioni non cambia niente:
select padre as genitore, figlio
from paternita
union
select figlio, madre as genitore
from maternita
64
SQL
Intersezione e differenza
select Nome
from Impiegato
intersect
select Cognome as Nome
from Impiegato
• equivale a
select I.Nome
from Impiegato I, Impiegato J
where I.Nome = J.Cognome
select Nome
from Impiegato
except
select Cognome as Nome
from Impiegato
• vedremo che si può esprimerecon select nidificate
65
SQL
Interrogazioni nidificate
• le condizioni atomiche esprimibili nella clausola WHEREpermettono anche– il confronto fra un attributo (o più, vedremo poi) e il risultato
di una sottointerrogazione– quantificazioni esistenziali
66
SQL
Interrogazioni nidificate, sintassi
ConfrontoConNidificazione :: =Scalare OpConfronto [ any | all ]
( SelectAttributoSingolo) |exists ( SelectStar )
• senza any o all , il risultato della SelectAttributoSingolo deveessere un solo valore
• v.A θ any Select... (risp. all ) è vero se v.A è in relazione θcon almeno uno (risp. con tutti) dei valori del risultato dellaSelect
• = any puo essere abbreviato con in
• exists( SelectStar ) è vero se il risultato dellasottoespressione non è vuoto.
67
SQL
Interrogazioni nidificate
“Gli impiegati che lavorano in dipartimenti di Roma”
select *
from Impiegato
where Dipart = any (select Nome
from Dipartimento
where Citta = 'Roma')
68
SQL
“Nome e reddito del padre di Mario”
select Nome, Redditofrom Personewhere Nome = (select Padre
from Paternitawhere Figlio = 'Mario')
select Nome, Redditofrom Persone, Paternitawhere Nome = Padre and
Figlio = 'Mario'
69
SQL
Interrogazioni nidificate, commenti
• La prima versione di SQL prevedeva solo la forma nidificata (ostrutturata), con una sola relazione in ogni clausola FROM. Ilche è insoddisfacente:– la dichiaratività è limitata– non si possono includere nella target list attributi di relazioni
nei blocchi interni• La forma nidificata è “meno dichiarativa”, ma talvolta più
leggibile (richiede meno variabili)• La forma piana e quella nidificata possono essere combinate• Le sottointerrogazioni non possono contenere operatori
insiemistici (“l’unione si fa solo al livello esterno”); la limitazionenon è significativa
70
SQL
“Nome e reddito dei padri di persone che guadagnano più di 20 milioni"
select Nome, Redditofrom Personewhere Nome in (select Padre
from Paternitawhere Figlio =any (select Nome
from Personewhere Reddito > 20))
select distinct P.Nome, P.Redditofrom Persone P, Paternita, Persone Fwhere P.Nome = Padre and
Figlio = F.Nome andF.Reddito > 20
71
SQL
Interrogazioni piatte o nidificate?
select I1.Nomefrom Impiegato I1, Impiegato I2where I1.Nome = I2.Nome and
I2.Dipart = 'Produzione'
select Nomefrom Impiegatowhere Nome = any (select Nome
from Impiegatowhere Dipart = 'Produzione')
72
SQL
“Le persone che hanno almeno un figlio”
select *
from Persone
where exists (select *
from Paternita
where Padre = Nome) or
exists (select *
from Maternita
where Madre = Nome)
73
SQL
Interrogazioni nidificate, commenti, 2
• regole di visibilità:– non è possibile fare riferimenti a variabili definite in blocchi
più interni– se un nome di variabile è omesso, si assume riferimento alla
variabile più “vicina”• nota: in un blocco si può fare riferimento a variabili definite in
blocchi più esterni; la semantica (prodotto cartesiano, selezione,proiezione) non funziona più, ne serve una più sofisticata:– l’interrogazione interna va ripetuta una volta per ciascun
valore della variabile
74
SQL
Necessità della forma nidificata
“Trovare i padri i cui figli guadagnano tutti più di venti milioni"
select distinct Padrefrom Paternita Zwhere not exists (select *
from Paternita W, Personewhere W.Padre = Z.Padre and
W.Figlio = Nome andReddito <= 20)
• anche con <>all
75
SQL
Semantica delle espressioni “correlate”
• L’interrogazione interna viene eseguita una volta per ciascunaennupla dell’interrogazione esterna
76
SQL
Visibilità
• scorretta:
select *from Impiegatowhere Dipart in (select Nome
from Dipartimento D1where Nome = 'Produzione') or
Dipart in (select Nomefrom Dipartimento D2where D2.Citta = D1.Citta)
77
SQL
Disgiunzione e unione (ma non sempre)
select *from Personewhere Reddito > 30unionselect F.*from Persone F, Paternita, Persone Pwhere F.Nome = Figlio and
Padre = P.Nome andP.Reddito > 30
select *from Persone Fwhere Reddito > 30 or
exists (select *from Paternita, Persone Pwhere F.Nome = Figlio and
Padre = P.Nome andP.Reddito > 30)
78
SQL
Differenza e nidificazione
select Nomefrom Impiegatoexceptselect Cognome as Nomefrom Impiegato
select Nomefrom Impiegato Iwhere not exists
(select *from Impiegatowhere Cognome = I.Nome)
79
SQL
Massimo e nidificazione
“L’impiegato con lo stipendio massimo”
select *from Impiegatowhere Stipendio = (select max(Stipendio)
from Impiegato)
80
SQL
Operazioni di aggiornamento
• operazioni di– inserimento– eliminazione– modifica
• di una o più ennuple di una relazione• sulla base di una condizione che può coinvolgere anche altre
relazioni• istruzioni
– insert
– delete
– update
81
SQL
Inserimento di ennuple
• sintassiinsert into NomeTabella [ ( ListaAttributi ) ]
< values( ListaDiValori ) |
SelectSQL >
insert into Dipartimento(NomeDip,Citta)values('Produzione','Torino')
insert into ProdottiMilanesi(select codice, descrizione
from Prodottowhere LuogoProd = 'Milano')
82
SQL
Inserimento di ennuple, 2
• l’ordinamento degli attributi (se presente) e dei valori èsignificativo
• le due liste debbono avere lo stesso numero di elementi• se la lista di attributi è omessa, si fa riferimento a tutti gli attributi
della relazione, secondo l’ordine con cui sono stati definiti• se la lista di attributi non contiene tutti gli attributi della relazione,
per gli altri viene inserito un valore nullo (che deve esserepermesso) o un valore di default
83
SQL
Eliminazione di ennuple
delete from NomeTabella [ where Condizione ]
delete from Dipartimento
where NomeDip = 'Produzione'
delete from Dipartimento
where Nome not in (select Dipart
from Impiegato)
84
SQL
Eliminazione di ennuple
• elimina le ennuple che soddisfano la condizione• può causare (se i vincoli di integrità referenziale sono definiti
con politiche di reazione cascade ) eliminiazioni da altrerelazioni
• ricordare: se la where viene omessa, si intende where true
• cancelliamo tutte le ennuple (ma manteniamo lo schema):delete from Dipartimento
• per cancellare anche lo schemadrop Dipartimento
85
SQL
Modifica di ennuple
update NomeTabellaset Attributo = < Espressione | SelectSQL | null | default >{, Attributo = < Espressione | SelectSQL | null | default > }
[ where Condizione ]
update Dipendente set Stipendio = 45where Matricola = 'M2047'
update Impiegato set Stipendio = Stipendio * 1.1where Dipart = 'Amministrazione'
86
SQL
• attenzione all’approccio insiemistico:
update Impiegato set Stipendio = Stipendio * 1.1where Stipendio <= 30
update Impiegato set Stipendio = Stipendio * 1.15where Stipendio > 30
87
SQL
Vincoli di integrità generici: check
• Specifica di vincoli di ennupla (e anche vincoli più complessi)
check ( Condizione )
create table Impiegato(Matricola character(6),Cognome character(20),Nome character(20),Sesso character not null check (sesso in (‘M’,‘F’))Stipendio integer,Superiore character(6),check (Stipendio <= (select Stipendio
from Impiegato Jwhere Superiore = J.Matricola)
)
88
SQL
Vincoli di integrità generici: asserzioni
• Specifica vincoli a livello di schema
create assertion NomeAsserzione check ( Condizione )
create assertion AlmenoUnImpiegatocheck (1 <= (select count(*)
from Impiegato ))
89
SQL
Viste
create view NomeVista [ ( ListaAttributi ) ] as SelectSQL[ with [ local | cascaded ] check option ]
create view ImpiegatiAmmin(Matricola, Nome, Cognome, Stipendio) as
select Matricola, Nome, Cognome, Stipendiofrom Impiegatowhere Dipart = 'Amministrazione' and
Stipendio > 10
create view ImpiegatiAmminPoveri asselect *from ImpiegatiAmminwhere Stipendio < 50with check option
90
SQL
Opzioni su Viste
create view NomeVista [ ( ListaAttributi ) ] as SelectSQL[ with [ local | cascaded ] check option ]
• check option specifica che posso essere ammessiaggiornamenti solo sulle righe della vista, e dopo gliaggiornamenti le righe devono continuare ad appartenere allavista
• local (nel caso di viste su viste) specifica se il controllo sulfatto che le righe vengono aggiornate dalla vista debba essereeffettuato solo all’ultimo livello della vista
• cascaded (nel caso di viste su viste) specifica chel’aggiornamento della vista debba essere propagato
91
SQL
Un’interrogazione non standard
“Trova il dipartimento che spende il massimo in stipendi”• La nidificazione nella having non è ammessa
select Dipart
from Impiegato
group by Dipart
having sum(Stipendio) >= all
(select sum(Stipendio)
from Impiegato
group by Dipart)
92
SQL
Soluzione con le viste
create view BudgetStipendi(Dip,TotaleStipendi) as
select Dipart, sum(Stipendio)
from Impiegato
group by Dipart
select Dip
from BudgetStipendi
where TotaleStipendi =(select max(TotaleStipendi)
from BudgetStipendi)
93
SQL
Ancora sulle viste
“Trova il numero medio di uffici per ogni dipartimento”• Interrogazione scorretta
select avg(count(distinct Ufficio))from Impiegatogroup by Dipart
• Con una vista
create view DipartUffici(NomeDip,NroUffici) asselect Dipart, count(distinct Ufficio)from Impiegatogroup by Dipart
select avg(NroUffici)from DipartUffici
94
SQL
Controllo degli accessi
• Ogni componente dello schema (risorsa) può essere protetta(tabelle, attributi, viste, domini, ecc.)
• Il possessore della risorsa (colui che la crea) assegna deiprevilegi agli altri utenti
• Un utente predefinito ( _system) rappresenta l’amministratoredella base di dati ed ha completo accesso alle risorse
• Ogni previlegio è caratterizzato da:– la risorsa a cui si riferisce– l’utente che concede il previlegio– l’utente che riceve il previlegio– l’azione che viene permessa sulla risorsa– se il previlegio può esser trasmesso o meno ad altri utenti
95
SQL
Tipi di previlegi
• SQL offre sei tipi di previlegi:– insert : inserisce un nuovo oggetto nella risorsa– update : modifica il contenuto di una risorsa– delete : rimuove un oggetto dalla risorsa– select : accede il contenuto della risorsa con una query– references : costruisce un vincolo di integrità referenziale
con la risorsa (può limitare la capacità di modificare larisorsa)
– usage : utilizza la risorsa nella definizione di uno schema(es., un dominio)
96
SQL
grant e revoke
• Per concedere un previlegio ad un utente:grant < Privileges | all privileges > on Resource
to Users [ with grant option ]– grant option specifica se ha il previlegio di propagare il
previlegio ad altri utenti• Es.:
grant select on Department to Stefano
• Per revocare il previlegio:revoke Privileges on Resource from Users
[ restrict | cascade ]
97
SQL
Opzioni di grant e revoke
La revoca deve essere fatta dall’utente che aveva concesso Iprevilegi
• restrict (di default) specifica che il comando non deveessere eseguito qualora la revoca dei previlegi all’utentecomporti qualche altra revoca (dovuta ad un precedente grantoption )
• cascade invece forza l’esecuzione del comando
• Attenzione alle reazioni a catena
98
SQL
SQL immerso in linguaggio ospite"embedded SQL"
• in applicazioni complesse, è spesso necessario “immergere”istruzioni SQL in programmi tradizionali (Pascal,C, COBOL)
• i programmi con SQL immerso sono analizzati da precompilatoriche traducono le istruzioni SQL
• le variabili del programma possono essere usate comeparametri nelle istruzioni SQL (precedute da ':')
• select che producano una sola ennupla e operazioni diaggiornamento possono essere immerse senza problemi (conopportuno meccanismo di trasmissione dei risultati)
• esiste di solito una variabile di sistema sqlcode che dopol'esecuzione di un'operazione assume valore zero se essa haavuto successo e valore diverso altrimenti
99
SQL
Relazioni e record: cursori
• problema fondamentale: “disadattamento di impedenza”– i linguaggi tradizionali gestiscono record uno alla volta– SQL produce insiemi di ennuple
• soluzione: cursore– accede a tutte le ennuple di una interrogazione in modo
globale– le trasmette al programma una alla volta
100
SQL
Operazioni sui cursori
Definizione del cursoredeclare NomeCursore [ scroll ] cursor for SelectSQL[ for < read only | update [ of Attributo {, Attributo } ] > ]
Esecuzione dell'interrogazioneopen NomeCursore
Utilizzo dei risultati (una ennupla alla volta)fetch NomeCursore into ListaVariabili
Disabilitazione del cursoreclose cursor NomeCursore
Accesso alla ennupla corrente (di un cursore su singola relazione afini di aggiornamento/cancellazione)current of NomeCursore
nella clausola where
101
SQL
Frammento di programma con SQL immerso
write('nome della citta''?');readln(citta);EXEC SQL DECLARE P CURSOR FOR
SELECT NOME, REDDITOFROM PERSONEWHERE CITTA = :citta ;
EXEC SQL OPEN P ;EXEC SQL FETCH P INTO :nome, :reddito ;while SQLCODE = 0do begin
write('nome della persona:', nome, 'aumento?');readln(aumento);EXEC SQL UPDATE PERSONE
SET REDDITO = REDDITO + :aumentoWHERE CURRENT OF P
EXEC SQL FETCH P INTO :nome, :redditoend;
EXEC SQL CLOSE CURSOR P
102
SQL
Altro esempiovoid VisualizzaStipendiDipart(char NomeDip[]){
char Nome[20], Cognome[20];long int Stipendio;$ declare ImpDip cursor for
select Nome, Cognome, Stipendiofrom Impiegatowhere Dipart = :NomeDip ;
$ open ImpDip;$ fetch ImpDip into :Nome, :Cognome , :Stipendio ;printf("Dipartimento %s\n",NomeDip);while (sqlcode == 0){
printf("Nome e cognome dell'impiegato: %s%s",Nome,Cognome);
printf("Attuale stipendio: %d\n",Stipendio);$ fetch ImpDip into :Nome, :Cognome, :Stipendio;
}$ close cursor ImpDip;
}
103
SQL
SQL dinamico
• Quando le applicazioni non conoscono a compile-time i costruttiSQL da eseguire, allora è necessario SQL dinamico
• Problema principale: gestire il trasferimento di dati traprogramma ed ambiente SQL
• Per l’esecuzione diretta (solo per comandi senza parametri):execute immediate SQLStatement
• Per l’esecuzione preceduta dall’analisi dei construtti:prepare CommandName from SQLStatement
– followed by:execute CommandName [ into TargetList ]
[ using ParameterList ]
104
SQL
(Stored) Procedure
• SQL-2 consente di definire le procedure (chiamate storedprocedures)
• Le stored procedure sono parte dello schemaprocedure AssignCity(:Dep char(20),
:City char(20))update Departmentset City = :Citywhere Name = :Dep
• SQL-2 non consente di scrivere delle procedure complesse(solo singoli comandi SQL). Sistemi diversi hanno restrizionidiverse.
• Molti sistemi offrono delle estensioni SQL che consentono discrivere procedure complesse (es., Oracle PL/SQL)
105
SQL
Procedure in Oracle PL/SQLProcedure Addebita(CodConto char(5),Prelievo integer) is
TroppoScoperto exeption;
AmmontarePrec integer;
NuovoAmmontare integer;
Limite integer;begin
select Ammontare, Scoperto into AmmontarePrec, Limitefrom ContoCorrentewhere CodiceConto = CodContofor update of Ammontare;
NuovoAmmontare := AmmontarePrec - Prelievo;if NuovoAmmonotare > Limite
then update ContoCorrenteset Ammontare = NuovoAmmonotarewhere CodiceConto = CodConto;
elseinsert into TransazioniOltreScoperto
values(CodConto,Prelievo,sysdate);end if;
end Addebita;
PROGETTAZIONE DIBASE DI DATI
Metodologie e modelli
Argomenti della lezione
• Ciclo di vita dei sistemi informativi
• Metodologie di progettazione
• Fasi del progetto di una base di dati
• Introduzione al modello EntitàRelazione
La progettazione di basi di dati è una
delle attività del processo di sviluppo
dei sistemi informativi va quindi
inquadrata in un contesto più
generale:
il ciclo di vita dei sistemi informativi
Ciclo di vita dei
sistemi informativi
Insieme e sequenzializzazione delle
attività svolte da analisti, progettisti,
utenti, nello sviluppo e nell’uso dei
sistemi informativi
Attività iterativa, quindi “un ciclo”
Studio di fattibilità
Raccolta e analisidei requisiti
Progettazione
Implementazione
Validazione ecollaudo
Funzionamento
Fasi del ciclo di vitaStudio di fattibilità: definizione costi epriorità
Raccolta e analisi dei requisiti: studio delleproprietà del sistema
Progettazione: di dati e funzioni
Implementazione: realizzazione
Validazione e collaudo: sperimenazione
Funzionamento: il sistema diventa operativo
i dati hanno un ruolo centrale
i dati sono più stabili
La progettazione di un sistemainformativo riguarda due aspetti:
progettazione dei dati
progettazione delle applicazioni
Ma:
Studio di fattibilità
Raccolta e analisidei requisiti
Progettazionedei dati
Implementazione
Validazione ecollaudo
Funzionamento
Per garantire prodotti di buona
qualità è opportuno seguire una
“metodologia di progetto”
Che cosa è una metodologia?
articolazione delle attività in fasicriteri di scelta
modelli di rappresentazione
Ingredienti di una metodologia
Proprietà di una metodologia
generalitàqualità del prodotto
facilità d’uso
Metodologia
di progettazione
di basi di dati
che cosa rappresentare
come farlo
Si basa su un principio semplicema efficace:
separazione netta tra decisionirelative a :
Progettazionefisica
Schema concettuale
Requisiti della base di dati
Progettazioneconcettuale
Progettazionelogica
Schema logico
Schema fisico
“CHE COSA”
“COME”
Schema concettuale
Schema logico
Schema fisico
I prodotti della varie fasi sono
schemi di alcuni modelli di dati:
Modello di dati
esempio: il modello relazionaleprevede il costruttore di relazione
strutture da utilizzare perorganizzare i dati di interesse
componente fondamentale:costruttori di tipo
DOCENZACorso Docente
Basi di dati RossiImpianti Neri
Linguaggi Verdi… ….
MANIFESTOCdL Materia Anno
II Basi di dati 5II Impianti 5II Linguaggi 4IE Linguaggi 5IE Impianti 5… … …
Rappresentazione dei dati nelmodello relazionale
lo schema, sostanzialmenteinvariante nel tempo, che descrivela struttura (aspetto intensionale)
l’istanza, costituita dai valoriattuali, che possono cambiaremolto (aspetto estensionale)
Due componenti:
modelli logici: indipendenti dallestrutture fisiche ma disponibili neiDBMS
modelli concettuali: indipendentidalle modalità di realizzazione
Due tipi (principali) di modelli Progettazioneconcettuale
Progettazionelogica
Progettazionefisica
è prevalente l’aspetto intensionale
si adottano rappresentazioni grafiche
utile anche per scopi documentativi
Vediamo nel dettaglio un modelloconcettuale
Nella prima fase si fa uso di unmodello concettuale
Introduzione al modello
Entità - Relazione
Modello Entità-Relazione
Il più diffuso modello concettuale
Ne esistono molte versioni,
(più o meno) diverse l’una dall’altra
I costrutti del modello E-R
Entità
Relazione
Attributo
Identificatore
Generalizzazione
….
Entità
Classe di oggetti (fatti, persone, cose) della
applicazione di interesse con proprietà
comuni e con esistenza “autonoma”
Esempi:
fattura
città
conto corrente
ordine
impiegato
studente
RelazioneLegame logico, significativo per
l’applicazione di interesse,
fra due o più entità.
Esempi:
Residenza (tra Persona e Citta)
Afferenza (tra Impiegato e Dipartimento)
Uno schema E-R
EsameStudente Corso
Argomenti della lezione
• Ciclo di vita dei sistemi informativi
• Metodologie di progettazione
• Fasi del progetto di una base di dati
• Introduzione al modello EntitàRelazione
IL MODELLOENTITA’ - RELAZIONE
I costruttori di base
• Entità
• Relazioni
• Attributi
• Costruzione di schemi con icostrutti di base
• Cenni sugli altri costrutti
Argomenti della lezione
Entità
Classe di oggetti (fatti, persone, cose) della
applicazione di interesse con proprietà
comuni e con esistenza “autonoma”
Esempi:
fattura
città
conto corrente
ordine
impiegato
studente
Occorrenza (o istanza) di entità:
oggetto della classe che l’entitàrappresenta
nello schema concettuale
rappresentiamo le entità, non le
singole istanze (“astrazione”)
Rappresentazione graficadi entità
Impiegato Dipartimento
Città Vendita
nomi espressivi
opportune convenzioni
– singolare
Ogni entità ha un nome
che la identifica univocamente
nello schema:Relazione
Legame logico, significativoper l’applicazione di interesse,
fra due o più entità.
Esempi:
Residenza (tra Persona e Città)
Afferenza (tra Impiegato e Dipartimento)
Rappresentazione graficadi relazione
EsameStudente Corso
ResidenzaImpiegato Città
nomi espressivi
opportune convenzioni
– singolare
– sostantivi invece che verbi
Ogni relazione ha un nomeche la identifica
univocamente nello schema:
Esempi di occorrenze
S1
S2
S4
S3
Studente
C1
C2
C3
Corso
E1
E2
E3
E4
Due osservazioni
In una occorrenza di relazione nonci possono essere ripetizioni
Una occorrenza di entità non è unvalore che identifica un oggetto,ma l’oggetto stesso
Due entità possono esserecoinvolte in più relazioni
ResidenzaImpiegato Città
Sede dilavoro
Le relazioni possonocoinvolgere più di due entità
Fornitore Prodotto
Dipartimento
Fornitura
Una relazione può coinvolgere“due volte” la stessa entità
(relazione ricorsiva)
Persona
Matrimonio
Nelle relazioni ricorsive in alcuni casivanno specificati i “ruoli”
Successione
SovranoSuccessore Predecessore
Confronto
Tennista
Superficie
Relazione ternaria ricorsiva
Migliore Peggiore
AttributiUn attributo associa ad ogni
occorrenza di entità o relazione un
valore appartenente a un insieme
detto dominio dell’attributo
Proprietà elementare di un’entità o di
una relazione, di interesse ai fini
dell’applicazione
Rappresentazione grafica
NascitaImpiegato Città
Cognome Età
Stipendio
Data nascita Nome
Provincia
Attributi composti
Esempio:Via, Numero civico e CAP
formano un Indirizzo
Si ottengono raggruppando attributidi una medesima entità o relazione
che presentano affinità nel lorosignificato o uso
Rappresentazione grafica
Impiegato
Cognome
Età Via
Indirizzo Numero
CAP
Con i costrutti presentati è giàpossibile costruire schemi di unacerta complessità
Vediamo un esempio più articolatodi schema Entità-Relazione conentità relazioni e attributi
ComposizionePartecipazione
Progetto
NomeBudget
Impiegato
Codice
Cognome Telefono
Dipartimento
NomeAfferenza
Data
Direzione
CittàIndirizzo
SedeVia
CAP
Cenni sugli
altri costrutti
Altri costrutti del modello E-R
Cardinalità– di relazione
– di attributo
Identificatore– interno
– esterno
Generalizzazione
• Entità
• Relazioni
• Attributi
• Costruzione di schemi con icostrutti di base
• Cenni sugli altri costrutti
Argomenti della lezione
IL MODELLO ENTITÀ-RELAZIONE
Gli altri costruttori
Sommario
• Cardinalità• Identificatori• Generalizzazioni• Costruzione di schemi E-R con
tutti i costruttori
Cardinalità delle relazioni
Coppia di valori che si associa a ognientità che partecipa a una relazione
specificano il numero minimo emassimo di occorrenze delle relazionecui ciascuna occorrenza di una entitàpuò partecipare
Esempio di cardinalità
AssegnamentoImpiegato Incarico
(1,5) (0,50)
per semplicità usiamo solo tresimboli:0 e 1 per la cardinalità minima:
0 = “partecipazione opzionale”;1 = “partecipazione obbligatoria”
1 e “N” per la massima:“N” non pone alcun limite
Occorrenze di Residenza
S1
S2
S4
S3
Studente
C1
C2
C3
Città
R3
R4
R2
R1
Cardinalità di Residenza
ResidenzaStudente Città
(1,1) (1,N)
Classificazione di relazioni
Con riferimento alle cardinalitàmassime, abbiamo relazioni:
uno a uno,uno a molti,molti a molti
Relazioni “molti a molti”
EsameStudente Corso
(0,N) (0,N)
ScalataMontagna Alpinista(0,N) (1,N)
AbilitazioneMacchinista Locomotore(0,N) (0,N)
Relazioni “uno a molti”
ImpiegoPersona Azienda
(0,1) (1,N)
NascitaPersona Città(1,1) (1,N)
UbicazioneComune Provincia(1,1) (1,N)
Relazioni “uno a uno”
VenditaOrdine Fattura
(0,1) (1,1)
DocenzaProfessore Corso(1,1) (0,1)
DirezioneImpiegato Progetto(0,1) (1,1)
Cardinalità di attributi
E’ possibile associare delle cardinalitàanche agli attributi, con due scopi:
indicare opzionalitàindicare attributi multivalore
Rappresentazione grafica
Impiegato
Targa auto
Nome
Numero patente
(0,N)
(0,1)
Identificatore di una entità
“strumento” per l’identificazioneunivoca delle occorrenze di un’entitàcostituito da:
attributi dell’entità→identificatore interno
(attributi +) entità esterne attraversorelazioni
→identificatore esterno
Identificatori interni
Persona
Data Nascita
Cognome
Nome
Automobile
Targa
Modello
Colore
Identificatore esterno
IscrizioneStudente Università
Cognome Matricola
Anno Iscrizione
Nome
Indirizzo
(1,1) (1,N)
Alcune osservazioni
ogni entità deve possedere almeno unidentificatore, ma può averne ingenerale più di unouna identificazione esterna è possibilesolo attraverso una relazione a cuil’entità da identificare partecipa concardinalità (1,1)
(1,1)(0,1)
(1,N)(0,1)
(0,1)(1,1)
(1,N)
(0,N)
(1,N)
(1,N)
CittàIndirizzo
Telefono
Dipartimento
Composizione
Sede
Direzione
Afferenza
Impiegato
Progetto
Partecipazione
Nome
Nome
Cognome
Budget
Data
Via
CAP
Codice
Generalizzazione
mette in relazione una o più entitàE1, E2, ..., En con una entità E, che lecomprende come caso particolare
E è generalizzazione di E1, E2, ..., EnE1, E2, ..., En sono specializzazioni (osottotipi) di E
Rappresentazione grafica
Dipendente
Impiegato Funzionario Dirigente
Proprietà di generalizzazioni
Se E (padre) è generalizzazione di E1, E2,..., En (figlie):ogni proprietà di E è significativa perE1, E2, ..., Enogni occorrenza di E1, E2, ..., En èoccorrenza anche di Eogni occorrenza di E è occorrenza alpiù di una entità tra E1, E2, ..., En
Persona
Codicefiscale
Nome
Età
Città
Nascita
(1,N)
(1,1)
Lavoratore Studente
Stipendio
Ereditarietà
tutte le proprietà (attributi, relazioni,altre generalizzazioni) dell’entitàpadre vengono ereditate dalle entitàfiglie e non rappresentateesplicitamente
Classificazione di generalizzazioni
una generalizzazione è totale se ognioccorrenza della entità padre è unoccorrenza di almeno una delle entitàfiglie, altrimenti è parzialeuna generalizzazione è esclusiva seogni occorrenza della entità padre è alpiù un occorrenza di una delle entitàfiglie, altrimenti è sovrapposta
Persona
Uomo DonnaStudente Lavoratore
Altre proprietà
possono esistere gerarchie a più livellie multiple gerarchie allo stesso livelloun'entità può essere inclusa in piùgerarchie, come genitore e/o comefigliase una generalizzazione ha soloun’entità figlia si parla di sottoinsieme
EsercizioLe persone hanno CF, cognome ed età; gliuomini anche la posizione militare; gliimpiegati hanno lo stipendio e possonoessere segretari, direttori o progettisti (unprogettista può essere anche responsabile diprogetto); gli studenti (che non possonoessere impiegati) un numero di matricola;esistono persone che non sono né impiegatiné studenti (ma i dettagli non ci interessano)
Segretario Direttore Progettista
Responsabile
PersonaCF
Cognome
Età
Uomo Donna
Militare
Impiegato Studente
Stipendio Matr.
Contenuti della lezione
Cardinalitàdi relazionidi attributi
Identificatoreinternoesterno
GeneralizzazioneCostruzione di schemi E-R
LA PROGETTAZIONECONCETTUALE
Prima parte
Argomenti della lezione
• Documentazione di schemi E-R• Raccolta e analisi dei requisiti• Criteri generali di rappresentazione• Strategie di progetto
Documentazione associataagli schemi concettuali
dizionario dei dati– entità– relazioni
vincoli non esprimibili
CittàIndirizzo
Telefono
Dipartimento
Composizione
Sede
Direzione
Afferenza
Impiegato
Progetto
Partecipazione
Nome
Nome
Cognome
Budget
Data
Via
CAP
(1,1)(0,1)
(1,N)(0,1)
(0,1)(1,1)
(1,N)
(0,N)
(1,N)
(1,N)
Codice
Dizionario dei dati (entità)
Entità Descrizione Attributi IdentificatoreImpiegato Dipendente
dell'aziendaCodice,Cognome,Stipendio
Codice
Progetto Progettiaziendali
Nome,Budget
Nome
Dipartimento Strutturaaziendale
Nome,Telefono
Nome,Sede
Sede Sededell'azienda
Città,Indirizzo
Città
Relazioni Descrizione Componenti AttributiDirezione Direzione di un
dipartimentoImpiegato,Dipartimento
Afferenza Afferenza a undipartimento
Impiegato,Dipartimento
Data
Partecipazione Partecipazionea un progetto
Impiegato,Progetto
Composizione Composizionedell'azienda
Dipartimento,Sede
Dizionario dei dati (relazioni)
CittàIndirizzo
Telefono
Dipartimento
Composizione
Sede
Direzione
Afferenza
Impiegato
Progetto
Partecipazione
Nome
Nome
Cognome
Budget
Data
Via
CAP
(1,1)(0,1)
(1,N)(0,1)
(0,1)(1,1)
(1,N)
(0,N)
(1,N)
(1,N)
Codice
Vincoli non esprimibili
Vincoli di integrità sui dati(1) Il direttore di un dipartimento deve afferire a tale
dipartimento(2) Un impiegato non deve avere uno stipendio
maggiore del direttore del dipartimento al qualeafferisce
(3) Un dipartimento con sede a Roma deve esserediretto da un impiegato con più di dieci anni dianzianità
(4) Un impiegato che non afferisce a nessundipartimento non deve partecipare a nessun unprogetto
Analisi dei dati
Comprende attività diacquisizione dei requisitianalisi dei requisiticostruzione dello schema concettualecostruzione del glossario
attività spesso interconnesse
RequisitiPossibili fonti:
utenti, attraverso:– interviste– documentazione apposita
documentazione esistente:– normative (leggi, regolamenti di settore)– regolamenti interni, procedure aziendali– realizzazioni preesistenti
modulistica
Acquisizione e analisi deirequisiti
Il reperimento dei requisiti èun'attività difficile e nonstandardizzabile
l'attività di analisi inizia con i primirequisiti raccolti e spesso indirizzaverso altre acquisizioni
Acquisizione per interviste
utenti diversi possono fornireinformazioni diverseutenti a livello più alto hanno spessouna visione più ampia ma menodettagliatale interviste portano spesso ad unaacquisizione dei requisiti “perraffinamenti successivi”
Interazione con gli utenti
effettuare spesso verifiche dicomprensione e coerenzaverificare anche per mezzo di esempi(generali e relativi a casi limite)richiedere definizioni e classificazionifar evidenziare gli aspetti essenzialirispetto a quelli marginali
Alcune regole:
Organizzazione dei requisiti
scegliere il corretto livello di astrazionestandardizzare la struttura delle frasisuddividere le frasi articolateseparare le frasi sui dati da quelle sullefunzioni
Alcune regole:
Organizzazione dei requisiti
costruire un glossario dei terminiindividuare omonimi e sinonimi eunificare i terminirendere esplicito il riferimento fraterminiriorganizzare le frasi per concetti
Alcune regole:Un primo esempio diraccolta dei requisiti:
Base di dati bibliografica
Base di dati bibliograficaSi vogliono organizzare i dati di interesseper automatizzare la gestione deiriferimenti bibliografici
Base di dati bibliograficaSi vogliono organizzare i dati di interesse perautomatizzare la gestione dei riferimentibibliografici, con tutte le informazioni dariportarsi in una bibliografia.Per ogni pubblicazione deve esistere uncodice identificante costituito da settecaratteri, indicanti le iniziali degli autori, l'annodi pubblicazione e un carattere aggiuntivo perla discriminazione delle collisioni.
Base di dati bibliograficaSi vogliono organizzare i dati di interesse perautomatizzare la gestione dei riferimentibibliografici, con tutte le informazioni da riportarsiin una bibliografia. Le pubblicazioni sono di duetipi, monografie (per le quali interessano editore,data e luogo di pubblicazione) e articoli su rivista(con nome della rivista, volume, numero, pagine eanno di pubblicazione); per entrambi i tipi sidebbono ovviamente riportare i nomi degli autori.Per ogni pubblicazione deve esistere un codiceidentificante .....
Un esempio articolato dianalisi dei requisiti:
Società di formazione
Società di formazione (1)Si vuole realizzare una base di dati per unasocietà che eroga corsi, di cui vogliamorappresentare i dati dei partecipanti ai corsi e deidocenti. Per gli studenti (circa 5000), identificatida un codice, si vuole memorizzare il codicefiscale, il cognome, l'età, il sesso, il luogo dinascita, il nome dei loro attuali datori di lavoro, iposti dove hanno lavorato in precedenza insiemeal periodo, l'indirizzo e il numero di telefono, icorsi che hanno frequentato (i corsi sono in tuttocirca 200) e il giudizio finale.
Società di formazione (2)Rappresentiamo anche i seminari che stannoattualmente frequentando e, per ogni giorno, iluoghi e le ore dove sono tenute le lezioni. I corsihanno un codice, un titolo e possono avere varieedizioni con date di inizio e fine e numero dipartecipanti. Se gli studenti sono liberiprofessionisti, vogliamo conoscere l'area diinteresse e, se lo possiedono, il titolo. Per quelliche lavorano alle dipendenze di altri, vogliamoconoscere invece il loro livello e la posizionericoperta.
Società di formazione (3)Per gli insegnanti (circa 300), rappresentiamo ilcognome, l'età, il posto dove sono nati, il nomedel corso che insegnano, quelli che hannoinsegnato nel passato e quelli che possonoinsegnare. Rappresentiamo anche tutti i lororecapiti telefonici. I docenti possono esseredipendenti interni della società o collaboratoriesterni.
Termine Descrizione Sinonimi CollegamentiPartecipante Persona che
partecipa ai corsiStudente Corso,
SocietàDocente Docente dei corsi.
Può essere esternoInsegnante Corso
Corso Corso organizzatodalla società. Puòavere più edizioni.
Seminario Docente
Società Ente presso cui ipartecipanti lavoranoo hanno lavorato
Posti Partecipante
Glossario dei termini
Strutturazione dei requisitiin gruppi di frasi omogenee
Frasi di carattere generaleSi vuole realizzare una base di dati peruna società che eroga corsi, di cuivogliamo rappresentare i dati deipartecipanti ai corsi e dei docenti.
Frasi relative ai partecipantiPer i partecipanti (circa 5000), identificati daun codice, rappresentiamo il codice fiscale,il cognome, l'età, il sesso, la città di nascita,i nomi dei loro attuali datori di lavoro e diquelli precedenti (insieme alle date di inizioe fine rapporto), le edizioni dei corsi chestanno attualmente frequentando e quelliche hanno frequentato nel passato, con larelativa votazione finale in decimi.
Frasi relative ai datori di lavoroRelativamente ai datori di lavoro presenti epassati dei partecipanti, rappresentiamo ilnome, l'indirizzo e il numero di telefono.
Frasi relative ai corsiPer i corsi (circa 200), rappresentiamo il titoloe il codice, le varie edizioni con date di inizio efine e, per ogni edizione, rappresentiamo ilnumero di partecipanti e il giorno dellasettimana, le aule e le ore dove sono tenute lelezioni.
Frasi relative a tipi specifici di partecipantiPer i partecipanti che sono liberiprofessionisti, rappresentiamo l'area diinteresse e, se lo possiedono, il titoloprofessionale. Per i partecipanti che sonodipendenti, rappresentiamo invece il lorolivello e la posizione ricoperta.
Frasi relative ai docentiPer i docenti (circa 300), rappresentiamo ilcognome, l'età, la città di nascita, tutti inumeri di telefono, il titolo del corso cheinsegnano, di quelli che hanno insegnatonel passato e di quelli che possonoinsegnare. I docenti possono esseredipendenti interni della società diformazione o collaboratori esterni.
Quale costrutto E-R va utilizzatoper rappresentare un concetto
presente nelle specifiche?
Bisogna basarsi sulle definizionidei costrutti del modello E-R
se ha proprietà significative e descriveoggetti con esistenza autonoma
→entitàse è semplice e non ha proprietà
→attributose correla due o più concetti
→relazionese è caso particolare di un altro
→generalizzazione
Strategie di progetto
top-downbottom-upinside-out
Qualità di uno schemaconcettuale
correttezzacompletezza
leggibilitàminimalità
Sommario
• Documentazione di schemi E-R• Raccolta e analisi dei requisiti• Criteri generali di
rappresentazione
LA PROGETTAZIONECONCETTUALE
Seconda parte
Argomenti della lezione
• Strategie di progetto• Qualità di uno schema concettuale• Un esempio• Una metodologia generale
Strategie di progetto
top-downbottom-upinside-out
Strategia top-down
SpecificheSchema inizialeSchema intermedioSchema intermedioSchema finale
Primitive di raffinamentotop-down
EsameEsameStudente CorsoPersona
Persona
Uomo Donna
Impiegato
Cognome Età
Stipendio
Impiegato
Strategia bottom-up
SpecificheSpecifiche 2Specifiche 1
Specifiche 1,1
Specifiche 1,2
Specifiche 2,1
Specifiche 2,2
Schema 1,1
Schema 1,2
Schema 2,1
Schema 2,2
Schema finale
Primitive di raffinamentoBottom-up
Studente Corso
Persona
Uomo Donna
ImpiegatoSpecifica suimpiegato
EsameStudente Corso
Persona
Uomo Donna
Strategia inside-out:un esempio
Telefono
Dipartimento
Direzione
Afferenza
Data
(1,1)(0,1)
(1,N)(0,1)
(0,1)
(1,N)
Progetto
Partecipazione
NomeBudget
(0,N)
(1,N)
(1,1)
CittàIndirizzo
Composizione
Sede
Nome
Via
CAP
(1,N)
Impiegato
Cognome
Codice
In pratica
si procede di solito con una strategiaibrida (detta anche mista):
si individuano i concetti principalie si realizza uno schema scheletrosulla base di questo si puòdecomporrepoi si raffina, si espande, si integra
Definizione dello schemascheletro
Si individuano i concetti piùimportanti, ad esempio perché piùcitati o perché indicati esplicitamentecome cruciali e li si organizza in unsemplice schema concettuale
Qualità di uno schemaconcettuale
correttezzacompletezza
leggibilitàminimalità
Un esempio diprogettazioneconcettuale
Società di formazione
Frasi di carattere generaleSi vuole realizzare una base di dati peruna società che eroga corsi, di cuivogliamo rappresentare i dati deipartecipanti ai corsi e dei docenti.
Partecipante
Corso
Docente
Partecipazione Docenza
Schema scheletro
Frasi relative ai partecipantiPer i partecipanti (circa 5000), identificati daun codice, rappresentiamo il codice fiscale,il cognome, l'età, il sesso, la città di nascita,i nomi dei loro attuali datori di lavoro e diquelli precedenti (insieme alle date di inizioe fine rapporto), le edizioni dei corsi chestanno attualmente frequentando e quelliche hanno frequentato nel passato, con larelativa votazione finale in decimi.
Frasi relative ai datori di lavoroRelativamente ai datori di lavoro presenti epassati dei partecipanti, rappresentiamo ilnome, l'indirizzo e il numero di telefono.
Frasi relative a tipi specifici di partecipantiPer i partecipanti che sono liberiprofessionisti, rappresentiamo l'area diinteresse e, se lo possiedono, il titoloprofessionale. Per i partecipanti che sonodipendenti, rappresentiamo invece il lorolivello e la posizione ricoperta. PosizioneLivello Titolo prof. Area
Partecipante
CF
Codice
…..
Impiegopassato
(0,N)
(0,N)
Dipendente Professionista
Datore Nome
…..Impiegocorrente
(0,N)
(1,1)
Frasi relative ai corsiPer i corsi (circa 200), rappresentiamo il titoloe il codice, le varie edizioni con date di inizio efine e, per ogni edizione, rappresentiamo ilnumero di partecipanti e il giorno dellasettimana, le aule e le ore dove sono tenute lelezioni.
(1,N)
(1,1)
ComposizioneTipologia
(1,1)
(0,N)
Corso
N.Part.Data fine
Data inizio
Edizionecorso
Orario Aula Giorno
Lezione
Titolo Codice
Frasi relative ai docentiPer i docenti (circa 300), rappresentiamo ilcognome, l'età, la città di nascita, tutti inumeri di telefono, il titolo del corso cheinsegnano, di quelli che hanno insegnatonel passato e di quelli che possonoinsegnare. I docenti possono esseredipendenti interni della società diformazione o collaboratori esterni.
Docente
Collaboratore Interno
CF
Cognome
Età
Telefono
Città nascita
(1,N)
Partecipante
Corso
Docente
Partecipazione Docenza
Integrazione
PartecipazionePartecipante Corso
partecipazionepassata
(0,N) (0,N)
partecipazionecorrente
(0,1) (0,N)
Partecipante Edizionecorso
DocenzaCorso Docente
Abilitazione(1,N)
(1,N)
Tipologia
Corso
CodiceTitolo
Datainizio
(0,N)
(1,1)
DocenzaEdizione
corso Docente
Docenzapassata
(0,N)(0,1)
Docenzacorrente
(0,1) (0,1)
Una metodologia generale
(1) Analisi dei requisitiCostruire un glossario dei terminiAnalizzare i requisiti ed eliminare leambiguità presentiRaggruppare i requisiti in insiemiomogenei
Una metodologia generale
(2) Passo baseIndividuare i concetti più rilevanti erappresentarli in uno schema scheletro
(3) Passo di decomposizioneEffettuare una decomposizione conriferimento ai concetti dello schemascheletro
Una metodologia generale
(4) Passo iterativo(da ripetere finché non si è soddisfatti)
Raffinare i concetti presenti sulla basedelle loro specifiche;Aggiungere concetti per descriverespecifiche non ancora descritte;
(5) Passo di integrazioneIntegrare i vari sotto-schemi conriferimento allo schema scheletro
(6) Analisi di qualità(ripetuta e distribuita)
Verificare le qualità dello schema edeventualmente ristrutturarlo
Una metodologia generale Sommario
• Strategie di progetto• Qualità di uno schema concettuale• Un esempio• Una metodologia generale
LA PROGETTAZIONELOGICA
Prima parte
Argomenti della lezione
Inquadramento del problema dellaprogettazione logicaFasi della progettazione logicaRistrutturazione di schemi E-RAnalisi delle prestazioni su schemi E-RAnalisi delle ridondanze
Progettazionefisica
Schema concettuale
Requisiti della base di dati
Progettazioneconcettuale
Progettazionelogica
Schema logico
Schema fisico
“CHE COSA”
“COME”
Progettazionelogica
Obiettivo dellaprogettazione logica
"tradurre" lo schema concettualein uno schema logico che
rappresenti gli stessi dati inmaniera corretta ed efficiente
Dati di ingresso e uscita
Ingresso:schema concettualeinformazioni sul carico applicativomodello logico
Uscita:schema logicodocumentazione associata
alcuni aspetti non sonodirettamente rappresentabiliè necessario prestare attenzionealle prestazioni
Non si tratta di una pura esemplice traduzione per due
motivi
Articolazione in fasi dellaprogettazione logica
Traduzione nelmodello logico
Ristrutturazione delloschema E-R
Schema E-RCaricoapplicativo
Schema E-Rristrutturato
Modellologico
Schemalogico
ProgettazioneLogica
Schemalogico
Ristrutturazione schema E-R
Motivazioni:semplificare la traduzioneottimizzare il progetto
Osservazione:uno schema E-R ristrutturato non è(più) uno schema concettuale nel
senso stretto del termine
Ma:le prestazioni non sono valutabilicon precisione su uno schemaconcettuale!
Per ottimizzare il risultatoabbiamo bisogno di analizzare le
prestazioni a questo livello
Consideriamo degli“indicatori” dei parametri che
regolano le prestazioni
spazio: numero di occorrenzeprevistetempo: numero di occorrenze (dientità e relazioni) visitate duranteun’operazione
CittàIndirizzo
Telefono
Dipartimento
Composizione
Sede
Direzione
Afferenza
Impiegato
Progetto
Partecipazione
Nome
Nome
Cognome
Budget
Data
Via
CAP
(1,1)(0,1)
(1,N)(0,1)
(0,1)(1,1)
(1,N)
(0,N)
(1,N)
(1,N)
Codice
Tavola dei volumi
Concetto Tipo VolumeSede E 10
Dipartimento E 80Impiegato E 2000Progetto E 500
Composizione R 80Afferenza R 1900Direzione R 80
Partecipazione R 6000
Esempio di valutazione di costo
Operazione:trova tutti i dati di un impiegato, deldipartimento nel quale lavora e deiprogetti ai quali partecipa
Si costruisce una tavola degliaccessi basato su uno schema di
navigazione
Telefono
Dipartimento
Afferenza
Impiegato
Progetto
Partecipazione
Nome
Nome
Cognome
Budget
Data
(1,N)(0,1)
(0,1)(1,1)(0,N)
(1,N)
(1,N)
Codice
Tavola degli accessi
Concetto Costrutto Accessi TipoImpiegato Entità 1 LAfferenza Relazione 1 L
Dipartimento Entità 1 LPartecipazione Relazione 3 L
Progetto Entità 3 L
Attività della ristrutturazione
Analisi delle ridondanzeEliminazione delle generalizzazioniPartizionamento/accorpamento dientità e relazioniScelta degli identificatori primari
Analisi delle ridondanze
Una ridondanza in uno schema E-R èuna informazione significativa ma
derivabile da altre
in questa fase si decide se eliminarele ridondanze eventualmente
presenti o mantenerle
semplificazione delle interrogazioni
Svantaggiappesantimento degli aggiornamentimaggiore occupazione di spazio
Vantaggi
Forme di ridondanza in unoschema E-R
attributi derivabili:– da altri attributi della stessa entità (o
relazione)– da attributi di altre entità (o relazioni)
relazioni derivabili dalla composizionedi altre relazioni in presenza di cicli
Attributo derivabile
Impiegato
Importo netto
IVA
Importo lordo
Attributo derivabile daaltra entità
Importo totale
ComposizioneAcquisto Prodotto
Prezzo
(1,N) (1,N)
Corso
Studente
Frequenza
(0,N)
(1,N)
Professore
Insegnamento
(1,1)
(1,1)
Docenza
(0,N)
(1,N)
Ridondanzadovuta a ciclo
Facciamo ora un esempio dianalisi di prestazioni in caso
di presenza e assenza diridondanza
Uno schema con ridondanza
ResidenzaPersona Città
Numero abitanti
Operazione 1: memorizza una nuovapersona con la relativa città diresidenza (500 volte al giorno)Operazione 2: stampa tutti i dati di unacittà (incluso il numero di abitanti)(2 volte al giorno)
Concetto Tipo VolumeCittà E 200
Persona E 1000000Residenza R 1000000
Presenza di ridondanza
Concetto Costrutto Accessi TipoPersona Entità 1 S
Residenza Relazione 1 SCittà Entità 1 LCittà Entità 1 S
Concetto Costrutto Accessi TipoCittà Entità 1 L
Operazione 1
Operazione 2
Assenza di ridondanza
Concetto Costrutto Accessi TipoPersona Entità 1 S
Residenza Relazione 1 S
Concetto Costrutto Accessi TipoCittà Entità 1 L
Residenza Relazione 5000 L
Operazione 1
Operazione 2
Presenza di ridondanza
Costi:Operazione 1: 1500 accessi in scritturae 500 accessi in lettura al giornoOperazione 2: trascurabile.
Contiamo doppi gli accessi inscrittura
Totale di 3500 accessi al giorno
Assenza di ridondanza
Costi:Operazione 1: 1000 accessi in scritturaOperazione 2: 10000 accessi in letturaal giorno
Contiamo doppi gli accessi inscrittura
Totale di 12000 accessi al giorno
Contenuti della lezione
Inquadramento del problema dellaprogettazione logicaFasi della progettazione logicaRistrutturazione di schemi E-RAnalisi delle prestazioni su schemi E-RAnalisi delle ridondanze
LA PROGETTAZIONELOGICA
Seconda parte
Argomenti della lezione
Richiamo sulle fasi della progettazionelogicaEliminazione delle gerarchiePartizionamento e accorpamento diconcettiIdentificatori principaliIntroduzione alla fase di traduzione
Traduzione nelmodello logico
Ristrutturazione delloschema E-R
Schema E-RCaricoapplicativo
Schema E-Rristrutturato
Modellologico
Schemalogico
ProgettazioneLogica
Schemalogico
Attività della ristrutturazione
Analisi delle ridondanzeEliminazione delle generalizzazioniPartizionamento/accorpamento dientità e relazioniScelta degli identificatori primari
Eliminazione delle gerarchie
il modello relazionale non puòrappresentare direttamente legeneralizzazionientità e relazioni sono invecedirettamente rappresentabili
si eliminano perciò le gerarchie,sostituendole con entità e relazioni
Tre possibilità
(1) accorpamento delle figlie dellageneralizzazione nel padre(2) accorpamento del padre dellageneralizzazione nelle figlie(3) sostituzione dellageneralizzazione con relazioni
E0 R1
A01 A02
E3
R2
E4
E2E1
A11 A21
A11
A21
TIPO
(0,1)
(0,1)
(0,..)
E0
A01 A02
R1 E3
R2
E4
E2E1
A11 A21
E3
R2
E4
E2E1
A11 A21
R12
R11
A01 A02 A01 A02
E0 R1
A01 A02
RG2RG1(1,1)
(0,1)
(1,1)
(0,1)
E0
A01 A02
E2E1 R2
E4A11 A21
R1 E3
la scelta fra le alternative si può farecon metodo simile a quello visto per
l'analisi delle ridondanze
è possibile però seguire alcunesemplici regole generali
(1) conviene se gli accessi al padre ealle figlie sono contestuali(2) conviene se gli accessi alle figliesono distinti(3) conviene se gli accessi alle entitàfiglie sono separati dagli accessi alpadre
sono anche possibili soluzioni “ibride”
E0
A01 A02
E2 R2
E4A21
R1 E3
RG2(1,1)
(0,1)
A11
TIPO
(0,1)
E1
A11
Partizionamento eaccorpamento di
concetti
Ristrutturazioni effettuate perrendere più efficienti le operazioni in
base a un semplice principioGli accessi si riducono:
separando attributi di un concetto chevengono acceduti separatamenteraggruppando attributi di concettidiversi acceduti insieme
Tipologie
partizionamento verticale di entità
partizionamento orizzontale direlazioni
eliminazione di attributimultivalore
accorpamento di entità/relazioni
Impiegato
Livello
Stipendio
Ritenute
Cognome
Indirizzo
Datanascita
Codice LivelloStipendio
Ritenute
Cognome
Indirizzo Datanascita
Codice
ImpiegatoDati
anagraficiDati
lavorativi
(1,1) (1,1)
Agenzia
Indirizzo
Città
Telefono
Nome
(1,N)
Numero
Indirizzo
Nome
ImpiegatoAgenzia Telefono
(1,N) (1,1)
Città
IndirizzoInternoCognome
Indirizzo Datanascita
Codicefiscale
IntestazionePersona Appartamento
(0,1) (1,1)
Persona
Interno
Indirizzo
Cognome
Indirizzo
Datanascita
Codicefiscale
(0,1)
(0,1)
Cognome
ComposizioneGiocatore Squadra
(1,N) (1,N)
Ruolo NomeCittà
Dataacquisto
Datacessione
(0,1)Cognome
Comp.passata
Giocatore Squadra
(1,N) (1,N)
Ruolo Nome
Città
Dataacquisto
Datacessione
Comp.attuale
Dataacquisto
(1,1) (1,N)
Scelta degliidentificatori principali
operazione indispensabile per latraduzione nel modello relazionale
Criteri
assenza di valori nullisemplicitàpreferenza per gli identificatoriinterniutilizzo nelle operazioni piùfrequenti o importanti
Se nessuno degli identificatorisoddisfa i requisiti visti?
Si introducono nuovi attributi(codici) contenenti valori speciali
generati appositamente perquesto scopo
Traduzione verso ilmodello relazionale
idea di base:le entità diventano relazioni sugli stessiattributile associazioni (ovvero le relazioni E-R)diventano relazioni sugli identificatoridelle entità coinvolte (più gli attributipropri)
Impiegato(Matricola, Cognome, Stipendio)
Partecipazione
(0,N) (1,N)
Cognome
Stipendio
Matricola
Impiegato
NomeCodice
Budget
Progetto
Progetto(Codice, Nome, Budget)
Partecipazione(Matricola, Codice)
Contenuti della lezione
Richiamo sulle fasi della progettazionelogicaEliminazione delle gerarchiePartizionamento e accorpamento diconcettiIdentificatori principaliIntroduzione alla fase di traduzione
LA PROGETTAZIONELOGICA
Terza parte
Argomenti della lezione
Traduzione nel modello relazionaleAnalisi dei vari casi di traduzioneTraduzione di schemi complessiUn esempio di progettazione logicaProgettazione con strumenti CASE
Traduzione verso ilmodello relazionale
idea di base:le entità diventano relazioni sugli stessiattributile associazioni (ovvero le relazioni E-R)diventano relazioni sugli identificatoridelle entità coinvolte (più gli attributipropri)
Cominciamo con leassociazioni molti a molti
Si tratta del caso più generale
Impiegato(Matricola, Cognome, Stipendio)
Progetto(Codice, Nome, Budget)
Partecipazione(Matricola, Codice, DataInizio)
Partecipazione
(0,N) (1,N)
Cognome
Stipendio
Matricola
Impiegato
NomeCodice
Budget
Progetto
Data inizioPuò essere utile ridenominare gli
attributi della chiave della relazioneche rappresenta l’associazione
Impiegato(Matricola, Cognome, Stipendio)
Progetto(Codice, Nome, Budget)
Partecipazione(Matricola, Codice, DataInizio)Partecipazione(Impiegato, Progetto, DataInizio)
Composizione
ProdottoComposto Componente
Costo Nome Codice
(0,N) (0,N) In questo caso laridenominazione è essenziale
Prodotto(Codice, Nome, Costo)Composizione(Composto, Componente, Quantità)
Fornitore Prodotto
Dipartimento
Fornitura
Nome Partita IVA Genere CodiceQuantità
Nome Telefono
(0,N) (1,N)
(1,N)
Traduzione analoga alleassociazioni binarie
Fornitore(PartitaIVA, Nome)Prodotto(Codice, Genere)
Dipartimento(Nome, Telefono)Fornitura(Fornitore, Prodotto, Dipartimento,
Quantità)
Giocatore SquadraContratto
CognomeData
nascita Città NomeIngaggio
(1,1) (0,N)
Ruolo Colorisociali
Traduzione analoga?
Giocatore(Cognome, DataNascita, Ruolo)
Squadra(Nome, Città, ColoriSociali)
Contratto(Giocatore, DataNascitaGiocatore,NomeSquadra, Ingaggio)
Giocatore(Cognome, DataNascita, Ruolo,NomeSquadra, Ingaggio)
,
IscrizioneStudente Università
Cognome Matricola
Anno Iscrizione
Nome
Indirizzo
(1,1) (1,N)
Città
Si estende la chiave conl’identificatore dell’entità
identificante
Studente(Matricola, NomeUniversita,Cognome, Anno Iscrizione)
Università(Nome, Citta, indirizzo)
Direttore DipartimentoDirezione
Cognome Codice Sede Nome
Datainizio
(1,1) (1,1)
Stipendio Telefono
Due possibilità
Direttore(Codice, Cognome, Stipendio,DipartimentoDiretto, InizioDirezione)Dipartimento(Nome, Telefono, Sede)
Direttore(Codice, Cognome, Stipendio)Dipartimento(Nome, Telefono, Sede,
Direttore, InizioDirezione)
Impiegato DipartimentoDirezione
Cognome Codice Sede Nome
Datainizio
(0,1) (1,1)
Stipendio Telefono
Una soluzione “privilegiata”
Impiegato(Codice, Cognome, Stipendio)
Dipartimento(Nome, Telefono, Sede,Direttore, InizioDirezione)
Impiegato DipartimentoDirezione
Cognome Codice Sede Nome
Datainizio
(0,1) (0,1)
Stipendio Telefono
Una possibilità ulteriore
Impiegato(Codice, Cognome, Stipendio)
Dipartimento(Nome, Telefono, Sede)
Direzione(Direttore, Dipartimento,DataInizioDirezione)
Proviamo a tradurre unoschema più complesso
(1,1)(0,1)
(1,N)(0,1)
(0,1)(1,1)
(1,N)
(0,N)
(1,N)
CittàIndirizzo
Telefono
Dipartimento
Composizione
Sede
Direzione
Afferenza
Impiegato
Progetto
Partecipazione
Nome
Nome
Cognome
Budget
Data
Via
CAP
Codice
Impiegato(Codice, Cognome)
Progetto(Nome, Budget)
Sede(Città, Via, CAP)
(1,1)(0,1)
(1,N)(0,1)
(0,1)(1,1)
(1,N)
(0,N)
(1,N)
CittàIndirizzo
Telefono
Dipartimento
Composizione
Sede
Direzione
Afferenza
Impiegato
Progetto
Partecipazione
Nome
Nome
Cognome
Budget
Data
Via
CAP
Codice
Partecipazione(Impiegato, Progetto)
Dipartimento(Nome, Città, Telefono)
(1,1)(0,1)
(1,N)(0,1)
(0,1)(1,1)
(1,N)
(0,N)
(1,N)
(1,N)
CittàIndirizzo
Telefono
Dipartimento
Composizione
Sede
Direzione
Afferenza
Impiegato
Progetto
Partecipazione
Nome
Nome
Cognome
Budget
Data
Via
CAP
Codice
Dipartimento(Nome, Città, Telefono)
Impiegato(Codice, Cognome)Impiegato(Codice, Cognome, Dipartimento*, Data*),
Dipartimento(Nome, Città, Telefono, Direttore),
Schema finale
Dipartimento(Nome, Città, Telefono, Direttore)
Impiegato(Codice, Cognome, Dipartimento*, Data*)
Partecipazione(Impiegato, Progetto)
Progetto(Nome, Budget)
Sede(Città, Via, CAP)
Strumenti di supporto
Esistono sul mercato prodotti CASEche forniscono un supporto a tutte lefasi della progettazione di basi didati
Contenuti della lezione
Traduzione nel modello relazionaleAnalisi dei vari casi di traduzioneTraduzione di schemi complessiUn esempio di progettazione logicaProgettazione con strumenti CASE
LA NORMALIZZAZIONE
Prima parte
Argomenti della lezione
Forma normale e normalizzazioneRidondanze e anomalieDipendenze funzionaliForma normale di Boyce e CoddProprietà delle decomposizioni
Forme normali
Una forma normale è una proprietà di unabase di dati relazionale che ne garantisce
la “qualità”
Quando una relazione è non-normalizzata:
presenta ridondanze,si presta a comportamenti poco desiderabilidurante le operazioni di aggiornamento
Normalizzazione
Procedura che permette ditrasformare schemi non-normalizzatiin schemi che soddisfano uno formanormale
Concetti utilizzati per verificare irisultati della progettazione di una
base di dati
Esempio di relazione conanomalie
Impiegato Stipendio Progetto Bilancio FunzioneRossi 20 Marte 2 tecnicoVerdi 35 Giove 15 progettistaVerdi 35 Venere 15 progettistaNeri 55 Venere 15 direttoreNeri 55 Giove 15 consulenteNeri 55 Marte 2 consulenteMori 48 Marte 2 direttoreMori 48 Venere 15 progettista
Bianchi 48 Venere 15 progettistaBianchi 48 Giove 15 direttore
Anomalie
Lo stipendio di ciascun impiegato èripetuto in tutte le tuple relative a esso– ridondanza
Se lo stipendio di un impiegato varia, ènecessario andarne a modificare ilvalore in tutte le tuple corrispondenti– anomalia di aggiornamento
Anomalie
Se un impiegato interrompe lapartecipazione a tutti i progetti, non èpossibile conservare traccia del suonome e del suo stipendio– anomalia di cancellazione
Se si hanno informazioni su un nuovoimpiegato, non è possibile inserirlefinchè non partecipa a un progetto– anomalia di inserimento
Perché questi fenomeniindesiderabili?
abbiamo usato un'unica relazioneper rappresentare informazionieterogenee
gli impiegati con i relativi stipendii progetti con i relativi bilancile partecipazioni degli impiegati aiprogetti con le relative funzioni
Per studiare in manierasistematica questi aspetti, ènecessario introdurre uno
strumento di lavoro:la dipendenza funzionale
Definizione generale
Data una relazione r su uno schema R(X) edue sottoinsiemi di attributi non vuoti Y e
Z di X, diremo che esiste su r unadipendenza funzionale (DF) tra Y e Z se,per ogni coppia di tuple t1 e t2 di r aventigli stessi valori sugli attributi Y, risultache t1 e t2 hanno gli stessi valori anche
sugli attributi Z
Notazione
X→→→→Y
Esempi:
Impiegato →→→→ StipendioProgetto →→→→ Bilancio
Sulla base della definizione èvalida anche la seguente DF:
Impiegato Progetto →→→→ Progetto
Si tratta però di una DF “banale”
Diremo che Y →→→→ Z è non banale se
nessun attributo in Z compare tra gli
attributi di Y
Osservazione
Esiste un legame tra proprietà checausano anomalie e dipendenzefunzionali:
gli impiegati hanno un unicostipendio– Impiegato →→→→ Stipendio
i progetti hanno un unico bilancio– Progetto →→→→ Bilancio
Esiste un’altra proprietà che puòessere modellata da una DF
In ciascun progetto, un impiegatosvolge una sola funzione
Impiegato Progetto →→→→ Funzione
Facciamo un confronto
Impiegato →→→→ StipendioProgetto →→→→ Bilanciocausano anomalie
Impiegato Progetto →→→→ Funzionenon causa anomalie
Perché?
Impiegato Stipendio Progetto Bilancio FunzioneRossi 20 Marte 2 tecnicoVerdi 35 Giove 15 progettistaVerdi 35 Venere 15 progettistaNeri 55 Venere 15 direttoreNeri 55 Giove 15 consulenteNeri 55 Marte 2 consulenteMori 48 Marte 2 direttoreMori 48 Venere 15 progettista
Bianchi 48 Venere 15 progettistaBianchi 48 Giove 15 direttore
Impiegato →→→→ StipendioProgetto →→→→ Bilancio
Impiegato Progetto →→→→ Funzione
Le prime due dipendenze hannola parte sinistra che non è
(super)chiave della relazione,la terza si
Introduciamo un criterio che si basasu questa semplice osservazione
Forma normale di Boyce eCodd (BCNF)
Una relazione r è in forma normaledi Boyce e Codd se, per ogni
dipendenza funzionale (non banale)X →→→→ Y definita su di essa, X contiene
una chiave K di r
Che facciamo se una relazionenon soddisfa la BCNF?
La rimpiazziamo con altre relazioniche soddisfano la BCNF
Come?Decomponendo sulla base delle
dipendenze funzionali!
Impiegato Stipendio Progetto Bilancio FunzioneRossi 20 Marte 2 tecnicoVerdi 35 Giove 15 progettistaVerdi 35 Venere 15 progettistaNeri 55 Venere 15 direttoreNeri 55 Giove 15 consulenteNeri 55 Marte 2 consulenteMori 48 Marte 2 direttoreMori 48 Venere 15 progettista
Bianchi 48 Venere 15 progettistaBianchi 48 Giove 15 direttore
Impiegato StipendioRossi 20Verdi 35Neri 55Mori 48
Bianchi 48
Impiegato Progetto FunzioneRossi Marte tecnicoVerdi Giove progettistaVerdi Venere progettistaNeri Venere direttoreNeri Giove consulenteNeri Marte consulenteMori Marte direttoreMori Venere progettista
Bianchi Venere progettistaBianchi Giove direttore
Progetto BilancioMarte 2Giove 15Venere 15
Non sempre così facile
Impiegato Progetto SedeRossi Marte RomaVerdi Giove MilanoVerdi Venere MilanoNeri Saturno MilanoNeri Venere Milano
Impiegato →→→→ SedeProgetto →→→→ Sede
Impiegato Progetto SedeRossi Marte RomaVerdi Giove MilanoVerdi Venere MilanoNeri Saturno MilanoNeri Venere Milano
Decomponiamo sulla basedelle dipendenze
Impiegato SedeRossi RomaVerdi MilanoNeri Milano
Progetto SedeMarte RomaGiove Milano
Saturno MilanoVenere Milano
Proviamo a ricostruire
Impiegato Progetto SedeRossi Marte RomaVerdi Giove MilanoVerdi Venere MilanoNeri Saturno MilanoNeri Venere MilanoVerdi Saturno MilanoNeri Giove Milano
Diversa dalla relazione di partenza!
Impiegato SedeRossi RomaVerdi MilanoNeri Milano
Progetto SedeMarte RomaGiove Milano
Saturno MilanoVenere Milano
Decomposizione senzaperdita
Una relazione r si decomponesenza perdita su X1 e X2 se il joindelle due proiezioni è uguale a rstessa (cioè non contiene tuple
spurie)
Impiegato Progetto SedeRossi Marte RomaVerdi Giove MilanoVerdi Venere MilanoNeri Saturno MilanoNeri Venere Milano
Proviamo a decomporresenza perdita
Impiegato Progetto SedeRossi Marte RomaVerdi Giove MilanoVerdi Venere MilanoNeri Saturno MilanoNeri Venere Milano
Impiegato ProgettoRossi MarteVerdi GioveVerdi VenereNeri SaturnoNeri Venere
Impiegato SedeRossi RomaVerdi MilanoNeri Milano
Un altro problema:conservazione delle
dipendenzeSupponiamo di voler inserire unanuova tupla che specifica lapartecipazione dell'impiegato Neri,che opera a Milano, al progetto Marte
Impiegato Progetto SedeRossi Marte RomaVerdi Giove MilanoVerdi Venere MilanoNeri Saturno MilanoNeri Venere MilanoNeri Marte Milano
Impiegato ProgettoRossi MarteVerdi GioveVerdi VenereNeri SaturnoNeri Venere
Impiegato SedeRossi RomaVerdi MilanoNeri Milano
Neri Marte
Neri Milano
Conservazione delledipendenze
Una decomposizione conserva ledipendenze se ciascuna delle
dipendenze funzionali dello schemaoriginario coinvolge attributi che
compaiono tutti insieme in uno deglischemi decomposti
Qualità delle decomposizioni
Una decomposizione dovrebbesempre soddisfare due proprietà:
la decomposizione senza perdita, chegarantisce la ricostruzione delleinformazioni originariela conservazione delle dipendenze, chegarantisce il mantenimento dei vincolidi integrità originari
Contenuti della lezione
Forma normale e normalizzazioneRidondanze e anomalieDipendenze funzionaliForma normale di Boyce e CoddProprietà delle decomposizioni
LANORMALIZZAZIONE
Seconda parte
Argomenti della lezione
Richiami di normalizzazioneTerza forma normaleDecomposizione in terza forma normaleVerifiche di normalizzazione su schemiE-RAltre forme di decomposizione
Forme normali
Una forma normale è una proprietà di unabase di dati relazionale che ne garantiscela “qualità”
Quando una relazione è non-normalizzata:presenta ridondanze,si presta a comportamenti poco desiderabilidurante le operazioni di aggiornamento
Normalizzazione
Procedura che permette ditrasformare schemi non-normalizzati in schemi chesoddisfano uno forma normale
Concetti utilizzati per verificare irisultati della progettazione di unabase di dati
Forma normale di Boyce eCodd (BCNF)
Una relazione r è in forma normaledi Boyce e Codd se, per ogni
dipendenza funzionale (non banale)X →→→→ Y definita su di essa, X contiene
una chiave K di r
Che facciamo se una relazionenon soddisfa la BCNF?
La rimpiazziamo con altre relazioniche soddisfano la BCNF
Come?Decomponendo sulla base delle
dipendenze funzionali!
Qualità delle decomposizioni
Una decomposizione dovrebbesempre soddisfare due proprietà:
la decomposizione senza perdita, chegarantisce la ricostruzione delleinformazioni originariela conservazione delle dipendenze, chegarantisce il mantenimento dei vincolidi integrità originari
Una relazione non-normalizzata
Dirigente Progetto SedeRossi Marte RomaVerdi Giove MilanoVerdi Marte MilanoNeri Saturno MilanoNeri Venere Milano
Progetto Sede →→→→ DirigenteDirigente →→→→ Sede
La decomposizione èproblematica
Progetto Sede → Dirigentecoinvolge tutti gli attributi quindinessuna decomposizione puòpreservare tale dipendenza
quindi in alcuni casi la BCNF “nonè raggiungibile”
Una nuova forma normale
Una relazione r è in terza formanormale se, per ogni DF (non banale)X →→→→ Y definita su di essa, è verificataalmeno una delle seguenticondizioni:
X contiene una chiave K di rogni attributo in Y è contenuto inalmeno una chiave di r
Dirigente Progetto SedeRossi Marte RomaVerdi Giove MilanoVerdi Marte MilanoNeri Saturno MilanoNeri Venere Milano
Progetto Sede →→→→ Dirigente
La relazione è in terza forma normale
Dirigente →→→→ Sede
BCNF e terza forma normale
la terza forma normale è meno
restrittiva della forma normale di
Boyce e Codd
ha il vantaggio però di essere
sempre “raggiungibile”
Decomposizione in terzaforma normale
si crea una relazione per ogni gruppo diattributi coinvolti in una dipendenzafunzionalesi verifica che alla fine una relazionecontenga una chiave della relazioneoriginaria
Dipende dalle dipendenze individuate
Impiegato Progetto StipendioRossi Marte 50Verdi Giove 30Verdi Venere 30Neri Saturno 40Neri Venere 40
DF: Impiegato →→→→ StipendioChiave: Impiegato Progetto
Impiegato StipendioRossi 50Verdi 30Neri 40
Impiegato ProgettoRossi MarteVerdi GioveVerdi VenereNeri SaturnoNeri Venere
Impiegato Stipendio Progetto Bilancio FunzioneRossi 20 Marte 2 tecnicoVerdi 35 Giove 15 progettistaVerdi 35 Venere 15 progettistaNeri 55 Venere 15 direttoreNeri 55 Giove 15 consulenteNeri 55 Marte 2 consulenteMori 48 Marte 2 direttoreMori 48 Venere 15 progettista
Bianchi 48 Venere 15 progettistaBianchi 48 Giove 15 direttore
Impiegato StipendioRossi 20Verdi 35Neri 55Mori 48
Bianchi 48Impiegato Progetto Funzione
Rossi Marte tecnicoVerdi Giove progettistaVerdi Venere progettistaNeri Venere direttoreNeri Giove consulenteNeri Marte consulenteMori Marte direttoreMori Venere progettista
Bianchi Venere progettistaBianchi Giove direttore
Progetto BilancioMarte 2Giove 15Venere 15
Una possibile strategia
se la relazione non è normalizzata sidecompone in terza forma normale
alla fine si verifica se lo schemaottenuto è anche in terza forma normale
Se una relazione ha una sola chiaveallora le due forme normali
coincidono
Prendiamo uno schema nondecomponibile in BCNF
Dirigente Progetto SedeRossi Marte RomaVerdi Giove MilanoVerdi Marte MilanoNeri Saturno MilanoNeri Venere Milano
Dirigente →→→→ SedeProgetto Sede →→→→ Dirigente
Si può migliorare?
Una possibile riorganizzazione
Dirigente Progetto Sede RepartoRossi Marte Roma 1Verdi Giove Milano 1Verdi Marte Milano 1Neri Saturno Milano 2Neri Venere Milano 2
Dirigente →→→→ Sede RepartoSede Reparto →→→→ DirigenteProgetto Sede →→→→ Reparto
Decomposizione in BCNF
Progetto Sede RepartoMarte Roma 1Giove Milano 1Marte Milano 1
Saturno Milano 2Venere Milano 2
Dirigente Sede RepartoRossi Roma 1Verdi Milano 1Neri Milano 2
Progettazione enormalizzazione
la teoria della normalizzazione puòessere usata nella progettazione logicaper verificare lo schema relazionalefinalesi può usare anche durante laprogettazione concettuale per verificarela qualità dello schema concettuale
Prodotto
Nomeprodotto
Prezzo
Nomefornitore
Indirizzo
PartitaIVA
Codice
PartitaIVA →→→→ NomeFornitore Indirizzo
Analisi dell’entità
L’entità viola la terza forma normalea causa della dipendenza:
PartitaIVA →→→→ NomeFornitore Indirizzo
Possiamo decomporre sulla base diquesta dipendenza
Indirizzo
PartitaIVA
Nomefornitore
Nomeprodotto
Prezzo
Codice
FornituraProdotto Fornitore
(1,1) (0,N)
Prodotto
Nomeprodotto
Prezzo
Nomefornitore
Indirizzo
PartitaIVA
Codice
Professore Studente
Corso dilaurea
Tesi
(0,N) (0,1)
(0,N)
Dipartimento
(0,N)
Studente →→→→ CorsoDiLaureaStudente →→→→ Professore
Professore →→→→ Dipartimento
Analisi della associazione
L’associazione viola la terza forma(visto che Studete e’ la chiaveunica) normale a causa delladipendenza:
Professore →→→→ Dipartimento
Possiamo decomporre sulla basedi questa dipendenza
Professore Studente
Corso dilaurea
Tesi
(0,N) (0,1)
(0,N)
Dipartimento
(0,N)
Dipartimento
Afferenza
(0,N)
(1,1)
Ulteriore analisi sulla basedelle dipendenze
l’associazione Tesi è in terza forma
normale sulla base delle dipendenze
Studente →→→→ CorsoDiLaureaStudente →→→→ Professore
le due proprietà sono indipendentiquesto suggerisce una ulterioredecomposizione
Corso dilaurea
Iscrizione
(0,N)
(1,1)
Professore StudenteTesi
(0,N) (0,1)
Dipartimento
Afferenza
(0,N)
(1,1)
Corso dilaurea
(0,N)
Contenuti della lezione
Richiami di normalizzazioneTerza forma normaleDecomposizione in terza forma normaleVerifiche di normalizzazione su schemiE-RAltre forme di decomposizione
Basi di dati a oggetti
2
Sommario
• Motivazioni• OODB• ORDB• Tecnologia delle basi di dati a oggetti
3
Tecnologia delle basi di dati relazionali
• I sistemi di gestione di basi di dati relazionali (RDBMS) hanno permesso la realizzazione efficace ed efficiente di applicazionidi tipo gestionale, caratterizzate da – persistenza, condivisione, affidabilità– dati a struttura semplice, con dati di tipo numerico/simbolico– transazioni concorrenti di breve durata (OLTP)– interrogazioni complesse, espresse mediante linguaggi
dichiarativi e con accesso di tipo “associativo”• La rapida evoluzioni tecnologica (miglioramento di prestazioni,
capacità, e costi dell’hardware) ha fatto emergere nuove esigenze applicative — per le quali la tecnologia relazionale è inadeguata
4
Alcune aree applicative emergenti
• Progettazione assistita da calcolatore– CASE (Computer-Aided Software Engineering)– CAD (Computer-Aided Design)– CAM (Computer-Aided Manufacturing)
• Gestione di documenti– testi e automazione d’ufficio– dati ipertestuali– dati multimediali
• Altro– scienza e medicina– sistemi esperti, per la rappresentazione di conoscenza
5
Caratteristiche delle nuove aree applicative
• Oltre alle caratteristiche consuete di persistenza, condivisione e affidabilità, possiamo individuare – dati a struttura complessa
• dati non-numerici — immagini, dati spaziali, sequenze temporali, ...
• tipi pre-definiti e tipi definiti dall'utente (e riutilizzati)• relazioni esplicite ("semantiche") tra i dati (riferimenti),
aggregazioni complesse– operazioni complesse
• specifiche per i diversi tipi di dato — es. multimedia• associate anche ai tipi definiti dall'utente • transazioni di lunga durata
6
Basi di dati a oggetti
• Alcune delle precedenti caratteristiche suggeriscono l’introduzione di nozioni dal paradigma orientato agli oggetti nel mondo delle basi di dati
• A partire dalla metà degli anni '80, sono stati realizzati numerosi sistemi di gestione di basi di dati a oggetti (ODBMS) — di tipoprototipale o commerciale
• I sistemi sono stati sviluppati indipendentemente, senza nessuna standardizzazione circa il modello dei dati o i linguaggi da utilizzare
• Dopo un periodo di “evoluzione,” inizia ad esserci una convergenza su modello e linguaggio, per far sì che sistemi realizzati da produttori diversi possano almeno interoperare
7
Tecnologia degli ODBMS
• La prima generazione di ODBMS è composta dai linguaggi di programmazione a oggetti persistenti, che realizzano solo alcune caratteristiche delle basi di dati, senza supporto per l’interrogazione, in modo incompatibile con gli RDBMS
• Gli ODBMS della seconda generazione realizzano un maggior numero di caratteristiche delle basi di dati, e generalmente forniscono un supporto all’interrogazione
• Due tecnologie di ODBMS– OODBMS (Object-Oriented): una tecnologia rivoluzionaria
rispetto a quella degli RDBMS– ORDBMS (Object-Relational): una tecnologia evoluzionaria
rispetto a quella degli RDBMS
8
Un modello dei dati a oggetti
• Una base di dati a oggetti è una collezione di oggetti• Ciascun oggetto ha un identificatore, uno stato, e un
comportamento– l’identificatore (OID) garantisce l’individuazione in modo
univoco dell’oggetto, e permette di realizzare riferimenti tra oggetti
– lo stato è l’insieme dei valori assunti dalle proprietà dell’oggetto — è in generale un valore a struttura complessa
– il comportamento è descritto dall’insieme dei metodi che possono essere applicati all’oggetto
9
Un modello dei dati a oggetti
• Gli oggetti sono associati ad un tipo (intensione) e ad una classe (implementazione)– un tipo è una astrazione che permette di descrivere (1) lo
stato e (2) il comportamento di un oggetto– una classe descrive l’implementazione di un tipo — struttura
dei dati e implementazione di metodi tramite programmi• Gli oggetti vengono raggruppati in collezioni (estensioni)• Faremo le seguenti ipotesi semplificative
– il concetto di classe descrive sia l’implementazione sia l’estensione di un tipo
– ogni tipo è associato ad una sola classe
10
Tipi — parte statica
• Un tipo descrive le proprietà di un oggetto (la parte statica) e l’interfaccia dei suoi metodi (la parte dinamica)
• Relativamente alla parte statica, i tipi vengono costruiti a partire da– un insieme di tipi atomici (numeri, stringhe, ...) – un insieme di costruttori di tipo, tra loro ortogonali
• record-of(A1:T1, ..., An:Tn)• set-of(T), bag-of(T), list-of(T)
– un riferimento ad altro tipo definito nello schema è considerato un tipo, utilizzato per rappresentare relazioni tra oggetti (associazioni)
11
Un esempio di tipo complesso
automobile: record-of(targa: string, modello: string,costruttore: record-of(
nome: string,presidente: string,stabilimenti: set-of(
record-of(nome: string, citta: string,addetti: integer))),
colore: string, prezzo: integer,partiMeccaniche: record-of(
motore: string,ammortizzatore: string))
12
Un esempio di valore complesso
• E’ possibile definire dei valori complessi compatibili con un tipo complesso
V1: [targa: “MI67T891”, modello: “uno”,costruttore: [
nome: “FIAT”, presidente: “Agnelli”,stabilimenti: {
[nome: “Mirafiori”, citta: “Torino”,addetti: 10000],[nome: “Trattori”, citta: “Modena”,addetti: 1000]}],
colore: “blu”, prezzo: 15.5M,partiMeccaniche: [
motore: “1100CV”, ammortizzatore: “Monroe”]]
13
Oggetti e valori
• L’uso di tipi e valori complessi permette di associare ad un singolo oggetto una struttura qualunque
• Viceversa, nel modello relazionale alcuni concetti devono essere rappresentati tramite più relazioni
• Tuttavia, la rappresentazione proposta per automobile non è "normalizzata": vediamo come decomporla utilizzando dei riferimenti tra oggetti
• Un oggetto è una coppia (OID, Valore), dove OID (object identifier) è un valore atomico definito dal sistema e trasparente all’utente, e Valore è un valore complesso
• Il valore assunto da una proprietà di un oggetto può essere l’OID di un altro oggetto (realizzando così un riferimento)
14
Riferimenti
automobile: record-of(targa: string, modello: string,costruttore: *costruttore, colore: string, prezzo: integer,partiMeccaniche: record-of(
motore: string,ammortizzatore: string))
costruttore: record-of(nome: string, presidente: string,stabilimenti: set-of(*stabilimento))
stabilimento: record-of(nome: string, citta: string,addetti: integer)
15
Riferimenti
• Un insieme di oggetti compatibili con lo schemaO1: <OID1, [targa: “MI67T891”, modello: “uno”,
costruttore: OID2, colore: “blu”,prezzo: 15.5M, motore: “1100CV”, ammortizzatore: “Monroe”]>
O2: <OID2, [nome: “FIAT”, presidente: “Agnelli”,stabilimenti: {OID3,OID4}]>
O3: <OID3, [nome: “Mirafiori”, citta: “Torino”,addetti: 10000]>
O4: <OID4, [nome: “Trattori”, citta: “Modena”,addetti: 1000]>
16
Identità e uguaglianza
• Tra gli oggetti sono definite le seguenti relazioni– identità (O1=O2) — richiede che gli oggetti abbiano lo stesso
identificatore– uguaglianza superficiale (O1==O2) — richiede che gli
oggetti abbiano lo stesso stato, cioè stesso valore per proprietà omologhe
– uguaglianza profonda (O1===O2) — richiede che le proprietà che si ottengono seguendo i riferimenti abbiano gli stessi valori (non richiede l’uguaglianza dello stato)
• O1 = <OID1, [a, 10, OID3]>• O2 = <OID2, [a, 10, OID4]>• O3 = <OID3, [a,b]>• O4 = <OID4, [a,b]>
17
18
Semantica dei riferimenti
• Il concetto di riferimento presenta analogie con quello di puntatore nei linguaggi di programmazione, e con quello di chiave esterna in un sistema relazionale. Tuttavia– i puntatori possono essere corrotti (dangling, appesi);
i riferimenti a oggetti (in un buon ODBMS) vengono invalidati automaticamente in caso di cancellazione di un oggetto referenziato
– le chiavi esterne sono visibili, in quanto realizzate tramite valori; gli identificatori d’oggetto non sono associati a valorivisibili dall’utente
– modificando gli attributi di una chiave esterna, è possibile perdere riferimenti; modificando il valore di un oggetto referenziato, il riferimento continua ad esistere
19
Relationships (ODMG-93)
• Riferimenti e collezioni di riferimenti permettono di rappresentare relazioni (binarie) tra due tipi A e B– una relazione uno a uno può essere rappresentata con
attributo "riferimento" in ciascun tipo– una relazione uno a molti, aggiungendo un riferimento da A
a B, e un insieme di riferimenti da B ad A– una relazione molti a molti, aggiungendo un insieme di
riferimenti a ciascun tipo• In questo modo vengono definite due proprietà, una in ciascuna
classe, che non sono indipendenti: ognuna è l’inversa dell’altra• Alcuni modelli definiscono una gestione automatica delle
relazioni
20
Relazioni
Documento: record-of(titolo: string, revisione: date,capitoli: list-of(*Capitolo<->doc), autori: list-of(*Persona<->pubs))
Capitolo: record-of(titolo: string, numero: integer, testo: text,doc: *Documento<->capitoli)
Persona: record-of(nome: string,pubs: list-of(*Documento<->autori))
21
Vincoli di integrità referenziale
• E’ possibile definire diverse semantiche per le relazioni, in riferimento alla possibilità di cancellare oggetti– nessuna verifica — quello che avviene nei linguaggi di
programmazione (nota: un indirizzo di memoria può casualmente venire riassegnato)
– validazione dei riferimenti — è possibile scaricare automaticamente i riferimenti agli oggetti cancellati
– integrità delle relazioni — è possibile scaricare automaticamente i riferimenti inversi agli oggetti non più referenziati
– personalizzata — ad esempio, è possibile fare delle cancellazioni di oggetti in cascata, o prevenirle
22
Metodi — parte dinamica
• Il paradigma OO deriva dal concetto di tipo di dato astratto• Un metodo è una procedura utilizzata per incapsulare lo stato di
un oggetto, ed è caratterizzata da una interfaccia (o segnatura) e una implementazione– l’interfaccia comprende tutte le informazioni che permettono
di invocare un metodo (il tipo dei parametri)– l’implementazione contiene il codice del metodo
• Il tipo di un oggetto comprende, oltre alle proprietà, anche le interfacce dei metodi applicabili a oggetti di quel tipo
• Ipotizziamo che i metodi siano assimilabili a funzioni, ovvero possono avere più parametri di ingresso ma un solo parametro di uscita
23
Metodi
• In prima approssimazione, i metodi possono essere dei seguenti tipi– costruttori — per costruire oggetti a partire da parametri di
ingresso (restituendo l’OID dell’oggetto costruito)– distruttori — per cancellare gli oggetti, ed eventuali altri
oggetti ad essi collegati– accessori — funzioni che restituiscono informazioni sul
contenuto degli oggetti (proprietà derivate)– trasformatori — procedure che modificano lo stato degli
oggetti, e di eventuali altri oggetti ad essi collegati• Un metodo può essere pubblico o privato
24
Metodi
automobile: record-of(targa: string, modello: string,costruttore: *costruttore, colore: string, prezzo: integer,partiMeccaniche: record-of(
motore: string,ammortizzatore: string),
public Init( // costruttore targa_par: string, modello_par: string, colore_par: string, prezzo_par: integer): automobile,
public Prezzo(): integer, // accessorepublic Aumento( // trasformatore
ammontare: integer)) // void
25
Classi — estensioni dei tipi
• Abbiamo ipotizzato che una classe raccoglie tutti gli oggetti diuno stesso tipo
• Una classe è un contenitore di oggetti, che possono essere dinamicamente aggiunti o tolti alla classe (tramite costruttori e distruttori)
• Ad una classe è associato un solo tipo, ovvero gli oggetti in una classi sono tra loro omogenei (hanno le stesse proprietà e rispondono agli stessi metodi)
• Una classe definisce anche l’implementazione dei metodi, che va specificata in qualche linguaggio di programmazione
26
Implementazione e invocazione di metodi
body Init(targa_par: string, modello_par: string,colore_par: string, prezzo_par: integer): automobile in class automobile
co2{self->targa = targa_par;self->modello = modello_par;self->colore = colore_par;self->prezzo = prezzo_par;return(self);
}$
execute co2{ // in un programmao2 automobile X; // dichiarazione di variabile O2X = new(automobile); [X Init(“Mi56T778”, “Panda”, “blu”, 12M)]; }$
27
Disaccoppiamento (o disadattamento) di impedenza
• In un RDBMS, esiste un disaccoppiamento di impedenza tra i linguaggi con i quali vengono scritte le applicazioni (che manipolano variabili scalari) e l’SQL, che estrae insiemi diennuple. Si usano allo scopo i cursori
• Si dice che gli ODBMS risolvono questo problema, in quanto gli oggetti persistenti possono essere manipolati direttamente tramite le istruzioni del linguaggio di programmazione (procedurale)
• Il PL di un ODBMS deve permettere l’accesso alle componenti di un valore complesso — ad esempio, i record con l’operatoredot “.”, i riferimenti con l’operatore “->“, le collezioni con opportuni iteratori
28
Classi ed estensioni
• I concetti di classe e di estensione non sono identici• Una classe è una implementazione di un tipo — significa che
uno stesso tipo può avere implementazioni diverse. Questo è particolarmente importante non per assegnare semantiche diverse a oggetti di uno stesso tipo (sigh!), ma ad esempio per implementare una (unica) semantica di un tipo in riferimento a piattaforme architetturali diverse (nel caso di una base di dati a oggetti distribuita)
• Una estensione è una collezione di oggetti aventi lo stesso tipo; un oggetto può appartenere a più collezioni, essere rimosso da una collezione, ecc.
29
Altre caratteristiche del paradigma a oggetti
• Tra i tipi (e le classi) di una base di dati a oggetti, è possibile definire una gerarchia di ereditarietà, con le usuali relazioni di sottotipo, l’ereditarietà dei metodi, la possibilità di overloading,overriding, late binding, ereditarietà multipla, ...
• Tutto funziona come nei linguaggi di programmazione a oggetti• Esiste tuttavia una importante differenza: gli oggetti di un
programma sono oggetti di breve durata, gli oggetti di una base di dati sono oggetti di lunga durata, con conseguenze non banali...
30
Object Database Management Group e ODMG-93
• ODMG è composto da partecipanti di tipo accademico e industriale, ed in particolare i principali produttori di OODBMS. Citiamo: SunSoft, O2, HP, TI, AT&T, Versant, ONTOS,Objectivity, Itasca, ...
• ODMG-93 è una proposta di standard per OODBMS, che i partecipanti intendono realizzare o supportare– un modello a oggetti– ODL, un linguaggio di definizione basato su IDL (OMG)– OQL, un linguaggio di interrogazione, “basato” su SQL3– Language bindings per C++ e Smalltalk
• ODMG-93 non è uno standard formale nè una specifica di OODBMS
31
Il modello ODMG-93
• Le proprietà e le operazioni di un tipo sono chiamate caratteristiche
• E’ possibile definire una gerarchia di tipi, alcuni dei quali sono astratti (non instanziabili)
• L’estensione di un tipo è l’insieme di tutte le sue istanze• Un tipo ha una o più implementazioni (classi) — ad esempio,
una classe può richiedere di implementare una proprietà di tipo Set come Set_as_Btree
• Alcuni oggetti possono avere un nome, per riferirsi ad essi esplicitamente nei programmi — altri possono essere identificati mediante interrogazioni
32
Persistenza
• Gli oggetti possono essere temporanei (come nei programmi tradizionali) o persistenti.
• La persistenza può essere specificata in vari modi (non sempre tutti disponibili in uno stesso sistema):– inserimento in una classe persistente– raggiungibilità da oggetti persistenti– "denominazione": si può definire un nome ("handle") per un
oggetto
33
OQL — Object Query Language
• Linguaggio SQL-like per basi di dati a oggetti, inizialmente sviluppato per O2, adottato (con modifiche) da ODMG, basato sui seguenti principi– non è computazionalmente completo, ma può invocare
metodi, e metodi possono includere interrogazioni– permette un accesso dichiarativo agli oggetti– basato sul modello ODMG– ha una sintassi astratta — ed almeno una sintassi concreta,
simile a SQL– ha primitive di alto livello per le collezioni– non ha operatori di aggiornamento– può essere ottimizzato in quanto dichiarativo (???)
34
OQL per esempi (1)
• Seleziona il presidentePresidente
• Seleziona i subordinati del presidentePresidente.subordinati
• Seleziona gli stipendi degli impiegati di nome Patselect distinct x.stipendiofrom x in Impiegatiwhere x.nome = “Pat”
• Seleziona nome e età degli impiegati di nome Patselect distinct struct(n: x.nome, e: x.eta())from x in Impiegatiwhere x.nome = “Pat”
35
OQL per esempi (2)
• Attraversamento di una relazioneselect struct
(dip: x.nome_dip, dir: x.direttore.nome)from x in Dipartimenti
• Dovrebbe essere equivalente aselect struct
(dip: x.nome_dip, dir: y.nome)from x in Dipartimenti, y in Impiegatiwhere x.direttore = y
• E’ possibile definire valori a struttura complessastruct(e: 36, nome: “Pat”)
• E’ possibile creare nuovi oggettiImpiegato(nome: “Pat”, ...)
36
OQL per esempi (3)
• Per ciascun impiegato, seleziona il nome e l’insieme dei subordinati con stipendio maggiore di 100000
select distinct struct(nome: x.nome,spp: ( select y
from y in x.subordinatiwhere y.stipendio > 100000
))from x in Impiegati
• La clausola select si può utilizzare anche entro la clausola fromselect struct(n: x.nome, e: x.eta())from x in ( select y from y in Impiegati
where y.stipendio > 100000 )where x.nome = “Pat”
37
OQL per esempi (4)
• Creazione di viste — e accesso a un attributo compostodefine Romani as
select xfrom x in Impiegatiwhere x.nascita.citta = “Roma”
• Appartenenzaselect x.eta()from x in Impiegatiwhere x in Romani
• Quantificatori (queste sono query booleane)for all x in Impiegati: x.stipendio > 200000exists x in Impiegati: x.eta() < 19
38
OQL per esempi (5)
• Subordinati di subordinatiselect distinct struct(imp: x, subsub: y)from x in Impiegati, z in x.subordinati,
y in z.subordinati
• Estrazione di singolettielement(select x.eta()
from x in Impiegatiwhere x.nome = “Bob”)
• Conversione di tipologia di collezionelisttoset(list(1,2,3,2))
• Restituisce la lista degli impiegati, ordinata per nomesort x in Impiegati by x.nome
39
OQL per esempi (6)
• Partiziona gli impiegati in base allo stipendiogroup x in Impiegati by (
low: x.stipendio < 1000,mid: x.stipendio >= 1000 and
x.stipendio < 5000), high: x.stipendio >= 5000)
• Questa espressione ha tiposet<struct(low: boolean, mid: boolean,
high: boolean,partition: set<Impiegato>)>
• Una versione estesa dell’operatore group permette il calcolo di funzioni aggregative
40
The Object-Oriented Database Manifesto(Atkinson, Bancilhon, DeWitt, Dittrich, Maier, Zdonik)
• Una lista di funzionalità per la definizione (e la valutazione) di OODBMS.
• Include:– Funzionalità obbligatorie (the "golden rules")– Funzionalità opzionali– Scelte aperte
41
THE GOLDEN RULES
• Thou shalt support complex objects• Thou shalt support object identity• Thou shalt encapsulate thine objects• Thou shalt support types or classes• Thine classes or types shalt inherit from their ancestors• Thou shalt not bynd prematurely• Thou shalt be computationally complete• Thou shalt be extensible• Thou shalt remember thy data• Thou shalt manage very large databases• Thou shalt accept concurrent users• Thou shalt recover from hardware and software failures• Thou shalt have a simple way of querying data
42
Funzionalità obbligatorie
• Oggetti complessi• Identità di oggetto• Incapsulamento• Tipi e/o classi• Gerarchie di classi o di tipi• Overriding, overloading e late binding• Completezza computazionale• Estensibilità• Persistenza• Gestione della memoria secondaria• Concorrenza• Recovery• Linguaggio o interfaccia di interrogazione
43
Funzionalita' quasi (?) obbligatorie ("no consensus")
• Dati derivati e definizione di viste• Funzionalità DBA• Vincoli di integrità• Funzionalità per la modifica di schemi
44
Funzionalità opzionali
• Ereditarietà multipla• Verifica dei tipi ed inferenza su di essi• Distribuzione• "Design transactions" (transazioni lunghe e nidificate)• Gestione delle versioni
45
The Third Generation Database System Manifesto
(Stonebraker, Rowe, Lindsay, Gray, Carey, Brodie, Bernstein, Beech)
• una risposta al manifesto OODMS • "I DBMS della prossima generazione dovranno essere ottenuti
come risultato dell'evoluzione dei DBMS esistenti (relazionali)"
46
I principi del contromanifesto
• i DBMS di terza generazione dovranno essere una generalizzazione (compatibile) coni DBMS della seconda generazione
• oltre a fornire i servizi tradizionali di gestione deidati, dovranno permettere la definizione di oggetti complessi eregole
• dovranno essere aperti ad altri sottosistemi
47
Manifesto 3GDBMS: dettagli
[1.1] rich type system[1.2] inheritance[1.3] functions and encapsulation[1.4] OID's only if there are no keys[1.5] rules and triggers[2.1] non procedural, high level access languages[2.2] specification techniques for collections[2.3] updatable views[2.4] transparency of physical parameters[3.1] multiple high level languages[3.2] persistent x, for many x's[3.3] SQL is a standard (even if you don't like it)[3.4] queries and their results are the lowest levest ofcommunication
48
Basi di dati “Object-Relational”
• Modello dei dati• Linguaggio di interrogazione
• La futura (forse approvata in questi mesi) versione di SQL (notocome SQL-99)
• Si tratta di una estensione “compatibile” di SQL-2 (cioè il codice SQL-2 è valido anche come SQL-3)
49
Modello dei dati di SQL-3
• È possibile definire tipi:– tipi ennupla, con struttura anche complessa e con gerarchie:
• utilizzabili per definire tabelle con lo stesso schema• utilizzabili come componenti• utilizzabili nell’ambito di relationship
– tipi astratti
50
Interrogazioni in SQL-3
• Le interrogazioni SQL-2 sono ammesse in SQL-3• Inoltre:
– si possono “seguire” i riferimenti– si possono citare gli OID (se visibili)– si può accedere alle strutture interne– si puo’ nidificare (nest) e denidificare (unnest)
51
Interrogazioni in SQL-3
select President -> Namefrom Manufacturerwhere Name = ‘Fiat’
select Name from Manufacturer, Industrialwhere Manufacturer.Name = ‘Fiat’ and Manufacturer.President = Industrial.ManufId
select Maker -> President -> Namefrom Automobilewhere MechanicalParts.Motor = ‘XV154’
52
Unnesting e nesting in SQL-3
select C.Name, S.Cityfrom Manufacturer as C, C.Factories as S
select City, set(name)from manufacturergroup by City
53
Tecnologia delle basi di dati a oggetti
• La realizzazione di sistemi di gestione di basi di dati a oggetti solleva un insieme di problemi tecnologici specifici
• Alcune di queste problematiche– rappresentazione dei dati e degli identificatori– indici complessi– architettura client-server– modello transazionale– architettura a oggetti distribuiti
54
Rappresentazione dei dati
• Possiamo pensare a rappresentazioni relazionali di una base di dati a oggetti — facendo riferimento a gerarchie di classi– approccio orizzontale — ogni oggetto viene rappresentato in
modo “contiguo” entro la classe più specifica di appartenenza
– approccio verticale — gli oggetti sono suddivisi nelle proprie componenti (proprietà), le quali sono memorizzate contiguamente
• L’approccio orizzontale favorisce l’accesso agli oggetti nel loro complesso, l’approccio verticale la ricerca di oggetti sulla base di una loro proprietà
• I BLOB sono rappresentati su file specifici
55
Rappresentazione degli identificatori
• Esistono diversi approcci per la rappresentazione degli OID– mediante indirizzo fisico, ovvero riferimento alla memoria di
massa– mediante surrogato, cioè un valore simbolico associato
univocamente ad un oggetto. L’accesso all’oggetto avviene mediante strutture di accesso
• Nel caso (frequente) di oggetti distribuiti su più sistemi, bisogna garantire l’univocità degli identificatori
56
Indici complessi
• I linguaggi di accesso prevedono l’uso di path expressions, per navigare le componenti degli oggetti ed accedere oggetti ad essicollegati
• Gli operatori “.” e “->“ sono utilizzati per accedere le proprietà di un tipo record, per seguire riferimenti, e talvolta per accedere le componenti di una collezioneselect x.subordinati.subordinati.citta_nascitafrom x in Impiegati
• Sui cammini più utilizzati, deve essere possibile definire degliindici, che consentano un accesso in avanti (determina le città di nascita dei sub-subordinati) oppure in indietro (trova i sup-superiori dei nati a Milano)
• Meccanismi di indicizzazione per tipi di dato specifici (dati multimediali, spaziali, sequenze temporali)
57
Modello transazionale
• Applicazioni orientate alla progettazione richiedono modellitransazionali più complessi che non quelli basati sul locking– transazioni di lunga durata (minuti, ore, o anche giorni)– transazioni complesse:
• transazioni nidificate• saga: transazioni con transazioni compensatrici
• Idee utilizzate – check-out e check-in di oggetti– versioni di oggetti,
versioni di collezioni di oggetti, versioni dello schema degli oggetti
Basi di Dati Attive
Basi di Dati Attive
2
Basi di Dati Attive
Basi di Dati Passive
• le politiche di reazione nei vincoli d’integrità referenziale sono il primo esempio della necessità di introdurre un comportamento reattivo nelle basi di dati “mettendo a fattor comune” parte del comportamento attivo
on < delete | update >< cascade | set null | set default |
no action >• l’idea è di introdurre dei costrutti linguistici dedicati a questo
scopo.• tali costrutti sono detti regole (attive) e mettono a fattor comune
parte del comportamento procedurale dell’applicazione che è così “condivisa” tra le varie applicazioni realizzando “l’indipendenza della conoscenza
3
Basi di Dati Attive
Basi di Dati Attive
• BD con una componente per la gestione di regole attive Evento-Condizione-Azione (regole di produzione con eventi):– eventi: modifiche alla base di dati– valuta una condizione e, in base al valore di verità– esegue una o più azioni
• hanno comportamento reattivo (in contrasto con passivo): eseguono non solo le transazioni utenti ma anche le regole
• i DBMS commerciali (SQL3) usano i trigger per modellare le regole che sono definite, come nello schema
4
Basi di Dati Attive
Anni 70: senza DBMS
Sistema Operativo
A1 An…
Applicazioni
File
Dati in comune
5
Basi di Dati Attive
Anni 80: con DBMS
Sistema Operativo
A1 An…
Applicazioni
File
TabelleDatabase
Scritte in C, Pascal …
6
Basi di Dati Attive
Anni 80: con DBMS e stored procedure
Sistema Operativo
A1 An…
Applicazioni
File
TabelleDatabase
ComportamentoProceduralein comune
7
Basi di Dati Attive
Store procedure
• Le stored procedure (già viste) sono state un’altra alla necessità di esprimere il comportamento procedurale messo a fattor comune tra le varie applicazioni dal DBMS a livello di schema
• Le stored procedure non aderiscono a nessuno standard ed hanno il problema dell’impedance mismatch con il linguaggio usato per definirle
• Il risultato è l’introduzioe dei trigger a livello di schema che devono modellare il comportamento procedurale messo a fattor comune tra le varie applicazioni e sono gestite sotto il controllo del DBMS
8
Basi di Dati Attive
Anni 90: DBMS Attivo
Sistema Operativo
A1 An…
Applicazioni
File
Tabelle
DatabaseAttivo
Trigger
9
Basi di Dati Attive
Evoluzione (anni 00)
Sistema Operativo
A1 An…
Applicazioni
File
Tabelle e TriggerDatabaseAttivo
Interfaccia
Web Application Server
Server
Client
Internet Back-end (Java)
10
Basi di Dati Attive
Trigger
• definiti con istruzioni DDL (create trigger)– basati sul paradigma evento-condizione-azione (ECA):
evento: modifica dei dati, specificata con insert, delete, update
condizione (opzionale) predicato SQLazione: sequenza di istruzioni SQL (o estensioni, ad
esempio PL/SQL in Oracle)– intuitivamente:
quando si verifica l’evento (attivazione)se la condizione è soddisfatta (valutazione)allora esegui l’azione (esecuzione)
– ogni trigger fa riferimento ad una tabella (target): risponde ad eventi relativi a tale tabella
11
Basi di Dati Attive
Trigger: granularità e modalità
• granularità– di ennupla (row-level): attivazione per ogni ennupla coinvolta
nell'operazione– di operazione (statement-level): una sola attivazione per
ogni istruzione SQL, con riferimento a tutte le ennuple coinvolte (“set-oriented”)
• modalità– immediata: subito dopo (o subito prima) dell’evento– differita: al commit
12
Basi di Dati Attive
Modello computazionale
• Sia TU= U1; … ;Un la transazione utente• Se le regole di P hanno la forma E, C →A con E, Evento, C,
Condizione ed A, Azione, allora
• Sematica Immediata genera TI= U1; UP1; … Un; UP
n
• Sematica Differita genera TD = U1;… Un; UP1; …;UP
n
• Dove UPi rappresenta la sequenza di azioni indotte da Ui su P
• Problemi:– Confluenza– Terminazione– Equivalenza
13
Basi di Dati Attive
Trigger in Oracle, sintassi
create trigger TriggerNameMode Event {, Event}on TargetTable[ [referencing Reference]for each row[when SQLPredicate]]PL/SQLBlock
• Mode: before o after• Event: insert, update, delete• for each row specifica la granularità• Reference: permette di definire nomi di variabili (utilizzabili solo
per granularità di ennupla):old as OldVariable | new as NewVariable
14
Basi di Dati Attive
Trigger in Oracle, semantica
• modalità immediata (sia after sia before)• schema di esecuzione:
– trigger before statement– per ogni ennupla coinvolta:
• trigger before row• operazione• trigger after row
– trigger after statement• in caso di errore, si disfa tutto• priorità fra i trigger• massimo 32 trigger attivati in cascata
15
Basi di Dati Attive
Trigger in Oracle, esempio
create trigger Reorderafter update of QtyAvbl on Warehousewhen (new.QtyAvbl < new.QtyLimit)for each row
declare X number;begin
select count(*) into Xfrom PendingOrderswhere Part = new.Part;if X = 0then
insert into PendingOrdersvalues (new.Part, new.QtyReord, sysdate);
end if;end;
16
Basi di Dati Attive
Trigger in Oracle, esempio, 2
T1: update Warehouseset QtyAvbl = QtyAvbl - 70where Part = 1
T2: update Warehouseset QtyAvbl = QtyAvbl - 60where Part <= 3
17
Basi di Dati Attive
Trigger in DB2, sintassi
create trigger TriggerNameMode Event on TargetTable[referencing Reference]for each Level[when (SQLPredicate)]
SQLProceduralStatement
• Mode: before o after• Event: insert, update, delete• for each Level specifica la granularità• Reference: permette di definire nomi di variabili (a seconda della
granularità):old as OldTupleVar | new as NewTupleVar
old_table as OldTableVar | new_table as NewTableVar
18
Basi di Dati Attive
Trigger in DB2, semantica
• modalità immediata (sia after sia before)• i before trigger non possono modificare la base di dati, a parte
varianti sulle modifiche causate dall’evento (e quindi non possono in generale attivare altri trigger)
• in caso di errore, si disfa tutto• nessuna priorità fra i trigger (ordine definito dal sistema),
interazione con le azioni compensative sui vincoli di integrità referenziale
• massimo 16 trigger attivati in cascata
19
Basi di Dati Attive
Trigger in DB2, esempio
foreign key (Supplier)references Distributoron delete set null
create trigger SoleSupplierbefore update of Supplier on Partreferencing new as Nfor each rowwhen (N.Supplier is not null)signal sqlstate '70005' ('Cannot change supplier')
create trigger AuditPartafter update on Partreferencing old_table as OTfor each statementinsert into Auditvalues(user, current-date, (select count(*) from OT))
20
Basi di Dati Attive
Estensioni (di solito non disponibili)
• eventi temporali (anche periodici) o “definiti dall’utente”
• combinazioni booleane di eventi• clausola instead of: non si esegue l'operazione che
ha attivato l'evento, ma un’altra azione• esecuzione “distaccata”: si attiva transazione
autonoma• definizione di priorità• regole a gruppi, attivabili e disattivabili• regole associate anche a interrogazioni (non solo
aggiornamenti)
21
Basi di Dati Attive
Proprietà delle regole
• terminazione (essenziale)• confluenza• determinismo delle osservazioni
22
Basi di Dati Attive
Applicazioni
• funzionalità interne– controllo dei vincoli di integrità– replicazione– gestione delle viste
• materializzate: propagazione• virtuali: modifica delle interrogazioni
• funzionalità applicative: descrizione della dinamica (comportamento) delle basi di dati
BUSINESS INTELLIGENCE:DATAWAREHOUSE &
DATAMINING
2
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Obiettivi
Alla fine di questo modulo dovresti essere in grado di:– Comprendere quali sono le componenti di un moderno
Sistema Informatico.– Conoscere e distinguere le applicazioni transazionali da
quelle per il supporto decisionale.– Capire quali problematiche sussistevano nei Sistemi
Informatici fino all’inizio degli anni ‘90– Capire come è fatto e a cosa serve un DataWareHouse.– Conoscere la definizione di Data Mining e avere un’idea di
base del suo utilizzo e dei suoi modelli di analisi.
3
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Il Sistema Informativo Aziendale (1/2)
Il sistema informativo aziendale raccoglie, organizza, elabora, gestisce edutilizza tutta l’informazione necessaria per la conduzione dell’azienda.
Tale informazione può:– nascere direttamente all’interno dell’azienda durante lo svolgimento dei vari
processi aziendali.– essere acquisita come risultato delle relazioni con soggetti esterni.
Similmente tale informazione può– essere destinata al “consumo” interno.– essere destinata a terzi.
Il Sistema Informativo Aziendale si compone:– di una parte informatizzata chiamato Sistema Informatico Aziendale– una parte non automatizzata come le conversazioni frontali e telefoniche, i
documenti cartacei strutturati e non strutturati, l’organigramma aziendale, laprassi operativa, la prassi decisionale ecc.
4
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Il Sistema Informativo Aziendale (2/2)
Le componenti (sia informatizzate che non) di un Sistema InformativoAziendale (SIA) possono essere divise in due categorie a seconda dellaLoro finalità.
• Componenti per il supporto dell’attività operazionale.Tale parte del SIA si occupa di archiviare, gestire elaborare tuttal’informazione per lo svolgimento dell’attività quotidiana. Ad es.supporto informativo per le operazioni di acquisto, per le vendite, per lamovimentazione del magazzino ecc.
• Componenti per il supporto decisionale.Tale parte del SIA riguarda la gestione, la produzione e l’archiviazioneper supportare i dirigenti nelle scelte strategiche. Ad es. supporto perla scelta di quali prodotti mettere in promozione, quali prodottiaggiungere o rimuovere dal listino, a quale target rivolgere i messaggipubblicitari ecc.
5
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Il Sistema Informatico Aziendale
E’ costituito dall’insieme di strumenti HW/SW che permettono di gestire inManiera automatizzata l’informazione aziendale.Poiché le componenti del Sistema Informatico Aziendale sono unsottoinsieme del Sistema Informativo Aziendale non faremo distinzione trai due. Anche esse divise nelle due categorie citate.
• Applicazionali Transazionali: Sono i sistemi e le procedureinformatiche di supporto all’attività operazionale quotidiana.Le applicazioni che rientrano in questa categoria sono i SistemiLegacy e gli Enterprise Resource Planner (ERP).
• Decision Support System (DSS): Sono i sistemi e le procedureinformatiche di supporto alle scelte strategiche dei dirigenti. In questacategoria rientrano le applicazioni di reportistica statica, le applicazionidi DataWareHousing (o meglio le applicazioni OnLine AnaliticProcessing: OLAP) e le applicazioni di DataMining.
6
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Le parti del Sistema Informativo Aziendale
Sistema Informativo Aziendale
Parte Operazionale Parte Decisionale
TransactionalApplications:
• Sistemi Legacy• ERP
Decision SupportSystem Applications:
• Report• OLAP• DataMining
Sistema Informatico Aziendale
7
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
I Sistemi Legacy (1/2)In passato ogni volta che l’azienda voleva informatizzare una procedura delproprio sistema informativo e via via che la tecnologia disponibile lo permetteva,al Sistema Informatico Aziendale veniva aggiunto un nuovo sistema (oapplicazione) che implementava tale nuovo servizio.
• Ogni applicazione si occupava solo di supportare una singola specificaprocedura aziendale senza interessarsi e tenere conto dell’eventuale presenza dialtre applicazioni informatiche presenti nel sistema informatico aziendale.
• Ogni applicazione in genere utilizzava una propria base di dati indipendente daquella delle altre applicazioni e la gestiva e organizzava secondo una propriaspecifica (base di dati relazionale, base di dati gerarchica, file di record informato proprietario ecc.).
• L’incompatibilità tra le varie applicazioni era aggravata dal fatto che ognuna diesse si basava sulla migliore tecnologia disponibile al momento in cui era statasviluppata quindi accadeva spesso che utilizzassero HW e sistemi operatividifferenti, differenti protocolli di rete, differenti interfacce utente ecc.
8
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
I Sistemi Legacy (2/2)Fino all’inizio degli anni ’90 quindi i Sistemi Informatici Aziendali eranocostituiti da un insieme disordinato di sistemi tra loro indipendenti edincompatibili. Problemi che ne derivavano:• Ridondanza e mancanza di coerenza dell’informazione. La stessainformazione può risiedere in sistemi diversi. Inoltre accade spesso che siaanche rappresentata in maniera diversa. Es. (Male, Female; M, F; 0, 1). Es.archiviata su file con formato record proprietario, su directory database o sudatabase relazionale. Es. codifica ASCII, EBCDIC.• Manca una visione d’insieme dell’informazione (ossia una visione integrataorizzontale dell’azienda). Ad es. il concetto di “cliente” può significare una cosaper l’utente di un sistema ed un’altra cosa per l’utente di un altro sistema.• I sistemi per la gestione delle transazioni (OnLineTransactionProcessing:OLTP) non sono distinti da quelli per l’analisi (OLAP).
Ora possiamo quindi dare la seguente definizione di Sistema Legacy:Un sistema (o applicazione) che continua ad essere usato perché è troppocostoso rimpiazzarlo o risvilupparlo. Ciò comporta che il sistema è complesso,monolitico e difficile da modificare. (Estratto del Foldoc Dictionary)
9
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
GLI ERPNegli anni ’90 con l’avvento dei sistemi ERP (Enterprise Resource Planner) si èeffettuata una prima sostanziale operazione di refactoring del sistema aziendaleverso un sistema integrato.Un sistema ERP è una unica applicazione integrata che gestisce tutte le procedureoperazionali tramite un unico database relazionale ed una unica interfaccia utenteintegrata. Esso quindi fornisce un unico servizio informatizzato integrato per ilricevimento degli ordini, per gli acquisti, per la programmazione della produzione,per la gestione del magazzino, per la contabilità generale e industriale per lafatturazione, per gli incassi per la finanza e il controllo, ecc.
Permangono però alcune problematiche:• Convivono con sistemi legacy.• Gestiscono solo dati correnti.• Non sono orientati all’analisi: il supporto alla BI e le informazioni strategichesono scarsi.• Non forniscono esplicitamente una rappresentazione unica (orizzontale)dell’azienda.
10
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
La reportistica statica
I report in formato statico costituiscono storicamente il primo tipo diapplicazioni di supporto al processo decisionale.
In genere consistevano in degli script realizzati in vari linguaggi diprogrammazione che reperivano le informazioni da una fonteoperazionale (ad esempio tramite Query SQL ad un DB transazionale),effettuavano delle elaborazioni su tali dati e presentavano i risultatisolitamente in formato tabellare.
Essi vengono definiti statici perché la loro logica e il loro formato di outputveniva definito una volta per tutte durante la fase di programmazione. Lostesso script quindi veniva lanciato periodicamente (ad esempio ognigiorno o ogni settimana ecc.) per analizzare i dati di quel periodo ditempo. Ad ogni esecuzione quindi cambiavano i valori esaminati manon il soggetto di indagine ed il formato del risultato. L’utente nonpoteva in alcun modo interagire con l’analisi se non rivolgendosi alprogrammatore che aveva realizzato lo script.
11
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Lamentele
• Abbiamo montagne di dati ma non possiamo accedervi!• Vogliamo selezionare, raggruppare e manipolare i dati in ogni modo possibile!• Mostratemi solo le cose che sono importanti!• Sappiamo tutti che alcuni dati non sono corretti.
R. Kimball “The DataWareHouse Toolkit”
Fino ai primi anni ’90 i sistemi informatici delle aziende erano costituitisolo dalle tre componenti mostrate finora (legacy, ERP e report).Tali sistemi informatici oltre a creare molti problemi agli amministratori disistema per via della loro eterogeneità creava soprattutto molti problemiagli utenti di tutti i reparti aziendali. Riportiamo di seguito alcune delletipiche lamentele degli utenti:
Proprio per rispondere a tali lamentele nei primi anni ’90 nacquero iDataWareHouse.
12
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Tali lamentele scaturivano da due problematiche principali dei SistemiInformatici mostrati finora:
• La ridondanza e incoerenza dei dati derivanti dalla eterogeneità emancanza di integrazione dei sistemi informatici.
• La mancanza di strumenti di supporto decisionale (o strumenti di analisi)efficaci e flessibili.
In sintesi tali problemi possono essere espressi dalla seguente disequazione:
Dati Informazione(conoscenza)
Spesso infatti, disporre di troppi dati (ad es. tutte le transazioni presenti neidatabase operazionali) rende molto difficile, se non impossibile,estrapolare le informazioni veramente importanti, soprattutto poi sequesti dati non sono organizzati e gestiti coerentemente come accadevaquasi sempre con i vecchi sistemi legacy.
Causa delle lamentele
13
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Stessi dati ma con più valore
Nella figura a fianco:Il valore dei dati
Per estrapolare informazioni strategiche dalla vasta mole di datitransazionali presenti nei sistemi informatici aziendali sono state introdottenuove applicazioni di supporto decisionale tra cui: DataWareHouse eDataMining. Il DataWareHouse non comporta l’inserimento di nuovi datiall’interno del sistema informatico aziendale ma si occupa di riorganizzare,integrare, filtrare, aggregare i dati già disponibili per trarne delleinformazioni strategiche di sintesi.
14
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Il DataWareHouse: definizione
“Una collezione di dati orientata ai soggetti, integrata, nonvolatile e correlata alla variabile tempo costruita in supportoalle decisioni manageriali” (W.H.Inmon).
Una base di dati di supporto al processo decisionale che:• E’ orientata ai soggetti (o argomenti).• E’ integrata e consistente.• E’ rappresentativa dell’evoluzione temporale.• E’ non volatile.
Di seguito analizziamo più in dettaglio questi quattro punti delladefinizione.
15
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Base di dati orientata ai soggetti (1/3)• I dati sono organizzati per soggetti (o argomenti) principali. Es. Acquisti, Vendite, Movimentazione di magazzino ecc.
• Ogni soggetto è rappresentato astrattamente come un cubo n-dimensionale (ipercubo) Meglio: per ogni determinato soggetto la basedi dati è costituita da un insieme di punti (i singoli fatti) in uno spazion-dimensionale (l’ipercubo).
• Ogni punto (meglio cella) del cubo contiene misure numeriche chequantificano il fatto da diversi punti di vista.
• Ogni asse dello spazio rappresenta una dimensione di interesse perl’analisi. Una dimensione può essere un qualsiasi insieme di valori(numerici e non) finito e discreto.
• Ogni singolo fatto è quindi identificato univocamente da una n-pla divalori dimensionali (coordinate).
16
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Base di dati orientata ai soggetti (2/3)
Es. Ipercubo del soggetto venditecon tre dimensioni e una misura
La multidimensionalità è un aspetto fondamentale checontraddistingue la rappresentazione concettuale deiDataWareHouse.
17
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Base di dati orientata ai soggetti (3/3)
Ulteriore esempiodi ipercubo con tredimensioni
18
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Base di dati integrata e consistente (1/2)
Le fonti dati da cui il DataWareHouse attinge possono esseremolto differenti tra loro (es. file COBOL, RDBMS, file XML, fogli elettroniciecc.) e possono essere anche esterne al SIA. Di tutti questi dati ilDataWareHouse restituisce una visione unficata, corretta e consistente.
19
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Base di dati integrata e consistente (2/2)Il compito di costruire (e successivamente di mantenere aggiornata) labase di dati integrata (il DataWareHouse) partendo da diverse fontioperazionali è svolto dagli strumenti ETL (Extraction Transformationand Loading). Tale compito può essere diviso in quattro fasi:
• Estrazione: in base ai fatti da caricare nel DW si scelgono e siprelevano le relative transazioni originali dalle varie fonti.• Pulitura: i dati originali quasi sempre contengono errori einconsistenze, questa fase si occupa di migliorare la qualità dei datimediante la loro correzione e omogeneizzazione.• Trasformazione: Questa fase si occupa di convertire i vari formati deidati delle sorgenti operazionali nel rispettivo unico formato delDataWareHouse effettuando le necessarie operazioni di conversione,normalizzazione, matching e integrazione.• Caricamento: i dati ottenuti vengono caricati nel DW o effettuando unRefresh totale dei dati nel DW (di solito ciò viene fatto solo in fase dicostruzione o refactoring del DW) o mediante un Update incrementale.
20
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Base di datirappresentativa dell’evoluzione temporale
DB Operazionali:• Contenuto storico limitato (es. solo esercizio in corso).• Il tempo solitamente non è parte delle chiavi.• I dati possono essere aggiornati continuamente.
DataWareHouse:• Contenuto storico ampio (es. ultimi cinque esercizi).• Il tempo è parte delle chiavi.• Il dato una volta raccolto non può essere modificato daeventuali successive transazioni operazionali. (Fotografiadei dati).
21
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Base di dati non volatile.
• I dati non vengono mai rimossi.
• La base di dati può solo crescere.
• Nuovi dati vengono inseriti “in blocco” prelevandolida basi storiche (es. inserimento dei dati dell’ultimoesercizio o dell’ultimo trimestre ecc.).
• L’insieme dei dati è quindi relativamente statico.
22
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
DataBase operazionali vs. DataWareHouse (1/2)
DB Operazionali e altre fonti interne e/oesterne filtrati dagli strumenti ETL.
Direttamente dalle transazioni e/o dallerelative “pezze d’appoggio” (fatture, bolle,ordini …).
Fonti deidati
O t t im iz -zazione
D BDesign
Tipo diquery
Scopo
Utenti:
Per operazioni OLAP su un’ampia partedel DB.
Per transazioni OLTP su una piccola partedel DataBase.
Orientato ai soggetti. Star Schema.Denormalizzato. Multidimensionale.
Orientato alle applicazioni. Basato su ER.Normalizzato.
OLAP (OnLine Analytical Processing).Query ad hoc molto complesseprevalentemente Read Only.
OLTP (OnLine Transactional Processing).Numerosissime transazioni brevi, semplici epredefinite. Read & Write.
Supporto alle decisioni strategiche.Operazionale (registrazione di tutte leoperazioni quotidiane). Dipendedall’applicazione.
Dirigenti.Impiegati.
DataWareHouseDB operazionale
23
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
DataBase operazionali vs. DataWareHouse (2/2)
Decine o centinaiaCentinaia o migliaiaNumero di utenti
Centinaia o migliaia di GigaByteDecine di GigaByteQuantità di dati
Intra-QueryInter-QueryParallelismo
Per soggetto.Per applicazione.Integrazione dei dati
Di sintesi. Prevalentemente numerici.Elementari. Sia numerici chealfanumerici.
Tipo di dati
DataWareHouseDB operazionale
In termini di consistenza.In termini di integritàQualità dei dati
Dati correnti e storici. (Es. ultimi cinqueesercizi).
Solo dati correnti. (Es.esercizio in corso).
Copertura temporale
24
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Caratteristiche che il sistema diDataWareHouse deve avere
• Facilità d’uso: gli strumenti di DataWareHousing sono destinati ad utentiche spesso non hanno buone conoscenze informatiche.
• Omogeneizzazione, correzione e integrazione dei dati: basandosi suun modello standard per tutta l’azienda (Enterprise Data Model).
• Sintesi: per permettere analisi mirate ed efficaci.
• Flessibilità di interrogazione: per permettere agli utenti di sfruttare almassimo il patrimonio informativo secondo diverse necessità.
• Raprresentazione multidimensionale: per fornire un modello della basedi dati facilmente comprensibile e manipolabile dall’utente.
25
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Le gerarchie di attributi (1/5)
I valori (gli attributi) di una dimensione possono essere inrelazione parziale tra loro secondo una gerarchia (es. città >regione > stato) o un reticolo (es. data > mese > anno; data > n.settimana > anno). Per semplicità spesso si designa con il terminegerarchia anche ciò che in realtà è un reticolo.
Come vedremo queste relazioni tra attributi (gerarchie) vengonosfruttate da alcuni operatori OLAP per permettere all’utente diavere una vista più o meno dettagliata del cubo (aggregazione).
26
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Le gerarchie di attributi (2/5)Es. di un cubo con due misure e tre dimensioni.Nella dimensione “prodotto” è presente una gerarchia a duelivelli. In ciascuna delle altre due dimensioni è presente unagerarchia a tre livelli.
27
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Le gerarchie di attributi (3/5)
Le due ruote
La Bici
Il Biciclo
BiciMania
Le velò
La mobylette
NegozioMilano
Brescia
Verona
Strasbourg
Nancy
Lombardia
Veneto
Alsace
Lorraine
Italia
France
Distretto1Distretto3Distretto7
Città
Distretto di ap-provigionamento
Regione
Stato
Es. Il reticolo di unadimensione.(N.B. Si ipotizza che undistretto possa apparteneread un solo Stato.)
28
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Le gerarchie di attributi (4/5)Es. Cubo in tredimensioni. Ciascuna conuna propria gerarchia.
29
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Le gerarchie di attributi (5/5)Es. Cubo con tre dimensioni e due misure. Ogni dimensione ha unagerarchia di due livelli.N.B. in genere in qualsiasi gerarchia si può considerare anche un ulteriore livelloimplicito il livello nullo.
30
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
La granularità della misure di un fatto (1/2)
Possiamo definire, con questo termine, il grado di sommarizzazionedella singole unità di dati contenute nel DW. Più i dati sono dettagliatie minore è il grado di granularità, più i dati sono sommarizzati emaggiore è il livello di granularità.
31
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
La granularità delle misure di un fatto (2/2)Nei sistemi operazionali i dati sono archiviati sempre a livello di dettagliomassimo, il concetto di granularità non è preso in considerazione.
Nei sistemi OLAP invece è raro che siano considerati d’interesse lemisure delle singole transazioni, generalmente i dati vengonoacceduti in maniera più collettiva ed è quindi ragionevole aumentare illivello di granularità rispetto ai dati operazionali. Nel DW quindi lagranularità è un concetto molto importante. Essa influisce direttamentesul volume dei dati memorizzati e sul tipo di query possibili. Il volumedei dati e il numero di query soddisfacibili sono direttamenteproporzionali tra di loro ma inversamente proporzionali con la facilità diamministrazione.La granularità delle misure di un fatto è un valore unico e statico stabilitouna volta per tutte durante la progettazione ed implementazione delDataWareHouse. Nei DataMart (vedere oltre) però possono essereprecalcolate aggregazioni a diverso livello di dettaglio (granularitàlocale). Questi valori locali non influiscono sul concetto e il valore digranularità globale che resta fisso.
32
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Data Mining
Il Data Mining può essere definito come: “il processo di estrazione diinformazione valida, utilizzabile e precedentemente sconosciuta, dagrandi database e l’utilizzo di queste informazioni per prenderecruciali decisioni di business”.
• informazione: Ciò che cerchiamo sono dei “pattern” ossia delle “forme”, delle“regolarità” tra i dati. Si cerca dunque una caratteristica dell’insieme dei dati chepermette di capire meglio come i dati sono fatti e/o come sono “legati” tra loro.• informazione valida: un data miner, analizzando larghi insiemi di dati, prima opoi troverà qualcosa di interessante. Contrariamente a quanto dicano i super-ottimisti, è necessario controllare che i risultati ottenuti non siano errati.• informazione utilizzabile: deve essere possibile tradurre la nuova informazionein un vantaggio di business;• informazione sconosciuta: il Data Miner ricerca qualcosa che non è intuitivoma, anzi, è spesso controintuitivo (più l’informazione si discosta dall’ovvio, infatti,più è grande il suo valore potenziale).
33
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Data Mining: Un Data Mining: Un processoprocesso di KDD di KDD
Data Cleaning
Data Integration
Databases
Data Warehouse
Task-relevant Data
Selection
Data Mining
Pattern Evaluation
34
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Il Processo di KDD
Il DataMining in realtà è solo una parte di un processo iterativo più ampiochiamato Knowledge Discovery in DataBases.
Il processo di KDD può partire, se disponibile, dal DataWareHouse, altrimentise non esiste un DataWareHouse o se si ha bisogno di analizzare i dati almassimo livello di dettaglio occorrerà partire direttamente dalle fontioperazionali. In quest’ultimo caso occorrerà innanzitutto procedere allapulizia e alla integrazione dei dati in maniera del tutto simile a quantoabbiamo visto per i DataWareHouse. Disporre quindi di unDataWareHouse anche se non è indispensabile può in generesemplificare il lavoro di DataMining.
Vengono poi selezionati i dati rilevanti per l’analisi che vengono passati aglistrumenti di DataMining. Occorrerà poi valutare i risultati e verificare cheessi siano corretti. Qualora i risultati siano positivi la nuova conoscenzaacquisita può essere formalizzata e inserita nel sistema informativoaziendale ad esempio sviluppando dei report o delle analisi OLAP ad hoc.
Il processo di KDD può poi ripartire dai dati tenendo conto di ciò che già siconosce e quindi escludendo dalla ricerca la nuova conoscenza acquisita.
35
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Applicazioni del Data Mining
• Banking:– Concessione prestiti: predire l’affidabilità di un cliente.– Fraud Detection: predire se un acquisto è legittimo o se la carta di credito è stata rubata.
• Customer relationship management:– In base al tipo e alla frequenza di ricorso di un cliente all’assistenza predire se si rischia
che il cliente passi ad un concorrente.• Targeted marketing:
– Raggruppare gli utenti in modo da mandare cataloghi ad hoc ad ogni gruppo.• Telecomunicazioni:
– Da una sequenza di malfunzionamenti predire se si va incontro ad un guasto grave.• Medicina:
– Trovare se esiste una terapia più economica ma ugualmente efficace per un paziente.• Astronomia:
– Identificare nuove galassie analizzando le immagini digitali dal telescopio.• Web site/store design e promozioni:
– Capire gli interessi di un visitatore e proporre hyperlink ad hoc.
L’applicazione di tecniche di Data Mining ha già dato grandi risultati in tantissimisettori. Di seguito ne citiamo alcuni solo a titolo di esempio.
36
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Tipi di analisiPossiamo classificare i tipi di analisi del DataMining in due categorie
Predittive e Decrittive.Le analisi predittive mirano a stabilire quali saranno una caratteristica o un valore
sconosciuti di un elemento di un insieme in base alla storia conosciuta di altrielementi dello stesso insieme. In tali tipi di analisi rientrano:– Classification– Regression– Time Series Analysis– Prediction
Le analisi descrittive mirano ad identificare delle proprietà o delle relazionireciproche degli oggetti analizzati. Tale tipo di analisi quindi permette di capire edescrivere meglio le caratteristiche intrinseche dell’insieme dei dati analizzati. Inquesta categoria rientrano:– Clustering– Summarization– Association Rules– Sequence Discovery
37
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Alcuni esempi (1/3)Classification: Si vuole segmentare l’insieme dei dati in un numero di
classi predefinite. Viene infatti anche chiamato segmentazione oSupervised Learning. Quest’ultima definizione deriva dal fatto che ilnumero e il tipo di classi sono note a priori. Es. Banking: decidere seconcedere un prestito o meno. In base al reddito, al tipo di lavoro, altipo di abitazione ecc. si vuole predire se un soggetto rientra nellaclasse dei debitori affidabili o in quella dei debitori non affidabili.
x: persone che hanno mancato la restituzione di rateo: persone che hanno rispettato le scadenze
In questo sempliceesempio effettuiamola classificazionesolo in base allostipendio
38
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Alcuni esempi (2/3)Regressione: Predire il valore assunto da una variabile continua basandosi sui
valori di una o più altre variabili supponendo che esista tra di esse una qualchedipendenza lineare o non lineare.
Ad es. Predire l’incremento delle vendite in base alla quantità di denaro speso inpubblicità.
Questo tipo di ricerca è molto legata alla disciplina delle scienze statistiche.
Clustering: Anche detto Unsupervised Learning. Per meglio conoscere l’insiemedei dati, si vuole dividere tale insieme in delle classi il cui numero e le cuicaratteristiche non sono noti a priori. L’obiettivo è che gli elementi appartenentialla stessa classe siano il più possibile simili tra loro mentre gli elementiappartenenti a classi diverse siano il più possibile differenti tra loro.
Ad es. Si vogliono suddividere I clienti in gruppi in base al loro comportamentod’acquisto per inviare ad ogni gruppo di clienti un diverso catalogo di prodotti aloro più congeniale.
39
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Alcuni esempi (3/3)Association Rules: Si vogliono individuare delle relazioni tra i dati del tipo A B.Es. Cerchiamo Association Rules nel DB degli scontrini di un ipermercato.Scopriamo che chi acquista pannolini negli ultimi giorni della settimana di solito
acquista anche della birra. Chi ha dei bambini di solito passa il week end a casa.Vantaggio competitivo: Mettiamo la birra in promozione vicino al reparto pannolini.N.B. E’ fondamentale stabilire il livello di supporto e di confidenza atteso.Supporto di AB = (N. Scontrini contenenti A) / ( N. scontrini totale)Confidenza di AB = (N. Scontrini contenenti A AND B) / (N. Scontrini contenenti A)
Sequence discovery: Si ha un insieme di oggetti ognuno dei quali rappresenta unaserie di eventi. Si vogliono trovare delle dipendenze nelle sequenze di eventi.
Es. Navigazione di un sito Web. Ogni oggetto della nostra base di dati (costruitapartendo dal file di log) rappresenta una serie di pagine visitate ordinatecronologicamente.
Si scopre che molti utenti che vanno dalla Home alla pagina A fanno di solito ilseguente percorso: Home A B C
Vantaggio competitivo: Inseriamo un hyperlink da A a C.
40
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
Le tecniche e gli algoritmi su cui è basato il Data Mining sono noti già da diversidecenni. E’ lecito allora porsi la domanda: perché si è cominciato ad usarediffusamente il Data Mining solo a partire dall’ultimo decennio? Ci sonomolteplici motivi:
• Solo recentemente quasi tutte le transazioni sono registrate in formatodigitale (ad es. gli scontrini di un ipermercato). Senza dati (o almeno senza datiin formato elettronico) non si può certo fare Data Mining.
• Solo recentemente, con l’avvento dei DataWareHouse, i dati, sia storici checorrenti, sono disponibili in una unica base dati integrata. Come abbiamovisto la presenza di un DW, pur se non indispensabile, semplifica molto il lavoroed il costo del Data Mining.
• Eseguire gli algoritmi di Data Mining richiede molta potenza di calcolo, solo dapochi anni si ha a disposizione tale capacità di calcolo a prezzi accessibili.
• Solo recentemente sono disponibili software “on the shelf” per il DataMining, prima della diffusione di tali tool sul mercato solo le grandi aziendeavevano un budget sufficiente per sviluppare la propria soluzione di DataMining.
• Inoltre in molti sostengono che le aziende sono spinte ad utilizzare tecniche diData Mining per migliorare le proprie prestazioni come conseguenza dellapressione competitiva dovuta all’apertura del mercato globale dei recenti anni.
Perché oggi?
41
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
DataMining:Confluenza di Diverse Discipline
La disciplina del Data Mining è collegata a diverse altre discipline di cuine sfrutta e ne mette in pratica i risultati. Riassumiamo tali legami nelloschema seguente.
42
IntroduzioneBusiness Intelligence: DataWareHouse & DataMining
M.Golfarelli, S. RizziData Warehouse – Teoria e pratica della progettazioneEditore McGraw-Hill
W. H. InmonWhat is a Data WareHouse?http://www.inmoncif.com/library/whiteprs/earlywp/ttdw.pdf
W. H. InmonSeparating Operational from DSS: some criteriahttp://www.inmoncif.com/library/whiteprs/earlywp/ttoperdw.pdf
Margaret H. DunhamDATA MINING - Introductory and Advanced TopicsEditore: Prentice Hall
Usama Fayyad, Gregory Piatetsky-Shapiro, and Padhraic SmythFrom Data Mining to Knowledge Discovery in Databaseshttp://www.kdnuggets.com/gpspubs/aimag-kdd-overview-1996-Fayyad.pdf
Kurt ThearlingAn Introduction to Data Mining - Discovering hidden value in your data warehousehttp://www.thearling.com/text/dmwhite/dmwhite.htm
Riferimenti Web e Bibliografici
1
Laboratorio di Basi di Dati e Sistemi Informativi
Introduzione
2
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Argomenti del corso
Il corso di Basi di Dati e Sistemi Informativi vi spiega come:Progettare, creare e riempire un database relazionale.Interrogare il database.
In questo corso vedremo come funziona e si usa un DBMS.
1500Bianchi1550Rossi1700Rossi
StipendioCognome Select Cognome, Stipendio
From Impiegati
Where Stipendio>1300
ElenaLucaPieroMariaNome
1500FBianchiMMF
Sesso
1550Rossi1200Neri1700Rossi
StipendioCognome
?
2
3
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Esercitazione di gruppo
Vogliamo implementare un DBMS relazionale!Il sistema deve essere in grado di:
Memorizzare relazioni come R(A,B,C), S(A,B) e T(A,B).Eseguire interrogazioni come:
Select A, B
From R
Where B = 2000
Select R.A, T.B
From R, S, T
Where R.B = S.A And S.B = T.A
4
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Verifica del sistema
Come si comporta il sistema nei confronti di:Ricerca di tuple?Ordine delle operazioni?Aggiornamenti di tuple?Accesso ripetuto alle stesse locazioni su disco?Modifiche concorrenti?Controllo degli accessi?Interfacce di programmazione?
3
5
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Architettura di un DBMS relazionale (1)
Query compiler
Buffer
Lock Table
Execution Engine
Index/File/RecordManager
Buffer Manager
Storage Manager
Transaction Manager
Logging/Recovery Concurrency Control
DDL Compiler
Dati e comandi
Dati
6
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Architettura di un DBMS relazionale (2)
L’architettura presentata nel lucido precedente è composta da tre sottosistemi principali:Per la gestione dei dati su disco.Per l’esecuzione delle interrogazioni.Per la gestione delle transazioni.
4
7
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Sottosistema per le interrogazioni
Query compiler
Buffer
Execution Engine
Index/File/RecordManager
Buffer Manager
Storage Manager
Select A, B
From R1, R2
Where C = D
And C = ‘c’
8
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Query compiler (1)
Il Query Compiler fa il parsing e ottimizza le interrogazioni.L’interrogazione viene prima riconosciuta e controllata sintatticamente.Il risultato del parsing viene tradotto in una espressione in una versione estesa dell’algebra relazionale.L’espressione viene trasformata in un’espressione equivalente ma considerata più efficiente.Il risultato del query compiler è un query plan , cioè un elenco cronologico delle operazioni da compiere per eseguire l’interrogazione.
5
9
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Query compiler (2)
Query compiler
Buffer
Execution Engine
Index/File/RecordManager
Buffer Manager
Storage Manager
Select A, B
From R1, R2
Where C = D
And C = ‘c’πA,B(σC=D(σC=c(R1)×R2))
10
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Execution Engine (1)
L’Execution Engine crea una sequenza di richieste di dati (tipicamente record) e implementa le istruzioni ottenute dal query compiler.
6
11
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Execution Engine (2)
Query compiler
Buffer
Execution Engine
Index/File/RecordManager
Buffer Manager
Storage Manager
Select A, B
From R1, R2
Where C = D
And C = ‘c’πA,B(σC=D(σC=c(R1) × R2))σC=c(R1), ×R2, σ, π
12
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Resource Manager (1)
Il Resource Manager sa dove sono i dati (file e record) e come recuperarli velocemente (indici).Le richieste di dati vengono tradotte in richieste di blocchi sudisco.
7
13
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Resource Manager (2)
Query compiler
Buffer
Execution Engine
Index/File/RecordManager
Buffer Manager
Storage Manager
Select A, B
From R1, R2
Where C = D
And C = ‘c’πA,B(σC=D(σC=c(R1) × R2))σC=c(R1), ×R2, σ, πR1
14
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Gestione dati su disco (1)
Il Buffer Manager ha il compito di trasportare in memoria centrale i blocchi richiesti.Per farlo, si affida allo Storage Manager , che gestisce i dispositivi di memoria secondaria.I Dischi sono i principali dispositivi utilizzati per memorizzare database.I dati gestiti dal buffer manager sono di vario tipo:
Dati : il contenuto del database.
Metadati : lo schema del database.Statistiche : informazioni sul contenuto del database.Indici : strutture di supporto per l’accesso rapido ai dati.
8
15
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Gestione dati su disco (2)
Query compiler
Buffer
Execution Engine
Index/File/RecordManager
Buffer Manager
Storage Manager
Select A, B
From R1, R2
Where C = D
And C = ‘c’πA,B(σC=D(σC=c(R1) × R2))σC=c(R1), ×R2, σ, πR1
σ (R1)
16
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Gestione delle transazioni
L’accesso a un database spesso non si riduce a una singola istruzione SQL, ma prevede una serie di operazioni.
Ad esempio, per effettuare un bonifico occorre leggere il saldo di un conto, sottrarvi la somma dovuta, leggere il saldo di un secondoconto e aggiungervi la stessa somma.
Una sequenza di operazioni detta transazione ha le seguenti proprietà:
Atomicità : viene eseguita del tutto o per niente.Consistenza : i vincoli del database devono essere rispettati.Isolamento : si comporta bene nei confronti di altre transazioni eseguite in concorrenza.Durabilità : l’effetto sul database deve essere persistente.
9
17
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Sottosistema per le transazioni
Lock Table
Transaction Manager
Logging/Recovery Concurrency Control
18
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Log Manager
Per assicurare la persistenza dei dati del database anche in caso di crash, ogni modifica viene registrata separatamente sul disco (durabilità).Il log manager può così ripristinare il database nel caso esso si trovi in uno stato inconsistente (consistenza) o nel caso la transazione non vada a buon fine (atomicità).Anche il log manager utilizza il buffer manager per scrivere i propri dati su disco.Tuttavia, richiede garanzie riguardo al fatto che questi venganoeffettivamente copiati su supporto persistente.In aggiunta, per evitare problemi dovuti alla rottura dei dischi si utilizzano copie di backup del database.
10
19
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Concurrency Control Manager
Le transazioni devono essere eseguite in isolamento ma concorrentemente .Il concurrency control manager determina un ordine di esecuzione delle operazioni tale che esse non interferiscano le une con le altre.Tipicamente questo comportamento viene ottenuto tramite la gestione di una lock table (ma esistono molti modi diversi per farlo).Questo modulo ha anche il compito di risolvere eventuali deadlock , facendo abortire una o più transazioni.
20
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Accesso ai dati
Ora sappiamo come funziona un DBMS!Come fare eseguire al DBMS un’interrogazione?Come gestire la privatezza dei dati?
Query compiler
Buffer
LockTab le
Execution Eng ine
Index/Fi le/RecordManager
Buffer Manager
Storage Manager
Transaction Manager
Logging /Recovery Concurrency Control
DDL Compiler
1500Bianchi1550Rossi1700Rossi
StipendioCognome Select Cognome, Stipendio
From Impiegati
Where Stipendio>1300
ElenaLucaPieroMariaNome
1500FBianchiMMF
Sesso
1550Rossi1200Neri1700Rossi
StipendioCognome
3466…7345…7545…1234…
C.Credito
11
21
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Argomenti del corso
Organizzazione fisica dei dati.Implementazione e ottimizzazione delle interrogazioni.Transazioni.Java e accesso ai dati relazionali.Controllo degli accessi.Strumenti di progettazione e DBMS.
?progetto
22
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Modalità di esame
Domande aggiuntive al compito di Basi di Dati e Sistemi Informativi.Progettazione e implementazione di una base di dati relazionale (facoltativa, per chi vuole prendere più di 28).Il voto è congiunto.
12
23
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Risorse didattiche
Lucidi scaricabili dal sito del prof. Montesi.Newsgroup del corso: unibo.cs.db su news.cs.unibo.it
Hard disksMatteo Magnani, Danilo Montesi c
Hard disksMatteo Magnani, Danilo Montesi
pag. 1
Hard disksMatteo Magnani, Danilo Montesi c
Accesso fisico ai dati
Lettura: trasferimento di dati da disco a RAM.
Scrittura: trasferimento di dati da RAM a disco.
pag. 2
Hard disksMatteo Magnani, Danilo Montesi c
Accesso fisico ai dati
Lettura: trasferimento di dati da disco a RAM.
Scrittura: trasferimento di dati da RAM a disco.
Non si utilizza solamente la RAM per via di:
Costo (con 50–60 euro compriamo circa 100 GBdi disco e circa 256–512 MB di RAM).
Volatilita’.
pag. 2
Hard disksMatteo Magnani, Danilo Montesi c
Gerarchia delle memorie
Cache: ordine dei MB, 10 9s.
Main memory (RAM): ordine dei GB, 10
8–10 7s.
Secondary Storage (dischi):
!100 GB, 10
2s
Tertiary storage (Nastri, silos di nastri, Juke Boxes):
ordine dei TB–PT, 100–102s.
pag. 3
Hard disksMatteo Magnani, Danilo Montesi c
Tecnologia degli hard disk
pag. 4
Hard disksMatteo Magnani, Danilo Montesi c
Principio base 1 dell’I/O
Per leggere un blocco occorrono in media 5ms.
In 5ms si possono effettuare 1 milione di accessirandom in memoria centrale e istruzioni della CPU(come ordine di grandezza).
Il costo di manipolazione dei blocchi e’ solitamentetrascurabile rispetto al costo di lettura e scrittura deglistessi.
pag. 5
Hard disksMatteo Magnani, Danilo Montesi c
Caratteristiche dei dischi
A differenza dei nastri, permettono un accessorandom ai dati.
A differenza delle RAM, il tempo di accessodipende dalla locazione dei dati sul disco.
pag. 6
Hard disksMatteo Magnani, Danilo Montesi c
Componenti di un hard disk (1)
! " # $ % &' ! ( ! " #
)* + &,- # !
pag. 7
Hard disksMatteo Magnani, Danilo Montesi c
Componenti di un hard disk (2)
! "# $%& ' # ( ! # )%* & +
& * # ,- !
. "/
pag. 8
Hard disksMatteo Magnani, Danilo Montesi c
Un po’ di terminologia
Il settore e’ la minima unita’ fisica leggibile escrivibile su disco.
Il blocco a’ un’unita’ logica, di solitocorrispondente a uno o piu’ settori).
I blocchi vengono spostati avanti e indietro da disco(dove sono memorizzati) a memoria centrale (dovevengono manipolati), e in memoria centralevengono chiamati pagine.
pag. 9
Hard disksMatteo Magnani, Danilo Montesi c
Tempo di accesso ai dati
Command Overhead Time (comandi) +
Seek Time (spostamento delle testine sul cilindrocontenente il blocco richiesto) +
Settle Time (stabilizzazione) +
Latency (tempo di attesa perche’ il blocco richiestopassi sotto la testina) +
Transfer Time (trasferimento dei dati).
pag. 10
Hard disksMatteo Magnani, Danilo Montesi c
Command Overhead Time
Nell’ordine dei decimi di millisecondo.
Trascurabile.
pag. 11
Hard disksMatteo Magnani, Danilo Montesi c
Seek Time
Average: ordine dei millisecondi.
Track-to-track: di solito 1ms.
Full-stroke: ordine dei millisecondi.
pag. 12
Hard disksMatteo Magnani, Danilo Montesi c
Settle Time
Nell’ordine dei decimi di millisecondo.
Trascurabile.
Spesso e’ incluso nel seek time.
pag. 13
Hard disksMatteo Magnani, Danilo Montesi c
Latency
Si forniscono la latenza media e massima.
Dipende dalla velocita’ di rotazione.
pag. 14
Hard disksMatteo Magnani, Danilo Montesi c
Transfer Time
Dipende dalla velocita’ di rotazione e dalla densita’di memorizzazione dei dati.
L’Internal Media Transfer Rate si riferisce allospostamento dei dati dai piatti alla cache delcontrollore del disco.
Il Sustained Transfer Rate include l’overheaddovuto al cambio di testina e cilindri (Cylinder ehead skew).
pag. 15
Hard disksMatteo Magnani, Danilo Montesi c
Ultrastar 15k147
Capacita’ 147 GB, 5dischi, 10 testine.
287.140.277 blocchilogici, 512 B/sect.
40935 cilindri, 560–840sectors/track.
3.7 ms AST, 0.6 msT2TST, 6.7 ms FSST.
15.000 RPM, 2 msaverage latency.
DTR: 62–93 MB/s. pag. 16
Hard disksMatteo Magnani, Danilo Montesi c
Algoritmi per dati su disco
pag. 17
Hard disksMatteo Magnani, Danilo Montesi c
Principio base 2 dell’I/O
Algoritmi efficienti per dati in memoria centrale possonoessere molto onerosi se applicati a dati su disco.
Per ordinare una tabella, la copio tutta in memoriacentrale, la ordino, e la riscrivo su disco.
pag. 18
Hard disksMatteo Magnani, Danilo Montesi c
Merge-Sort a Z vie
Se lo spazio in memoria centrale non e’ sufficiente,per ordinare dati su disco, si puo’ utilizzare unalgoritmo che agisce in due passi.
(1) I dati vengono ordinati a pezzi in memoriacentrale. Ogni pezzo ha le dimensioni del bufferdisponibile. Si ottengono cosi’ Z liste di datiordinati.
(2) Si fa il merge delle Z liste.
pag. 19
Hard disksMatteo Magnani, Danilo Montesi c
Un esempio
nr 10.000.000 (numero di record).
r 50B (dimensioni di un record).
B 512B (dimensioni di un blocco).
M 70MB (memoria disponibile).
pag. 20
Hard disksMatteo Magnani, Danilo Montesi c
Record per blocco?
nr 10.000.000 (numero di record).
r 50B (dimensioni di un record).
B 512B (dimensioni di un blocco).
M 70MB (memoria disponibile).
A 10.
B 50.
C 200.000.
D 20.000.000.
pag. 21
Hard disksMatteo Magnani, Danilo Montesi c
Blocchi occupati?
nr 10.000.000 (numero di record).
r 50B (dimensioni di un record).
B 512B (dimensioni di un blocco).
M 70MB (memoria disponibile).
A 10.000.000.
B 1.000.000.
C 200.000.
D 200.000.000.
pag. 22
Hard disksMatteo Magnani, Danilo Montesi c
Pagine di memoria?
nr 10.000.000 (numero di record).
r 50B (dimensioni di un record).
B 512B (dimensioni di un blocco).
M 70MB (memoria disponibile).
A 143.360.
B 70.
C 143.360.000.
D 70.000.000.
pag. 23
Hard disksMatteo Magnani, Danilo Montesi c
Dati derivati
10 record per blocco.
1.000.000 di blocchi occupati.
143.360 pagine di memoria.
pag. 24
Hard disksMatteo Magnani, Danilo Montesi c
Fase 1: Sort
Leggo il 1.000.000 di blocchi 143.360 alla volta, e liordino in memoria centrale.
Scrivo su disco le 7 liste ordinate cosi’ ottenute(1.000.000 blocchi).
pag. 25
Hard disksMatteo Magnani, Danilo Montesi c
Fase 2: Merge
Carico il primo blocco di ogni lista in una pagina, etengo una pagina per l’output.
Faccio il merge delle 7 liste, caricando il bloccosuccessivo di una lista quando quello precedente e’stato utilizzato del tutto (1.000.000 blocchi letti).
Ogni volta che il blocco di output si riempie, loscrivo su disco (1.000.000 blocchi scritti).
pag. 26
Hard disksMatteo Magnani, Danilo Montesi c
Analisi dei costi
La fase 1 consta di 1.000.000 blocchi letti e 1.000.000blocchi scritti.
Poiche’ AST = 3.7ms, AL = 2ms, MTR 75MB/s,per leggere un blocco servono circa 5.7ms.
Per leggere o scrivere 1.000.000 servono in totale5.7 1.000.000ms 95
!
.
La fase 1 necessita di un totale di 190!
.
Lo stesso per la fase 2.
pag. 27
Hard disksMatteo Magnani, Danilo Montesi c
Variazione di parametri
Cosa avviene se aumentiamo la dimensione dei blocco?
A Il tempo di esecuzione aumenta.
B Il tempo di esecuzione resta lo stesso.
C Il tempo di esecuzione diminuisce.
D Nessuna delle precedenti.
Prova alla lavagna.
pag. 28
Hard disksMatteo Magnani, Danilo Montesi c
Velocizzare gli accessi
Se la relazione e’ memorizzata in blocchiconsecutivi, il tempo per leggere o scrivere 1000000di blocchi diviene:
AST + AL + STT (Gia’ compreso lo switch dicilindri).
3.7 2 6510ms 6.5
.
Contro i 95
calcolati in precedenza!
pag. 29
Hard disksMatteo Magnani, Danilo Montesi c
Velocizzare gli accessi
Questo risparmio avviene:
A Sia per la prima fase che per la seconda fase.
B Solo per la prima fase.
C Solo per la seconda fase.
D Non so.
pag. 30
Hard disksMatteo Magnani, Danilo Montesi c
Velocizzare gli accessi
Mentre nella prima fase dell’algoritmo la memoriae’ completamente utilizzata, nella seconda faseutilizziamo solamente 8 blocchi per volta.
Idea: proviamo a utilizzare tutta la memoriacentrale anche nella seconda fase dell’algoritmo.
Prova alla lavagna.
pag. 31
Hard disksMatteo Magnani, Danilo Montesi c
Alcune tecniche di velocizzazione
Organizzare dati per cilindri (appena vista).
Pre-fetching di grosse quantita’ di dati (analoga).
Opportune tecniche di scheduling (niente dettagli –approfondimento libero).
Utilizzare piu’ dischi (prossimo argomento).
pag. 32
Hard disksMatteo Magnani, Danilo Montesi c
Numero max di record ordinabili
La fase 1 crea liste ordinate di al massimo M/Bblocchi.
Nella fase 2, abbiamo bisogno di un blocco dioutput, e possiamo gestire M/B 1 liste.
Di conseguenza, possiamo ordinare circa M/B listedi M/B blocchi, dove ogni blocco contiene B/rrecord:
M2
Br.
Nel nostro esempio, circa 205.520.896.000 record.
Negli esercizi, attenzione alla pagina di output.
pag. 33
Hard disksMatteo Magnani, Danilo Montesi c
Tecnologia RAID
pag. 34
Hard disksMatteo Magnani, Danilo Montesi c
Limiti dei dischi
Negli anni ottanta, la tecnologia degli hard disknon riusciva a compensare lo sviluppo di CPUsempre piu’ economiche e veloci.
Joy’s Law: Computing power of the fastestmicroprocessors, measured in MIPS, increasesexponentially in time. (Bill Joy)
Moore’s Law: Both the number of transistors on achip and the speed of each transistor double every18 (or 12 or 24) months. (Gordon Moore)
Dagli anni ottanta, le prestazioni dei grandi dischisono aumentate circa del 10% all’anno. pag. 36
Hard disksMatteo Magnani, Danilo Montesi c
Un’idea
Utilizzare array di piccoli dischi economici.
Distribuzione dei dati, accessi in parallelo.
pag. 37
Hard disksMatteo Magnani, Danilo Montesi c
Un’idea
Utilizzare array di piccoli dischi economici.
Distribuzione dei dati, accessi in parallelo.
Problema: il tempo medio di crash di un array didischi e’ inversamente proporzionale al numero didischi:
Se un disco si rompe in media ogni 5 anni, un arraydi 100 dischi si rompe circa ogni 18 giorni!
pag. 37
Hard disksMatteo Magnani, Danilo Montesi c
Costo orario di downtime
pag. 38
Hard disksMatteo Magnani, Danilo Montesi c
Costo orario di downtime
Fonte: Eagle Rock Alliance
pag. 39
Hard disksMatteo Magnani, Danilo Montesi c
Sopravvivenza di aziende
pag. 40
Hard disksMatteo Magnani, Danilo Montesi c
RAID
Redundant Array of Inexpensive Disks.
Data Striping e parallelismo, per aumentarel’efficienza.
Piu’ richieste soddisfatte contemporaneamenteda dischi diversi.
Singole richieste soddisfattecontemporaneamente da dischi diversi.
Ridondanza, per aumentare l’affidabilita’.
pag. 41
Hard disksMatteo Magnani, Danilo Montesi c
Tecnologia RAID
Fino a 192 TB.
Fino a 256 GB dicache.
RAID: 5 e 10.
pag. 42
Hard disksMatteo Magnani, Danilo Montesi c
RAID 0
!
Striping a livello diblocco (o multipli).
Non ridondante.
pag. 43
Hard disksMatteo Magnani, Danilo Montesi c
RAID 0
Molto economico.
Migliora le prestazioni di I/O.
Non e’ fault-tolerant.
pag. 44
Hard disksMatteo Magnani, Danilo Montesi c
RAID 1
!
"
#
!
"
#
$
%
&
'
$
%
&
'
Ogni disco e’duplicato.
Non c’e’ data striping.
pag. 45
Hard disksMatteo Magnani, Danilo Montesi c
RAID 1
Elevata fault-tolerance.
In caso di accessi indipendenti, 2 letture e 1scrittura contemporanee per dato.
Costo piu’ elevato tra le architetture RAID.
pag. 46
Hard disksMatteo Magnani, Danilo Montesi c
RAID 0+1
Dati distribuiti su insiemi di dischi in duplice copia.
pag. 47
Hard disksMatteo Magnani, Danilo Montesi c
RAID 2
!"!# !$ !
%"%# %$ %
&"&# &$ &
'"'# '$ '
( )*( "*( # *( $ *
( )+( "+( # +( $ +
( ,-( "-( # -( $ -
Data striping a livellodi bit.
Testine parallele.
Usa codici correttori diHamming.
pag. 48
Hard disksMatteo Magnani, Danilo Montesi c
RAID 2
Alto data transfer rate.
Basso transaction rate.
Inefficiente per parole corte (Rapporti tra numerodischi e numero dischi dati: 7-4,15-11,127-120).
Non implementato commercialmente.
pag. 49
Hard disksMatteo Magnani, Danilo Montesi c
RAID 3
!
"!# !
$ !
%
"%#%
$ %
&
"&#&
$ &
'
"'# '
$ '
(
( "
( #
( $
)* + ,- . /
Data striping a livellodi bit.
Testine parallele.
Usa un solo disco diparita’ con i disk con-troller che identificanoil disco rotto.
pag. 50
Hard disksMatteo Magnani, Danilo Montesi c
RAID 3
Alto data transfer rate.
Basso transaction rate.
Alto rapporto tra numero dischi e numero dischidati.
Da implementare via hardware.
pag. 51
Hard disksMatteo Magnani, Danilo Montesi c
RAID 4
!
"
#
$
% !
% "
% #
% $
& !
& "
& #
& $
' !
' "
' #
' $
(!
("
(#
($
) *+ ,- . /
Data striping a livellodi blocco (o multipli).
Testine indipendenti.
Usa un solo disco diparita’ con i disk con-troller che identificanoil disco rotto.
pag. 52
Hard disksMatteo Magnani, Danilo Montesi c
RAID 4
Alto read data transaction rate.
Basso write data transaction rate.
pag. 53
Hard disksMatteo Magnani, Danilo Montesi c
Riassunto dei primi 4 livelli
Fonte: A Case for Redun-dant Arrays of InexpensiveDisks (RAID), Patterson etal.
pag. 54
Hard disksMatteo Magnani, Danilo Montesi c
RAID 5
Come RAID 4, ma la parita’ e’ distribuita in dischidifferenti.
pag. 55
Hard disksMatteo Magnani, Danilo Montesi c
RAID 6
Uso di codici correttori piu’ sofisticati (es.Reed-Solomon) per il rilevamento di due errorisimultanei in grandi array di dischi.
Esempio: un disco si guasta durante il recovery diun altro disco.
Blocchi di check distribuiti sui dischi dei dati.
pag. 56
Hard disksMatteo Magnani, Danilo Montesi c
Scelta dei livelli
Se la perdita di dati non e’ un problema, livello 0migliora le prestazioni.
Per piccoli sistemi di storage con mirroring di costolimitato, livello 0+1 migliore del livello 1.
Livelli 2 e 4: prestazioni inferiori rispettivamente ailivelli 3 e 5. Livello 3 adatto per grosse letture diblocchi contigui.
Livello 5: buona soluzione general purpose.
Livello 6: necessario per sistemi dove la perdita deidati e’ critica.
pag. 57
Hard disksMatteo Magnani, Danilo Montesi c
Altri tipi di RAID
Esistono varie combinazioni delle tipologie diRAID sopra citate, ottenibili combinando le lorocaratteristiche.
Ad esempio, 3+0,0+3,1+0,5+0,0+5.
Di costo elevato.
Beneficiano del parallelismo di accesso ai dischi diparita’.
pag. 58
Hard disksMatteo Magnani, Danilo Montesi c
Webliografia
http://www.pctechguide.com/Storage.htm
http://www.raid.com
pag. 59
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi
pag. 1
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Dai Blocchi alle Relazioni
Gli attributi sono rappresentati come sequenze dibyte chiamate campi.
I campi sono organizzati in record (tuple).
I record devono essere memorizzati all’interno diblocchi, come mostrato nella lezione precedente.
Ogni record e’ identificabile tramite un rid =
!block_id,posizione_nel_blocco
".
Piu’ blocchi contenenti tipi analoghi di record (adesempio una relazione) prendono il nome di file, epossono avere varie strutture.
pag. 2
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Dai Blocchi alle Relazioni
Campo
Record
Blocco
File.
Due situazioni principali: lunghezza fissa elunghezza variabile.
pag. 3
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Campi a lunghezza fissa
Integer, Float, Dates = numero prefissato di byte.
CHAR(X) = X Bytes.
VARCHAR(X) = X+1 Bytes.
Lunghezza + Stringa.
Stringa + Carattere speciale.
BIT(X) = X Bytes.
pag. 4
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Record a lunghezza fissa
Successione di campi +
Record header
Puntatore a schema.
Lunghezza.
Timestamp.
!" #$%& ' (" ) ' " *+ " ) ' ,- $./ ' + # $ ", 0 123 24 56 6 3
pag. 5
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Blocchi con record a lunghezza fissa
Successione (compatta oppure no) di record +
Block header
Puntatore ad altri blocchi.
Eventuale bitmap dello spazio libero.
Timestamp.
Ci sono problemi a spostare un record all’internodel blocco?
pag. 6
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Record con campi a lung. variabile
Implementazione 1: con caratteri speciali diterminazione.
!" #$%& ' (" ) ' !" *+ " ) ',- $./ ' + #$ "0 1 1
pag. 7
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Record con campi a lung. variabile
Implementazione 2: con direttorio dei campi.
Direttorio utile anche per rappresentare valori nulli.
Due strategie principali (con possibiliimplementazioni intermedie):
Campi variabili all’interno del record.
Campi variabili in un altro blocco.
! "#$ % &! ' % (! )* ! ' %+, # - % * "# !.
pag. 8
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Blocchi con record a lung. variabile.
Direttorio dei record.
Utile anche per record a lunghezza fissa, per glispostamenti di record all’interno del blocco.
Se il puntatore e’ sufficientemente lungo, si possonospostare anche in blocchi differenti.
pag. 9
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Record piu’ lunghi di un blocco
Spanned records, divisi tra piu’ blocchi.
Ogni Record Fragment deve avere un header, permemorizzare lo stato del record(spanned/unspanned, primo/intermedio/ultimo)e puntatori agli altri frammenti.
Utili anche per aumentare la percentuale di discooccupato, nel caso di record piu’ piccoli di unblocco.
pag. 10
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Spanned record
A quanto puo’ tendere nel caso peggiore il fattoredi riempimento dei blocchi, nel caso di record piu’piccoli di un blocco?
A 0%.
B 25%.
C 50%.
D 75%.
E 100%.
pag. 11
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Inserimento di record
Se i record non sono ordinati, si puo’ inserire in unqualsiasi blocco con abbastanza spazio.
Se non ci sono blocchi di questo tipo, si comincia adutilizzare un nuovo blocco.
Se i record sono ordinati, bisogna cercare laposizione di inserimento, e (due scelte):
Cercare spazio in un blocco vicino.
Creare un blocco di overflow.
pag. 12
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Cancellazione di record
Se uso un direttorio nel Block Header, cancello ilrecord e compatto i restanti.
Altrimenti, bisogna mantenere nel Block Headeruna lista con le regioni inutilizzate (la lista puo’essere mantenuta nelle stesse regioni).
Puo’ accadere che si liberino blocchi di overflow, oche sia possibile compattare i record in un numerominore di blocchi.
pag. 13
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Cancellazione di record
Se il sistema prevede puntatori ai record, nel primobit di ogni record si puo’ memorizzare lo stato(attivo(0)/cancellato(1)).
Quando un record viene cancellato, il primo bitrimane fissato a 1 fino a una eventualeriorganizzazione del DB.
pag. 14
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Aggiornamento
Per record a lunghezza fissa, nessuna difficolta’
Per record a lunghezza variabile, stessi problemidell’inserimento (se il record cresce) o dellacancellazione (se il record diminuisce).
Non c’e’ pero’ bisogno di marcatori di statoattivo/cancellato.
pag. 15
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
File
pag. 16
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
File in DBMS
Un file in un DBMS e’ un insieme di blocchi
contenenti record solitamente omogenei,
con un’organizzazione dei blocchi che permettainserimenti, aggiornamenti, cancellazioni, lettura ditutto il file, ricerca di singoli record
possibilmente in modo efficiente.
pag. 17
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Heap File
L’Heap File e’ la struttura piu’ semplice, e consistesemplicemente di blocchi contenenti record senzaun ordine particolare.
Blocchi allocati e disallocati mano a mano che larelazione evolve.
Sono possibili piu’ implementazioni.
pag. 18
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Heap File Naive
File di appartenenza specificato nel Block Header.
Tempo per trovare un record per contenuto (NBblocchi)?
A 1 accesso.
B log(NB) accessi.
C NB accessi.
D Nessuno dei precedenti.
pag. 19
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Heap File Naive
File di appartenenza specificato nel Block Header.
Tempo per inserire un record?
A 2 accessi.
B log(NB) + 1 accessi.
C NB + 1 accessi.
D Nessuno dei precedenti.
pag. 20
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Heap File con Lista
! "#
Puntatori a blocchi“vicini”.
Un blocco conosciutocontiene la testa dellalista.
pag. 21
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Heap File con Lista
Puntatori a blocchi “vicini”.
Un blocco conosciuto contiene la testa della lista.
Tempo per trovare un record per contenuto?
A 1 accesso.
B log(NB) accessi.
C NB accessi.
D Nessuno dei precedenti.
pag. 22
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Heap File con Lista
Puntatori a blocchi “vicini”.
Un blocco conosciuto contiene la testa della lista.
Tempo per inserire un record?
A 2 accessi.
B log(NB) + 1 accessi.
C NB accessi + 1.
D Nessuno dei precedenti.
pag. 23
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Heap File con Directory
In alcuni blocchi(directory)manteniamo ipuntatori ai blocchi,con lo spazio libero inciascun blocco.
La directory e’ imple-mentata con una li-sta di blocchi, ma inogni blocco c’e’ spa-zio per molti puntatori(NPointers). pag. 24
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Heap File con Directory
In alcuni blocchi (directory) manteniamo i puntatoriai blocchi, con lo spazio libero in ciascun blocco.
La directory e’ implementata con una lista diblocchi, ma in ogni blocco c’e’ spazio per moltipuntatori (NPointers).
Tempo per trovare un record per contenuto?
A 1 accesso.
B log(NB/NPointer) accessi + 1.
C NB/NPointer accessi + 1.
D NB + NB/NPointer accessi.pag. 25
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Heap File con Directory
In alcuni blocchi (directory) manteniamo i puntatoriai blocchi, con lo spazio libero in ciascun blocco.
La directory e’ implementata con una lista diblocchi, ma in ogni blocco c’e’ spazio per moltipuntatori (NPointers).
Tempo per inserire un record?
A 2 accessi.
B log(NB/NPointer) accessi + 2.
C NB/NPointer accessi + 2.
D NB + NB/NPointer accessi + 1.pag. 26
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Altre organizzazioni
Nel Sorted file i record vengono mantenuti ordinatirispetto alla chiave di ricerca.
Nel Hashed file viene utilizzata una funzione hash.
pag. 27
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Sorted file
Organizzazione dei blocchi come nell’Heap file.
Inserimenti obbligati, per mantenere l’ordinamento.
Da valutare la compattazione dei record in caso dicancellazione.
pag. 28
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Hashed File
Il file e’ una collezione di Bucket (pagina primaria +zero o piu’ pagine di overflow).
Funzione hash h: h(k) = bucket in cui il recordcontenente la chiave k e’ posto.
La funzione h dipende solo dal campo di ricerca, ecalcola a partire da essa un numero intero compresotra 0 e Bk-1, dove Bk e’ il numero dei bucket
pag. 29
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Hashed File
La funzione hash dovrebbe generare un numerocasuale a partire dalla chiave e dovrebbe esserefacile da calcolare.
Se la chiave k e’ un intero, la funzione hash puo’essere calcolata come il resto di k/Bk.
Se la chiave k e’ una stringa di caratteri, lafunzione hash puo’ vedere ciascun caratterecome un intero, sommare questi interi eprendere il resto quando questa somma e’ divisaper Bk.
pag. 30
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Assunzioni per il confronto
Selezione con uguaglianza basata su una chiave.Esattamente un match.
Heap file con lista.
Sorted file compattati dopo cancellazioni.
Nell’hashed file, nessun bucket di overflow,occupazione delle pagine all’80%.
pag. 31
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Confronto tempi di accesso
Heap File Sorted File Hash File
Scan NB NB 1.25 NB
Equality NB/2 log(NB) 1
Range NB log(NB) + #Bl. utili 1.25 NB
Insert pochi log(NB) + NB 2
Delete NB/2 + 1 log(NB) + NB 2
CASO MEDIO
pag. 32
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Confronto generale
Heap file:
Buon utilizzo spazio.
Scan, inserimento veloci.
ricerca lenta.
Nessun supporto per range search.
Sorted file:
Buon utilizzo dello spazio.
Inserimento, cancellazione lenti.
Ricerca veloce.
Ottimo per range search.pag. 33
Campi, Record, Blocchi e FileMatteo Magnani, Danilo Montesi c
Confronto generale
Hash file:
Peggior utilizzo dello spazio (Scan).
Inserzione, cancellazione e equality search moltoveloci.
Nessun supporto per range search.
pag. 34
1
Indici:introduzione e indici ad albero
2
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Indici
Un indice contiene informazioni ausiliare che aiutano a localizzare in modo veloce i dati contenuti in un file.Le ricerche avvengono relativamente ai valori di alcuni attributi, che formano la chiave di ricerca .Si faccia attenzione alla differenza tra chiave e chiave di ricerca : una chiave di ricerca può contenere valori duplicati.In assenza di ambiguità, utilizzeremo il solo termine chiave.Un indice consiste di coppie chiave-etichetta e supporta l’efficiente recupero di tutte le etichette con chiave K.
IndiceBlocchi
contenentii record
Recordrichiesti
Valore K
2
3
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Rappresentare le etichette (1)
Le etichette possono essere:1. I dati stessi.2. RID (record identifier) di uno dei record con chiave K.3. Lista con i RID dei record con chiave K.
L’alternativa è indipendente dalla tecnica utilizzata per recuperare le coppie chiave-etichetta.
10 Marco Rossi 1234567
10 Marco Verdi 3456721
10 Marco Rossi 1234567
10 Marco Verdi 3456721
10 Marco Rossi 1234567
10 Marco Verdi 3456721
10
10
10
1 2
3
4
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Rappresentare le etichette (2)
Si può avere al più un indice con la prima alternativa su una data collezione di dati.Se i record di dati sono grandi, con la prima alternativa l’informazione ausiliaria nell’indice può impiegare molto spazio.La terza alternativa è più compatta della seconda, ma le etichette sono di lunghezza variabile.
3
5
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Creazione di indici a livello di schema in SQL
CREATE [UNIQUE] INDEX NomeIndice ON NomeTabella(ListaAttributi)
CREATE INDEX ImpPK ON Impiegato(Cognome, Nome)
DROP INDEX ImpPK
DROP INDEX NomeIndice
N.B. non è SQL standard, ma è la sintassi più diffusa
6
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Classificazione degli indici
Un indice è primario se la chiave di ricerca contiene la chiave primaria, altrimenti è detto secondario .Un indice è clustered se l’ordine dei record dei dati è uguale o simile all’ordine delle etichette, altrimenti è detto unclustered .Un indice è denso se contiene almeno un’etichetta per ogni valore della chiave di ricerca nel record dei dati, altrimenti èdetto sparso .
4
7
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Indice denso e clustered
1020
3040
5060
7080
90100
10203040
50607080
90100
Data FileIndex File
8
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Indice sparso e clustered
1020
3040
5060
7080
90100
10305070
90
Data File
Index File
Lo spazio utilizzato dall’indice èInferiore rispetto al caso denso
5
9
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Indici clustered e unclustered
1020
3040
5060
7080
90100
10305070
90
Data FileIndex File
A
B
C
D
A
DC
C
D
E
AABC
DE
Index File
CCDD
Gli indici unclustered possono determinare accessi meno efficienti:ad esempio i due record con il valore A sono mantenuti in due blocchi distanti.
10
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Dato un singolo file, quale delle seguenti affermazioni è falsa?
A Un indice denso può essere secondario.B Un indice sparso può essere clustered.C Un indice sparso può essere unclustered.D Un indice secondario può essere clustered.
6
11
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Dato un singolo file, quale delle seguenti affermazioni è vera?
A Vi può essere al più un indice che utilizza l’alternativa (1) per la rappresentazione delle etichette.B Non vi possono essere più indici che utilizzano l’alternativa (2) per la rappresentazione delle etichette.C L’alternativa (2) è più compatta dell’alternativa (3).D L’alternativa (1) è tanto più utile quanto maggiori sono le dimensioni dei record dati rispetto alla chiave di ricerca.
Reminder: (1) record dati (2) RID (3) Lista di RID.
12
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Più livelli di indicizzazione
Un indice sparso può essere utilizzato per ridurre il numero di blocchi necessario per contenere informazioni sulla posizione dei record.Si possono utilizzare indici su indici.
1020
3040
5060
7080
90100
10305070
90
Data File
Index File
1090
7
13
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
B+Tree
L’utilizzo di più livelli di indicizzazione permette l’esecuzione di ricerche effettuando un accesso per ogni livello dell’albero (piùgli accessi necessari a recuperare la lista dei RID).I sistemi commerciali utilizzano indici ad albero dinamici , che variano il numero di livelli di indicizzazione (altezza dell’albero) a seconda delle dimensioni dei file.I B-Tree memorizzano ogni nodo in un blocco , sono auto-bilancianti e mantengono i nodi pieni almeno per metà (a eccezione della radice).Ogni B-Tree è caratterizzato da un parametro n. Ogni blocco ha spazio per n chiavi e n+1 puntatori.Vedremo la variante più diffusa dei B-Tree, detti B+Tree.
14
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Quanto vale n?
Dimensione di un blocco: 4096 B.Dimensioni di una chiave: 4 B.Dimensioni di un puntatore: 8 B.Si assume non vi sia header nei blocchi.A 340B 4096C 48D 8
MAX(n) tale che 4n + 8(n+1) ≤ 4096 → n = 340
8
15
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Caratteristiche di un B+Tree
Le chiavi nelle foglie sono copie delle chiavi nei dati, e sono distribuite ordinatamente da sinistra a destra.Nella radice vi sono almeno due puntatori utilizzati (nel caso di almeno due chiavi distinte nei dati).L’ultimo puntatore di ogni foglia punta al nodo foglia successivo.Dei rimanenti puntatori, almeno (n+1)/2 (intero inferiore) sono utilizzati e puntano ai record dati.Nei nodi interni, tutti i puntatori utilizzati puntano a blocchi al livello inferiore, e almeno (n+1)/2 (intero superiore) devono essere utilizzati.
16
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
B+Tree: nodi intermedi e nodi foglia
Record conchiave 57
Record conchiave 81
Record conchiave 95
Foglia successiva57 81 95
Record conchiave K<57
Record con57 ≤ K < 81
Record con81 ≤ K < 95
Record conchiave K ≥ 95
57 81 95
9
17
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Un B+Tree
13
7 23 31 43
2 3 5 7 11 13 17 19 23 29 43 4731 37 41
Record dati
18
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Equality search con B+Tree (K=40)
13
7 23 31 43
2 3 5 7 11 13 17 19 23 29 43 4731 37 41
40
40 ≥ 13
4031≤ <43
40
10
19
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Range search con B+Tree (K>40)
13
7 23 31 43
2 3 5 7 11 13 17 19 23 29 43 4731 37 41
40
40 ≥ 13
4031≤ <43
41 43 47
20
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Inserimenti in B+Tree
Cerchiamo la foglia in cui la chiave va inserita, e se c’è spazio la inseriamo.Altrimenti, dividiamo il nodo in due e dividiamo le chiavi tra essi.In questo ultimo caso, al livello superiore deve essere inseritauna nuova chiave per indicizzare il nuovo nodo creato.Se occorre dividere la radice, essa viene spezzata in due e una nuova radice viene creata al livello superiore, con una chiave edue puntatori.Quando si divide un nodo interno, la chiave centrale non viene inserita in uno dei nuovi nodi, ma solamente propagata verso l’alto.
11
21
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Inserimento della chiave 40 (look up)
13
7 23 31 43
2 3 5 7 11 13 17 19 23 29 43 4731 37 41
40
40 ≥ 13
4031≤ <43
22
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Inserimento della chiave 40 (split)
13
7 23 31 43
2 3 5 7 11 13 17 19 23 29 43 47
31 37 40 41
40
12
23
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Inserimento della chiave 40 (propagazione split)
13
7 23 31
2 3 5 7 11 13 17 19 23 29 43 47
31 37 40 41
43
40 40
40
24
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Cancellazione in B+Tree
Cerchiamo il record e se presente lo cancelliamo dalla foglia (senza bisogno di cancellarlo dai nodi intermedi).Se il nodo non soddisfa più i requisiti di riempimento minimo:
Se uno dei nodi adiacenti ha chiavi a sufficienza, si recupera una chiave da esso aggiornando la chiave anche nel nodo padre.In caso contrario, i due nodi adiacenti contengono complessivamente non più di n chiavi. Possiamo dunque compattarli in un unico nodo.In quest’ultimo caso, occorre cancellare una chiave dal padre, e ripetere ricorsivamente l’algoritmo se necessario.
Nel caso di riequilibrio in un nodo interno, i puntatori vanno aggiornati come nell’esempio seguente.
13
25
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Cancellazione di 7 (look up)
13
7 23 31 43
2 3 5 7 11 13 17 19 23 29 43 4731 37 41
7
7 < 13
7 ≥7
26
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Cancellazione di 7 (riequilibrio)
13
7 23 31 43
2 3 11 13 17 19 23 29 43 4731 37 41
5
55
14
27
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Cancellazione di 11 (look up)
13
5 23 31 43
2 3 11 13 17 19 23 29 43 4731 37 415
11
11 < 13
11 ≥5
28
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Cancellazione di 11 (merge)
13
23 31 43
2 3 5 13 17 19 23 29 43 4731 37 41
15
29
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Cancellazione di 11 (riequilibrio)
23
13 31 43
2 3 5 13 17 19 23 29 43 4731 37 41
1323
30
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Crescita in altezza dei B+Tree
5
2 3 115
5
2 3 5
2 3 5
2 3 115
Cancellazione 11
Inserimento 11
16
31
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Complessità della ricerca con B+Tree (1)
Dipende dall’altezza (numero di livelli) dell’albero.Assumiamo di avere N nodi foglia, e n/2 puntatori per nodo. Come varia l’altezza?Al primo livello abbiamo la radice.Al secondo livello abbiamo n/2 nodi.Al terzo livello abbiamo (n/2)2 nodi.Al livello L abbiamo (n/2)L-1 nodi.Se N ≥ (n/2)L-1 e N ≤ (n/2)L allora L-1 ≤ log(n/2)N e L ≥ log(n/2)N.
log(n/2)N ≤ L ≤ log(n/2)N + 1
32
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Complessità della ricerca con B+Tree (2)
Nell’esempio precedente, avevamo 340 coppie chiave-puntatore per nodo.Ogni nodo (ad eccezione della radice) contiene tra le 170 e le 340 chiavi. Assumiamo che ne contenga in media 255.Con una radice, 255 figli e 255*255 = 65.025 foglie indicizziamopiù di 16 milioni di record.I primi due livelli occupano 4096 + 4096*255 = 1MB.Mantenendoli in memoria, ci basta un accesso per recuperare il RID del record ricercato.
1
Indici:basati su hash e invertiti
2
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Indici basati su hashing
Indici potenzialmente molto efficienti per eseguire equalitysearch possono essere implementati utilizzando funzioni hash.Come per l’indicizzazione basata su ordinamento, si possono utilizzare tecniche statiche (come gli indici ad albero a N livelli) o dinamiche (come i B-Tree).In particolare, vedremo:
Hashing statico: utilizzabile per dati a dimensione fissa, ad esempio in un CD-ROM.Hashing estendibile e lineare: utilizzabili in DBMS in cui le dimensioni dei dati e i dati stessi variano nel tempo.
Come per gli indici ad albero per memoria secondaria, gli indicihash utilizzano i blocchi per memorizzare i bucket (panieri).
2
3
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Hashing statico
0001
10011100
0
1
L’hashing statico prevede N bucket e una funzione hash che prende in input una chiave di ricerca e restuisce un numero da 0 a N-1.Nel seguito utilizzeremo funzioni hash Hi, che restituiscono i primi (o gli ultimi) i bit della codifica binaria della chiave di ricerca.Mostreremo le chiavi già codificate, come nell’esempio che segue (bit più significativo).In questo caso, i = 1, N = 2i = 2, e ogni blocco contiene un bucket.
4
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Ricerca di 1100 con hashing statico
0001
10011100
0
11100 H
La funzione hash calcola l’indirizzo del blocco in cui si trovano (se presenti) i record con una certa chiave di ricerca.
Funzione hash
3
5
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Inserimento di 1010 con hashing statico
0001
10011100
0
11010 H
1010
L’hashing statico, non variando il numero di bucket, deve poterne variare le dimensioni, utilizzando blocchi di overflow.
6
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Quanti blocchi sono rappresentati in figura?
A √0B 14
C 2D 3
0001
10011100
0
1 1010
4
7
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Quanti bucket sono rappresentati in figura?
A √0B 14
C 2D 3
0001
10011100
0
1 1010
8
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Cancellazione di 1100 con hashing statico
0001
10011100
0
11100 H
1010
I blocchi di overflow limitano l’efficienza di un indice.La cancellazione di chiavi può portare alla eliminazione di blocchi di overflow.
5
9
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Cancellazione di 1100 con hashing statico
0001
10011010
0
11100
1010
1010
I blocchi di overflow limitano l’efficienza di un indice.La cancellazione di chiavi può portare alla eliminazione di blocchi di overflow.
10
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Complessità della ricerca con hashing statico
In assenza di blocchi di overflow, l’hashing statico permette di recuperare direttamente i record ricercati con un singolo accesso.La presenza di numerosi blocchi di overflow può ridurre drasticamente l’efficienza degli indici basati su funzioni hash.L’efficienza delle strutture dati basate su funzioni hash dipende da:
Rapporto tra le dimensioni dell’indice e dei dati, nonché numero di bucket.
Distribuzione dei valori della chiave di ricerca rispetto alla funzione hash.
Per evitare un eccessivo numero di blocchi di overflow, si può variare dinamicamente la funzione hash utilizzata al fine di adattare il numero di bucket alle dimensioni del file dati.A questo scopo si possono utilizzare l’hashing estendibile, che in caso di necessità permette il raddoppio del numero di bucket, e l’hashinglineare, che permette l’aggiunta di un bucket.
6
11
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Hashing estendibile
Utilizza un livello di indirezione tramite un array di puntatori ai bucket.L’array di puntatori ai bucket cresce raddoppiando le proprie dimensioni. Il numero di bucket è dunque un multiplo di due.Lo stesso blocco può contenere più bucket.La funzione hash utilizzata ritorna gli i bucket più significativi della chiave di ricerca codificata in binario.L’hashing estendibile non utilizza blocchi di overflow.Ogni blocco contiene una variabile che indica quanti bit sono effettivamente utilizzati per indicizzarlo.
12
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Hashing estendibile: ricerca
0001 1
10011100
10
i=1
11100 H1
direttorio
Numero di bit utilizzatoper l’indicizzazione
7
13
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Inserimento con hashing estendibile
Si cerca il bucket in cui inserire la chiave, e se vi è spazio si inserisce.Altrimenti, chiamiamo j il numero di bit utilizzati per indicizzare quel blocco.Se j < i
Si divide il blocco in due.
Si dividono le chiavi tra loro, utilizzando j + 1 bit.
Si incrementa di uno j.
Si aggiorna il direttorio con il puntatore al nuovo blocco.
Se j = iIncrementiamo i di 1.
Raddoppiamo ogni entry del direttorio, in modo che una entry indicizzata dalla sequenza di bit w produca due entry w0 e w1.
Procediamo come nel caso precedente
14
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Hashing estendibile: inserimento 1010 (1)
0001 1
10011100
10
i=1
11010 H1
1010
8
15
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Hashing estendibile: inserimento 1010 (2)
0001 1
10011010
200
i=2
011010
1100 2
1011 SPLIT
16
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Hashing estendibile: inserimento di 0100
0001 1
10011010
200
i=2
010100 H2
1100 2
1011
0100
9
17
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Hashing estendibile: inserimento 0101 (1)
00010100
1
10011010
200
i=2
010101 H2
1100 2
1011
18
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Hashing estendibile: inserimento 0101 (2)
01000101
2
10011010
200
i=2
010101
1100 2
1011
0001 2
10
19
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Hashing estendibile: inserimento 1000
01000101
2
10011010
200
i=2
011000 H2
1100 2
1011
0001 2
20
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Hashing estendibile: inserimento 1000
01000101
2
10011000
3000
i=3
0011000
1100 2
010011
0001 2
1010 3
100101110111
SPLIT
11
21
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Quanti blocchi sono rappresentati in figura?
A 3B 5C 6D 8
01000101
2
10011000
3000
i=3
001
1100 2
010011
0001 2
1010 3
100101110111
22
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Quanti bucket sono rappresentati in figura?
A 3B 5C 6D 8
01000101
2
10011000
3000
i=3
001
1100 2
010011
0001 2
1010 3
100101110111
12
23
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Hashing estendibile: commenti
Non essendoci blocchi di overflow, se il direttorio sta in memoria centrale un record può essere individuato con un solo accesso a disco.Se la redistribuzione dopo uno split è sfortunata, può essere necessario splittare nuovamente uno dei blocchi appena divisi. Si pensi a record che cominciano con la stessa sequenza di bit.La crescita esponenziale del direttorio rischia di renderne complicata la gestione e memorizzazione in memoria centrale.
24
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Hashing lineare
Il numero di bucket cresce di uno alla volta.L’aumento è determinato da una condizione, quale la creazione di un blocco di overflow o il superamento di un determinato rapporto tra record e bucket.Sono permessi blocchi di overflow.Non si utilizzano direttori.Hi(K) restituisce il valore numerico degli i bit meno significativi.Sia n il numero di bucket (con 2i-1 < n ≤ 2i).
Se Hi(K) = m < n la chiave cercata è nell’m-esimo bucket.Se Hi(K) = m ≥ n la chiave cercata è nel bucket m - 2i-1.
13
25
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Inserimento con hashing lineare
Contiamo il numero di record (r) e il numero di bucket (n).Quando il rapporto r/n supera 1.7 splittiamo un bucket, aggiungendo il bucket n+1-esimo.Mentre si utilizza la funzione Hi, si splittano i bucket dal primo al 2i-1-esimo, in ordine, indipendentemente dal bucket che ha causato la divisione.Quando n supera 2i si passa alla funzione con i+1 e si ricominciano a splittare i bucket dal primo.
26
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Hashing lineare: inserimento 0101
000010101111
0
1
i=1n=2r=3
r/n = 1.5
0101 H1
0101
r=4
r/n = 2
>1.7
14
27
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
r/n = 2
Hashing lineare: inserimento 0101
0000
11110101
00
01
i=1n=2r=4
r/n = 1.33
0101
i=2n=3
101010
SPLIT
28
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Hashing lineare: ricerca 0101
0000
11110101
00
01
i=2n=3r=4
r/n = 1.33
0101 H2 101010
15
29
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Hashing lineare: ricerca 1111
0000
11110101
00
01
i=2n=3r=4
r/n = 1.33
1111 H2 101010
11 = 3 ≥ n
3 – 2(i-1) = 1
30
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Hashing lineare: inserimento 0001
0000
11110101
00
01
i=2n=3r=4
r/n = 1.33
0001 H2 101010
0001
r/n = 1.66
r=5
16
31
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
r/n = 1.66
Hashing lineare: inserimento 0110
0000
11110101
00
01
i=2n=3r=5
r/n = 2
0110 H2 101010
0001
0110111111
n=4
SPLIT
r=6
r/n = 1.500010101
32
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Quanti blocchi sono rappresentati in figura?
A 2B 3C 4D 5 0000
11110101
00
01
i=2n=3r=5
101010
0001
17
33
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Quanti bucket sono rappresentati in figura?
A 2B 3C 4D 5 0000
11110101
00
01
i=2n=3r=5
101010
0001
34
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Inverted indexes
Abbiamo visto come recuperare efficientemente da una relazione irecord contenenti uno o più valori di interesse.In modo analogo, possiamo utilizzare indici per recuperare efficientemente documenti testuali di interesse.In questo caso, le interrogazioni che vogliamo supportare sono del tipo:1. Ritornare i documenti che contengono l’insieme di keyword k1, …, kN.
2. Ritornare i documenti che contengono la sequenza di keyword k1, …, kN.
Indici che supportano queste operazioni si chiamano invertiti, in quanto invece di rappresentare tutte le parole presenti in documento (indici) rappresentano tutti i documenti in cui appare una specifica parola.
18
35
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Generazione degli indici (1)
vidi un magnifico disegno. Rappresentava unserpente boa nell’atto di inghiottire un animale
Voi che trovate tornando a casail cibo caldo e visi amiciConsiderate se questo è un uomo
Una mattina, svegliandosi da sogniinquieti, Gregor Samsa si trovò nel suoletto trasformato in un insetto mostruoso
D1
D2
D3
da 4Gregor 7in 15…un 16… a 5
casa 6che 2…
animale 14atto 10boa 8…un 2, 6, 13…
Posizione nel file
36
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Generazione degli indici (1)
a (D2,5)animale (D3,5)atto (D3,6)boa (D3,2)casa (D2,6)che (D2,2)da (D1,4)Gregor (D1,7)in (D1,15)un (D1,16), (D3,2), (D3,6), (D3,13)
da 4Gregor 7in 15…un 16… a 5
casa 6che 2…
animale 14atto 10boa 8…un 2, 6, 13…
19
37
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Generazione degli indici (2)
Le parole presenti nell’indice possono essere modificate per migliorare i risultati di alcune ricerche.Stemming : la ricerca della parola inquieto dovrebbe recuperare il documento D1, che contiene la parola inquieti. A questo scopo si possono indicizzare le parole nella loro forma canonica.Ad esempio, si possono indicizzare i nomi nella forma maschile singolare, e i verbi all’infinito. Un algoritmo di stemming più semplice ma spesso efficace prevede il troncamento delle parole (nell’esempio, la parola inquieti verrebbe indicizzata come inquiet).Eliminazione delle stopwords : alcune parole, come ad esempio gli articoli e i pronomi, sono molto frequenti e non significativi per identificare l’argomento del documento. Si possono dunque eliminare.I due vantaggi dell’eliminazione delle stopwords consistono nel miglioramento di ricerche basate sulla rilevanza (che non tratteremo) e nella riduzione delle dimensioni dell’indice.
38
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Interrogazioni con inverted index (1)
Ritornare i documenti che contengono “un” e “atto”.
a (D2,5)animale (D3,5)atto (D3,6)boa (D3,2)casa (D2,6)che (D2,2)da (D1,4)Gregor (D1,7)in (D1,15)un (D1,16), (D3,2), (D3,6), (D3,13) D1, D3
D3
D3
vidi un magnifico disegno. Rappresentava unserpente boa nell’atto di inghiottire un animale
D3
20
39
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Interrogazioni con inverted index (2)
Ritornare i documenti che contengono “un atto”.
a (D2,5)animale (D3,14)atto (D3,10)boa (D3,8)casa (D2,6)che (D2,2)da (D1,4)Gregor (D1,7)in (D1,15)un (D1,16), (D3,2), (D3,6), (D3,13) (D1,16), (D3,2), (D3,6), (D3,13)
(D3,10)D3:2, 106, 1013, 10
40
Laboratorio di Basi di Dati e Sistemi InformativiMatteo Magnani, Danilo Montesi ©
Interrogazioni con inverted index (3)
Ritornare i documenti che contengono “un animale”.
a (D2,5)animale (D3,14)atto (D3,10)boa (D3,8)casa (D2,6)che (D2,2)da (D1,4)Gregor (D1,7)in (D1,15)un (D1,16), (D3,2), (D3,6), (D3,13) (D1,16), (D3,2), (D3,6), (D3,13)
(D3,14)
D3:2, 146, 1413, 14
vidi un magnifico disegno. Rappresentava unserpente boa nell’atto di inghiottire un animale
D3
1
Transazioni
2
Transazioni
dischi
StorageManager
BufferManager
Index/file/recordManager
ExecutionEngine
TransactionManager
Logging/Recovery
QueryCompiler
Concurrencycontrol
Buffers
LockTable
Utente/Applicazione
Query/update transazioni
Query plan
richieste di indici, record e file
comandi su pagine
Lettura/scrittura pagine
pagine di log
metadati, statistiche
metadati,indici, statistiche
DDLCompiler
Amministratore
Comandi DDL
metadati
Architettura di un DBMS
2
3
Transazioni
Programmi utente in un DBMS
• Un utente accede e/o modifica i dati attraverso un programma scritto in un linguaggio di query/update di alto livello
• Un programma a livello utente, dal punto di vista di un DBMS, può essere inteso come una sequenza di letture e scritture
• Una transazione rappresenta l’esecuzione di un programma utente in un DBMS
• Due problemi importanti:- Transazioni concorrenti- Crash recovery
4
Transazioni
Concorrenza in un DBMS: motivazioni
• Per motivi prestazionali , dal momento che gli accessi a disco sono lenti, si possono eseguire in modo concorrente piùtransazioni, tenendo la CPU sempre impegnata
• Problema: l’utente non deve avere percezione della molteplicità di transazioni in esecuzione
3
5
Transazioni
Crash Recovery in un DBMS
• Domanda: che cosa fare se avviene qualcosa di imprevisto durante una transazione e questa non termina come dovrebbe?
• Problema: il DBMS deve garantire che le altre transazioni non siano influenzate dall’esecuzione scorretta della transazione che ha avuto dei problemi e deve lasciare la base di dati in uno stato coerente (ad es., si pensi ad un bonifico bancario)
6
Transazioni
Proprietà ACID delle Transazioni
• Per garantire una corretta esecuzione concorrente di transazionied il crash recovery, ogni transazione deve avere le seguenti proprietà:– Atomicità: il DBMS garantisce che tutte le operazioni di read e
write della transazione siano eseguite, oppure che nessuna di tali operazioni lo sia
– Consistenza: l’utente deve garantire che la transazione lasci il DB in uno stato consistente
– Isolamento: il DBMS deve garantire che la transazione sia indipendente da altre transazioni eseguite in modo concorrente
– Durabilità: una volta conclusa con successo una transazione, i suoi effetti devono essere permanenti, anche in caso di guasto del disco prima del suo aggiornamento
4
7
Transazioni
Consistenza ed Isolamento
• La consistenza di una transazione deve essere garantita dall’utente che ha definito tale transazione
• L’isolamento di una transazione rispetto ad altre transazioni concorrenti è garantito facendo in modo che l’effetto dell’esecuzione delle azioni che formano la transazione sia equivalente a quello di una loro esecuzione seriale
• Ciò deve essere garantito anche nel caso in cui le esecuzionidelle azioni che formano la transazione siano intervallate
• Il DBMS non fornisce garanzie riguardo l’ordine di esecuzione effettivamente scelto
8
Transazioni
Atomicità e Durabilità
• Una transazione può essere abortita per tre cause:1. Anomalia interna dovuta alla sua esecuzione. Viene sospesa dal DBMS2. Anomalia riconosciuta dalla transazione , che si autosospende3. Crash del sistema
• Una transazione abortita potrebbe lasciare il DB in uno stato inconsistente
• Il DBMS garantisce l’atomicità della transazione mantenendo un file di logdove vengono registrate tutte le operazioni di scrittura fatte
• In caso di transazione abortita, il DBMS controlla il file di log e ripristina lo stato consistente precedente all’esecuzione della transazione abortita
• Il file di log serve anche per garantire la durabilità
5
9
Transazioni
Consistenza e Transazioni
• Ipotesi: il progettista ha definito dei vincoli di integrità(Integrity Constraint) che ogni istanza della base di dati deve rispettare (ad es., “La somma degli stipendi deve essere minore del budget a disposizione”)
• Una transazione: - deve iniziare sempre in uno stato consistente (che soddisfa tutti i vincoli di integrità)
- può passare per stati intermedi non consistenti- deve terminare sempre in uno stato consistente
10
Transazioni
Consistenza e Transazioni (continua)
S1S2
S3
S4
S7
S5
S6
Violano i vincoli
Stati di una base di dati
Soddisfanoi vincoli
6
11
Transazioni
Schedulazioni
• Per il DBMS, una transazione è una sequenza di azioni (read e write) su oggetti del database (ad es., valori degli attributi, tuple, ecc.)
• Ogni transazione deve specificare la sua azione finale come:- commit (transazione terminata con successo) oppure…- abort (terminazione e undo delle azioni svolte)
• Una schedulazione è una sequenza di azioni (read, write, commit, abort) prese da un insieme di transazioni
• L’ordine delle azioni in una schedulazione è lo stesso di quello nelle corrispondenti transazioni
• Una schedulazione rappresenta un possibile ordine di esecuzione delle azioni presenti nelle transazioni coinvolte
12
Transazioni
Esempio di Schedulazione
• Date due transazioni (A, B, e C sono oggetti del database):T1: read(A), write(A), read(C), write(C)T2: read(B), write(B)
• Una schedulazione di T1 e T2:read(A), write(A), read(B), write(B), read(C), write(C)
• Le schedulazioni permettono di descrivere le esecuzioni intervallate di transazioni concorrenti
• Schedulazione completa: contiene un commit o un abort per ogni transazione le cui azioni sono contenute nella schedulazione
• Schedulazione seriale: le azioni di transazioni differenti non sono intervallate
7
13
Transazioni
Serializzabilità
• Una schedulazione serializzabile di un insieme S di transazioni che hanno tutte fatto commit, è una schedulazioneil cui effetto finale è uguale a quello di una schedulazione seriale completa di S
14
Transazioni
Anomalie in un’esecuzione intervallata
• Un’esecuzione intervallata di due transazioni consistenti e che hanno fatto commit T1 e T2, può lasciare il DB in uno stato inconsistente :– Conflitto write-read: T2 legge un oggetto scritto da T1 ma T1 non
ha ancora fatto commit– Conflitto read-write: T2 scrive un oggetto letto da T1 ma T1 non
ha ancora fatto commit
– Conflitto write-write: T2 scrive un oggetto scritto da T1 ma T1 non ha ancora fatto commit
8
15
Transazioni
Conflitto Write-Read• Date due transazioni:
T1: A:=A+100, B:=B-100 e T2: A:=A*1.06, B:=B*1.06
• Data una schedulazione di T1 e T2:T1: T2:
read(A)write(A)
read(A)write(A)read(B)write(B)commit
read(B)write(B)commit
• Problema: A è scritto da T1 e letto da T2 prima che T1 faccia Commit• T1 scrive in A un valore che potrebbe rendere inconsistente il DB e questo
valore viene letto da T2
16
Transazioni
Conflitto Read-Write
• Date due transazioni:T1: A:=A+1 e T2: A:=A-1
• Data una schedulazione di T1 e T2:T1: T2:
read(A)read(A)write(A)commit
write(A)commit
• Problema: A è scritto da T2 prima che T1 faccia commit• Se T1 legge nuovamente A otterrà un risultato diverso
9
17
Transazioni
Conflitto Write-Write
• Date due transazioni:T1: A:=1000, B:=1000 e T2: A:=2000, B:=2000
• Nota: I valori di A e B sono uguali al termine di ciascuna delle due transazioni
• Data una schedulazione di T1 e T2:T1: T2
write(A)write(A)write(B)commit
write(B) commit
• Problema: A e B hanno valori diversi al termine della schedulazione
18
Transazioni
Transazioni Abortite• In linea di principio tutte le azioni delle transazioni abortite devono essere
annullate• Problema: in alcuni casi ciò è impossibile• Data una schedulazione di T1 e T2:
T1: T2:read(A)write(A)
read(A)write(A)read(B)write(B)commit
read(B)write(B)abort
• Problema : T2 legge un valore di A che non avrebbe dovuto (conflitto write-read)• Soluzione non soddisfacente : anche T2 dovrebbe essere abortita ma violeremmo
la proprietà di durabilità delle transazioni
10
19
Transazioni
Concorrenza e Interleaving
• Sebbene l’interleaving delle transazioni sia auspicabile per migliorare le prestazioni, dagli esempi precedenti si osserva che non tutti i possibili interleaving siano utilizzabili
• Ci può essere la necessità di annullare l’effetto di alcune azioni a causa della possibile presenza di transazioni abortite
• Domanda: quali controlli effettuare per evitare i problemi visti?
20
Transazioni
Verifiche sulla Concorrenza
• Esistono diversi approcci basati su:– Cercare uno schedulazione serializzabile che eviti i conflitti visti
(conflict-serializability ) mediante un protocollo di locking dei dati– Eseguire in modo concorrente tutte le transazioni, controllando
eventuali conflitti solo prima del commit– Assegnare un timestamp alle transazioni che per ultime hanno
letto/scritto certi elementi e confrontare questi valori per determinare lo schedule delle transazioni
11
21
Transazioni
Controllo della Concorrenza con Locking dei Dati
• Il DBMS deve assicurare l’assenza dei conflitti ed il recovery delle transazioni abortite
• Strict two-phase locking (strict 2PL):- Se una transazione vuole leggere/scrivere un oggetto richiede un accesso
esclusivo su di esso - La transazione rilascia tutti i suoi accessi esclusivi quando fa commit
• Il protocollo strict 2PL permette solo schedulazioni intervallate sicure : - Se le transazioni modificano oggetti diversi allora le loro schedulazioni
possono essere intervallate- Altrimenti, se almeno due transazioni vogliono accedere allo stesso
oggetto e almeno una transazione vuole modificarlo, allora tali transazioni devono essere eseguite serialmente
• Il lock manager tiene traccia attraverso una lock table degli accessi esclusivi corrispondenti ad ogni oggetto del DB
22
Transazioni
Strict 2-Phase Locking: esempio
• Notazione:- Lock condiviso di A per la sua lettura: S(A)- Lock esclusivo di A per la sua scrittura: X(A)
• Se una transazione vuole leggere A (cioè eseguire R(A)) deve prima chiedere S(A)
• Se una transazione vuole scrivere A (cioè eseguire W(A)) deve prima chiedere X(A) (in tale caso può anche leggere A)
• Tutti i lock effettuati da una transazione sono rilasciati dopo il suo commit
• T1: S(A),R(A),X(A),W(A),X(B),R(B),W(B),commit• T2: X(A),R(A),W(A),X(B),R(B),W(B),commit
12
23
Transazioni
Prevenzione del Deadlock
• L’adozione di un controllo della concorrenza basato su locking può causare deadlock che devono essere evitati o risolti dal DBMS
• I sistemi più comunemente usati assegnano una specifica prioritàad ogni transazione, solitamente un timestamp legato all’ordine di avvio
• Se una transazione Ti richiede un lock e la transazione Tj detiene il lock richiesto, il lock manager può adottare una di queste due politiche:– Wait-Die : se Ti ha priorità più alta di Tj allora Ti può attendere il lock,
altrimenti Ti viene terminata (e riavviata con la stessa priorità)
– Wound-Wait : se Ti ha priorità più alta di Tj allora Tj viene terminata (e riavviata con la stessa priorità), altrimenti Ti rimane in attesa
24
Transazioni
Risoluzione del Deadlock
• Se i deadlock sono rari un DBMS può decidere di risolverliquando si presentano invece di adottare una politica per evitarli. In questo caso gli approcci più comuni sono due:– Il lock manager conserva una struttura chiamata waits-for graph
che utilizza per determinare i cicli di deadlock . Periodicamenteanalizza il grafo in cerca di cicli e quando li trova fa abortire alcune transazioni per risolverli
– Una transazione viene automaticamente terminata dal lockmanager nel caso in cui rimanga bloccata in attesa di un lock oltre un determinato periodo di tempo
13
25
Transazioni
Controllo della Concorrenza: approccio ottimistico
• Il protocollo basato su locking adotta un approccio pessimistico per evitare i conflitti impedendo che si verifichino
• L’approccio ottimistico invece ipotizza che le transazioni non entrino in conflitto (o vi entrino raramente)
• Se si presenta un conflitto si interviene per ripristinare la consistenza dei dati procedendo come segue:– Read: la transazione viene eseguita leggendo i dati dal DBMS e
scrivendo in un’area privata– Validation: se la transazione decide di fare commit allora il DBMS
controlla che non si siano verificati conflitti. In caso di conflitti, fa abortire la transazione e la riavvia automaticamente
– Write: se la fase di validation ha dato esito positivo allora i dati scritti nell’area privata vengono copiati nel DBMS
26
Transazioni
Controllo della Concorrenza basato su Timestamp
• Si associa ad ogni transazione il timestamp TS del suo avvio• All’esecuzione di ogni azione ai della transazione Ti:
– se ai è in conflitto con l’azione aj della transazione Tj e…– se TS(Ti) < TS(Tj) allora ai deve essere eseguita prima di aj
• Se un’azione viola questo ordinamento allora la transazione della quale fa parte viene abortita e riavviata con un TS maggiore
14
27
Transazioni
Tipologie di Transazione
• Ogni transazione ha tre caratteristiche:– Modalità di accesso: se è READ ONLY alla transazione non è
consentito modificare il DB; per farlo è infatti richiesta la modalitàREAD WRITE
– Livello diagnostico: determina il livello di dettaglio delle segnalazioni di errore
– Livello di isolamento: determina l’influenza delle altre transazioni eseguite in modo concorrente
28
Transazioni
Livelli di Isolamento
• Dirty Read: lettura di dati modificati da una transazione che non ha fatto commit (conflitto Write-Read)
• Unrepeteable Read: dati letti da parte di una transazione e successivamente modificati da un’altra transazione prima che la prima abbia fatto commit (conflitto Read-Write)
• Phantom: reperimenti successivi di uno stesso insieme di oggetti non modificati dalla transazione, danno risultati diversi (cioè gli oggetti risultano modificati)
PossibileNon possibileNon possibileREPETEABLEREAD
Non possibileNon possibileNon possibileSERIALIZABLE
PossibilePossibileNon possibileREADCOMMITTED
PossibilePossibilePossibileREADUNCOMMITTED
PhantomUnrepeteable Read
Dirty ReadLivello
15
29
Transazioni
Livelli di Isolamento (continua)
• Serializable: la transazione richiede i lock prima di leggere o modificare ogni oggetto del DB (e li mantiene fino alla sua terminazione), compresi i lock a livello di tabella quando deve eseguire una scansione.
• Repeteable read: la transazione richiede i lock prima di leggere o modificare ogni oggetto del DB (e li mantiene fino alla sua terminazione), ma non i lock a livello di tabella quando deve eseguire una scansione.
• Read Committed: la transazione richiede lock esclusivi prima di modificare i dati e li mantiene fino alla sua terminazione , mentre richiede lock condivisi in lettura che rilascia al termine della lettura stessa
• Read Uncommitted: la transazione richiede lock esclusiviprima di modificare i dati ma non richiede nessun lock in lettura
30
Transazioni
Crash Recovery
• Il recovery manager di un DBMS ha il compito di assicurare due importanti proprietà delle transazioni:– Atomicità: garantita annullando le azioni eseguite dalle transazioni
che non eseguono commit– Persistenza: garantita facendo sì che tutte le azioni delle
transazioni terminate con commit sopravvivano a crash del sistema
16
31
Transazioni
Advanced Recovery and Integrated Extraction System (ARIES)
• ARIES comprende un algoritmo di recovery che viene eseguito dalrecovery manager in seguito ad un crash ed è composto da tre fasi:
- Analisys: identifica le pagine dirty del buffer pool (le modifiche non ancora scritte sul disco) e le transazioni attiveal momento del crash
- Redo: ripete tutte le azioni, partendo da un punto adeguato del log file riportando il DB nello stato in cui era nel momento del crash
- Undo: annulla le azioni delle transazioni che non avevano raggiunto il commit al momento del crash
32
Transazioni
ARIES (continua)
ARIES si basa sui tre seguenti principi:• Write-ahead logging: ogni modifica ad un oggetto del DB
viene prima registrata nel file di log; questo deve essere scritto su supporto persistente prima che vengano scritte le carrispondenti pagine modificate
• Repeating history during Redo: quando un sistema viene riavviato in seguito ad un crash esso viene riportato nello stato in cui era al momento del crash. Vengono poi annulate le operazioni delle transazioni attive nel momento del crash
• Logging changes during Undo: le modifiche fatte al DB in fase di Undo vengono registrate nel log file per evitare che vengano ripetute in caso di crash in fase di recovery.
17
33
Transazioni
Il File di Log
• Il file di log contiene la storia delle azioni eseguite dal DBMS
• Fisicamente è un file di record memorizzati su supporto permanente
• La parte più recente del file di log, chiamata log tail , è mantenuta in memoria e salvata periodicamente su supporto permanente. Il file dilog ed i dati sono scritti su disco con gli stessi meccanismi
• Ogni record ha un id univoco chiamato log sequence number(LSN). Tali record sono accessibili usando il LSN per identificarli
• Gli identificatori dei record devono crescere in modo monotono
34
Transazioni
Record del File di Log
Viene scritto un record nel file di log per ciascuno di questi eventi :• Aggiornamento di una pagina: deve essere scritto prima di
modificare effettivamente i dati della pagina. Contiene sia il vecchio valore della pagina sia il nuovo per rendere possibile Undo e Redo dell’operazione
• Commit: quando una transazione esegue commit viene inserito nel file di log un record con l’id della transazione , ed il log tail della transazione viene scritto su disco
• Abort: quando una transazione esegue abort viene inserito nel file dilog un record di tipo abort e viene iniziato l’undo della transazione
• End: quando una transazione esegue commit o abort devono essere eseguite diverse operazioni al termine delle quali viene inserito unrecord di tipo end
• Annullamento di un aggiornamento: quando una transazione viene annullata i suoi aggiornamenti vengono annullati . Per ogni azione di questo tipo viene scritto nel log un record di tipo Compensation LogRecord (CLR)
18
35
Transazioni
Record del File di Log (continua)
Ogni record del file di log ha alcuni campi comuni :• prevLSN: l’identificatore del record precedente relativo alla
stessa transazione• transID: l’identificatore della transazione di appartenenza• Type: il tipo di record
36
Transazioni
Protocollo Write-Ahead Log (WAL)
• Prima di scrivere una pagina sul disco, ogni record di update del file di log relativo alla stessa pagina deve essere scritto sul disco
• Il protocollo WAL è fondamentale per assicurare la persistenza di tutte le modifiche effettuate sul DB in caso di crash
• Una committed transaction è una transazione i cui record di logsono stati scritti completamente su disco
• Quando una transazione esegue un commit , il suo log tail viene scritto su disco
• Il numero delle pagine di log da scrivere su disco al termine di una transazione è solitamente molto inferiore a quello delle pagine dati in quanto il file di log contiene solo i dati dei record modificati e non di tutti i record della pagina
19
37
Transazioni
Checkpointing
• Un checkpoint è uno snapshot dello stato del DBMS. Creando periodicamente dei checkpoint, un DBMS è in grado di ridurre il tempo richiesto per il recovery in seguito ad un crash
• In ARIES un checkpoint viene creato in tre passi:– Un record begin-checkpoint viene scritto nel file di log– Un record end-checkpoint viene scritto nel file di log contenente la
transaction table e la dirty page table– Dopo che il record end-checkpoint è stato scritto su disco , viene
aggiornato il master record con il LSN del record begin-checkpoint. Ilmaster record è conservato in una posizione nota del log
• Questo tipo di checkpoint è detto fuzzy checkpoint ed è poco costoso perchè non interrompe il normale funzionamento delDBMS e non richiede la scrittura delle pagine del buffer pool
38
Transazioni
Recovering da un Crash del Sistema
• Analysis phase– Determinare il punto del file di log da cui iniziare la fase di redo– Determinare le pagine del buffer pool contenenti dati modificati
non ancora scritti al momento del crash– Identificare le transazioni che erano attive al momento del crash e
che quindi devono essere annullate
• Redo phase– Riapplicare ogni record di aggiornamento o CLR (vedi pag 34)
presente nel file di log partendo dal record con LSN associato alla più veccha pagina dirty del buffer pool
• Undo phase– Effettuare l’undo di tutte le transazioni attive al momento del crash
20
39
Transazioni
Riassunto
• Una transazione è un’esecuzione di un programma utente in un DBMS• Proprietà che il DBMS deve garantire: atomicità, consistenza,
isolamento, e persistenza• Una transazione è composta da una successione di read e write • Se una transazione non termina correttamente, le sue azioni devono
essere annullate, altrimenti (in caso di commit) l’effetto delle azioni èpermanente
• L’esecuzione concorrente di transazioni aumenta le prestazioni delDBMS. Ci possono essere conflitti se due transazioni devono accedere allo stesso oggetto
• L’utilizzo di lock garantisce che solo determinate sequenze di read e write siano effettivamente eseguite
• Il log garantisce la persistenza dei dati e la loro consistenza anche in caso di crash del sistema
1
Protezione delle informazioni
2
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Perché proteggere le informazioni?
Le informazioni sono una componente fondamentale di molte organizzazioni, sono spesso così importanti da mettere a rischio l’esistenza e il funzionamento dell’organizzazione stessa in caso di corruzione, perdita o condivisione incontrollata.Allo stesso tempo, le informazioni sono solitamente utili solo se condivise tra più utenti, spesso con ruoli differenti.L’avvento di internet ha reso ancora più evidenti questi aspetti.E’ dunque fondamentale che ogni organizzazione possa regolare la condivisione del proprio contenuto informativo tramite opportune politiche di sicurezza .
2
3
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Esempi di sicurezza delle informazioni
In una base militare:L’obiettivo di un missile non può essere fornito a un utente non autorizzato.L’obiettivo non può essere arbitrariamente modificato.
In un sistema di gestione dei salari:I salari di singoli impiegati non possono essere consultati da utenti arbitrari.I salari possono essere modificati solo dal direttore amministrativo.
4
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Requisiti principali della sicurezza informativa
Riservatezza: protezione da letture non autorizzate.Prende il nome di privacy quando si riferisce a singoli individui.
Integrità: protezione da modifiche.Rispetto alle informazioni originali (autenticità ).Rispetto a modifiche non autorizzate.Rispetto a modifiche non corrette (integrità semantica ).
Disponibilità: accesso assicurato ai soggetti autorizzati.
3
5
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Come ottenere la sicurezza delle informazioni?
Le informazioni vanno protette a diversi livelli:Sistema operativo.Rete e sistemi distribuiti.Sistema di gestione dei dati.Protezione fisica.
In questo modulo ci occuperemo esclusivamente della protezione nei sistemi relazionali di gestione delle basi di dati.
6
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Proteggere le informazioni o i dati?
I dati rappresentano informazioni, mentre le informazioni sono interpretazioni soggettive dei dati.Proteggere le informazioni è un compito talvolta difficile anche solo da definire. Spesso si proteggono i dati, e non le informazioni.Nel seguito focalizzeremo la nostra attenzioni sui metodi di protezione dei dati disponibili nei DBMS relazionali.Ciò deve essere considerato uno degli strumenti per ottenere la sicurezza delle informazioni, non sempre sufficiente.La sicurezza delle informazioni riguarda anche la trasmissione e manipolazione di dati, a cui accenneremo in seguito.
4
7
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Strumenti per la protezione dei dati nei DBMS
La riservatezza è garantita dal meccanismo di controllo dell’accesso , un modulo del DBMS che intercetta le operazioni e verifica l’esistenza delle necessarie autorizzazioni.L’integrità è garantita dal meccanismo di controllo dell’accesso , dai vincoli di integrità .Riservatezza e segretezza sono garantite anche dagli strumenti per la protezione della trasmissione dei dati, come cifratura (per garantirne la segretezza) e firma digitale (per garantirne l’autenticità).La disponibilità è garantita parzialmente dal sistema di recovery e può essere migliorata tramite tecniche per il rilevamento delle intrusioni (ad esempio, sequenze di accessi inusuali che sovraccarichino ilsistema).Inoltre, viene utilizzato un meccanismo di autenticazione , che nella quasi totalità dei casi è basato su login e password.
Controllo dell’accesso
5
9
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Controllo dell’accesso: concetti base (1)
Oggetti: risorse da proteggere.Ad esempio, tabelle, tuple, campi, stored procedures.
Soggetti: entità attive che richiedono l’accesso agli oggetti.Utenti.Gruppi.Ruoli.Processi.
Privilegi: operazioni che si possono compiere sugli oggetti.Ad esempio, read, write, append in un sistema operativo.
10
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Controllo dell’accesso: concetti base (2)
La concessione di un determinato accesso dipende dalle politiche di sicurezza dell’organizzazione, cioè direttive ad alto livello riguardanti le scelte compiute riguardo alla protezioni dei propri dati.
Ad esempio, www.ibm.com/privacy/usLe politiche, per potere essere implementate, devono essere tradotte in un insieme di autorizzazioni .
ReferenceMonitor
politiche Autorizzazioni
Richiestadi accesso
Accesso accordato[parzialmente]
Accesso negato
6
11
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Classificazione (1: quantità di informazione)
Politica del minimo privilegio (need to know) : permette l’accesso solo a dati strettamente necessari per eseguire un’attività.
Sistemi chiusi : permettono l’accesso solo se esplicitamente autorizzato.
Politica della massima condivisione (maximized sharin g): massimo accesso, a parte alcuni dati confidenziali.
Sistemi aperti : l’accesso è permesso a meno che non sia esplicitamente negato.
12
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Classificazione (2: criteri di accesso)
Politiche discrezionali: definizione esplicita dei privilegi che ogni soggetto può esercitare sugli oggetti del sistema.Politiche mandatorie: definizione di classi di sicurezza (etichette) associate a soggetti (fiducia) e oggetti (sensibilità) e relative a specifiche operazioni (ad esempio, read e write).Politiche basate sui ruoli: privilegi assegnati a ruoli (ad esempio, cassiere o direttore), e non direttamente agli utenti.
7
13
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Politiche discrezionali
Flessibili.Senza controllo sul flusso di informazioni nel sistema.Ad esempio, un utente con accesso a un’informazione X riservata può leggerla e scriverla in un oggetto accessibile ad utenti che non avrebbero accesso a X.
14
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Politiche mandatorie
Definiscono classi di sicurezza (etichette) assegnate a soggettie oggetti del sistema.L’etichetta di un oggetto ne indica la sensibilità, l’etichetta di un soggetto la fiducia.Esempi di etichette sono Top secret, Confidential, Unclassified.Opportune regole definiscono i flussi possibili di informazioni.Utilizzate in ambienti con forti esigenze di protezione (militari) e con una classificazione rigida degli elementi del sistema.I sistemi che implementano queste politiche sono anche detti sistemi multilivello.
8
15
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Politiche basate sui ruoli
Semplificazione amministrativa:un ruolo spesso raggruppa più privilegi.I ruoli tendono a essere più stabili degli utenti.
Con un’opportuna configurazione possono realizzare sia politiche mandatorie che discrezionali.
16
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Classificazione (3: amministrazione)
Nelle politiche mandatorie vi è solitamente un responsabile della sicurezza.Nelle politiche discrezionali e basate sui ruoli ci possono essere più opzioni:
Centralizzata: singolo amministratore della sicurezza.Basata su ownership: il creatore di un oggetto gestisce i privilegi su di esso.Decentralizzata: con possibilità di delegare la gestione di privilegi a terzi.Cooperativa: autorizzazioni che richiedono il consenso di più utenti (per ambienti distribuiti).
9
17
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Modelli per il controllo degli accessi
Vedremo nel dettaglio:Il modello del System R .Il modello RBAC (Role-Based Access Control).Il modello di SQL (basato sui precedenti).
Altri riferimenti:Modello a matrice di accesso: modello di riferimento per le politiche discrezionali.Modello di Bell e LaPadula: modello di riferimento per le politiche mandatorie.Oracle Label Security: componente di Oracle per imporre una politica mandatoria.
18
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Modello del System R
Uno dei primi sistemi con politiche di controllo degli accessi ad essere implementati.Alla base dei moderni meccanismi di controllo dei sistemi commerciali.Sistema chiuso con politica discrezionale e amministrazione dei privilegi basata su ownership e decentralizzata.
10
19
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Comando GRANT
GRANT lista privilegi | ALL [PRIVILEGES]
ON relazione
TO lista utenti | PUBLIC
[WITH GRANT OPTION]
20
Protezione dei datiMatteo Magnani, Danilo Montesi ©
GRANT: opzioni e semantica
I privilegi (select,insert, update, delete) si applicano a intere relazioni, a parte update per cui si possono specificare le colonne a cui si applica.ALL [PRIVILEGES] concede in un solo comando tutti i privilegi.PUBLIC assegna i privilegi a tutti gli utenti del sistema.WITH GRANT OPTION specifica che i privilegi possono essere trasmessi dall’utente a cui vengono assegnati ad altri utenti.Più privilegi possono essere assegnati in uno stesso comando.Lo stesso privilegio può essere ricevuto da utenti differenti.
11
21
Protezione dei datiMatteo Magnani, Danilo Montesi ©
GRANT: esempi
Assumiamo che Luca sia l’owner di tutte le relazioni.Luca: GRANT update(telefono) ON Clienti TO Elisa;Luca: GRANT select ON Film TO Barbara, Giovanna WITH GRANT OPTION;Giovanna: GRANT select ON Film TO Matteo;Luca: GRANT ALL PRIVILEGES ON Video, Film TO Elena WITH GRANT OPTION;Elena: GRANT insert, select ON Film TO Barbara;
22
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Comando REVOKE
REVOKE lista privilegi | ALL [PRIVILEGES]
ON relazione
FROM lista utenti | PUBLIC
12
23
Protezione dei datiMatteo Magnani, Danilo Montesi ©
REVOKE: esempi
Possiamo revocare solo privilegi da noi concessi in precedenza.Luca: REVOKE update, insert ON Video FROM Elena;Luca: REVOKE update ON Clienti FROM Elisa;Luca: REVOKE select ON Film FROM Barbara, Giovanna;Cosa accade a Giovanni e Barbara dopo la revoca, con i privilegi concessi nell’esempio sul comando GRANT?
24
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Memorizzazione dei privilegi
Nel System R, come nei moderni sistemi relazionali, i privilegi vengono mantenuti in un’apposita tabella (Sysauth).
NElena0047RFilmBarbara
YLuca404040RFilmElena
YLuca404040RVideoElena
NGiovanna0035RFilmMatteo
YLuca0032RFilmGiovanna
YLuca0032RFilmBarbara
NLuca3000RClientiElisa
Y252525RFilmLuca
Y222222RVideoLuca
Y202020RClientiLuca
G.O.grantorupdateinsertselecttypenameUser_id
13
25
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Tabella Sysauth
User_id: utente che detiene il privilegio.Name: oggetto del privilegio.Type: Relazione o Vista.Privilegio: Timestamp del comando che ha concesso il privilegio (o 0 se il privilegio non è concesso).Grantor: Concessore del privilegio.GO: Grant option.Una tabella a parte (Syscolauth) tiene memoria delle colonne per il privilegio update.
26
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Concessione di privilegi
Quando un utente vuole concedere privilegi, i privilegi delegabili(ottenuti con GRANT OPTION) vengono intersecati con i privilegi che si vogliono concedere.I privilegi contenuti nell’intersezione vengono concessi.Elisa: GRANT update(telefono) ON Clienti TO Roberto;Luca: GRANT delete ON Clienti TO Mario, Anna;Barbara: GRANT select, insert ON Film TO Alessandro;
14
27
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Revoca ricorsiva (1)
Nel System R una revoca di privilegio non elimina semplicemente il privilegio, ma riporta il sistema nello stato in cui si troverebbe se quel privilegio non fosse mai stato assegnato.La revoca è ricorsiva e basata sui timestamps.Per comprenderne il funzionamento, utilizziamo un grafo delle autorizzazioni.Ogni grafo riguarda un oggetto e un privilegio specifici. Nell’esempio considereremo la relazione Film e il privilegio select.
28
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Revoca ricorsiva (2)
Se Luca revoca il privilegio a Giovanna, lo perde anche Matteo.Se Luca revoca il privilegio a Barbara, Barbara lo mantiene grazie a Elena, ma senza GRANT OPTION.
Luca
Giovanna Matteo
Elena
Barbara
32,g
32,g
40,g47
35
15
29
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Revoca ricorsiva (3)
X è di sicuro maggiore di 32.Se Luca revoca il privilegio a Barbara e X<47, lo perde anche Matteo.Se Luca revoca il privilegio a Barbara e X>47, Matteo lo mantiene.In entrambi i casi Barbara mantiene il privilegio con GRANT OPTION.
Luca
Elena
Barbara32,g
40,g47,g
MatteoX
30
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Procedura di revoca ricorsiva
Procedura revoca (revocante, privilegio, relazione, revocato)PER OGNI tupla con id_utente=revocato, nome=relazione e grantor=revocante
poni a 0 l’attributo privilegio, ese il privilegio è update aggiorna la tabella specifica.
Min_ts := current_timestampPER OGNI tupla con id_utente=revocato, nome=relazione e grantoption = Y
SE privilegio<>0 AND privilegio<Min_ts: Min_ts := privilegio.PER OGNI utente u per cui esiste una tuple con id_utente=u, nome=relazione e grantor=revocato
SE privilegio < Min_ts: revoca(revocato,privilegio,relazione,u)
16
31
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Autorizzazioni su viste
Le viste permettono un controllo dell’accesso a grana più fine.Singoli attributi.Specifiche righe.Informazioni statistiche.
I privilegi di un utente che crea una vista su una sola vista o relazione di base, sono gli stessi che ha sulla relazione/vista di base a meno di quelli non esercitabili sulla vista.Per le viste definite su più relazioni/viste, i permessi corrispondono all’intersezione dei permessi sulle singole relazioni/viste di base (a meno di quelli non esercitabili sulla vista).
32
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Esempi con viste
Barbara: CREATE VIEW Film_comici ASSELECT * FROM FILM WHERE GENERE=‘Comico’Barbara mantiene il privilegio select, che può concedere a terzi.Elena: CREATE VIEW Numero_noleggi ASSELECT CodCliente, count(*)FROM FILM GROUP BY CodClienteElena mantiene select e update (quest’ultimo solo su CodCliente) e perde insert.Se Elena perde il privilegio select su Film la vista viene cancellata.
17
33
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Modelli basati su ruoli
Nei modelli basati su ruoli (RBAC – Role-Based Access Control) i ruoli rappresentano funzioni all’interno dell’organizzazione corrispondente al sistema informatico.I privilegi vengono assegnati ai ruoli, e gli utenti associati a un ruolo ne ereditano i privilegi.Sono possibili diversi tipi di RBAC. Lo standard NIST definisce i seguenti:
Modello base (Core RBAC).Modello gerarchico (Hierarchical RBAC).Modello con vincoli (Constrained RBAC).
34
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Modello base
Si basa sui concetti di utente, ruolo, permesso, e sessione.I permessi sono coppie (oggetto, operazione).Le sessioni permettono di attivare in un certo istante alcuni dei ruoli possibili per un utente, e non altri.
Utenti Ruoli
Sessioni
Operazioni Oggetti
Privilegi
18
35
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Modello gerarchico
Permette di definire una gerarchia di ruoli, con l’ereditarietà dei privilegi.
Operatore generico
InfermiereMedico generico
Specialista
36
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Modello con vincoli
L’unico tipo di vincolo considerato nello standard è la separazione delle mansioni.Dato un insieme di ruoli RS e un numero naturale n, il vincolo (RS, n) implica che un utente non possa essere assegnato a n o più ruoli in RS.Si considerino ad esempio i ruoli (Segretario amministrativo, Revisore dei conti).Questo vincolo può essere imposto in generale (vincolo statico ) o relativamente a una singola sessione, per cui un impiegato può ad esempio svolgere il ruolo di cassiere e di supervisore dei cassieri in momenti differenti, ma non contemporaneamente. (vincolo dinamico)
19
37
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Controllo dell’accesso in SQL
Il modello per il controllo dell’accesso in SQL si basa su quello del System R, ma con importanti differenze ed estensioni.
Il concetto di ruolo (tramite i comandi CREATE ROLE e DROP ROLE).L’aggiunta di nuovi privilegi.Una diversa semantica per l’operazione di revoca.
38
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Comando GRANT
GRANT lista privilegi | ALL PRIVILEGES
ON [qualificatore] oggetto
TO lista utenti | lista ruoli | PUBLIC
[WITH GRANT OPTION] |[WITH HIERARCHY OPTION]
20
39
Protezione dei datiMatteo Magnani, Danilo Montesi ©
GRANT: commenti
I privilegi sono estesi:Select e insert possono riguardare colonne specifiche, come l’update nel System R.Nuovi privilegi (references, trigger, under, usage, execute) per specifici oggetti dello schema.
I privilegi si possono accordare a utenti o ruoli.I privilegi si possono riferire non solo a relazioni e viste ma anche ad altri oggetti dello schema, eventualmente specificati tramite un qualificatore (ad esempio, TYPE o DOMAIN).Al privilegio select si può associare la HIERARCHY OPTION, che estende il privilegio anche alle sottotabelle della tabella specificata.
40
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Grant: sintassi alternativa (1)
GRANT lista ruoli
TO lista utenti | lista ruoli | PUBLIC
[WITH ADMIN OPTION]
21
41
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Grant: sintassi alternativa (2)
Con questa sintassi si possono assegnare ruoli a utenti del sistema.Inoltre, come si evince dal comando, è possibile organizzare i ruoli in una struttura gerarchica.La ADMIN OPTION corrisponde alla GRANT OPTION per i privilegi, e permette a coloro che ricoprono un ruolo WITH ADMIN OPTION di trasmettere questo ruolo a terzi.
42
Protezione dei datiMatteo Magnani, Danilo Montesi ©
GRANT: esempi
GRANT update(telefono) ON Clienti TO Elisa;GRANT usage ON TYPE Indirizzo TO Giovanna WITH GRANT OPTION;GRANT execute ON Aggiorna_clienti TO Elena;GRANT select(nome, cognome), REFERENCES(CodF) ON Clienti TO Elisa;GRANT delete, update ON Clienti TO Dipendente_amministrazione;GRANT Dipendente_amministrazione TO Roberto WITH ADMIN OPTION;
22
43
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Comando REVOKE
REVOKE [GRANT OPTION FOR | HIERARCHY OPTION FOR] lista privilegi ON [qualificatore] oggettoFROM lista utenti | lista ruoliRESTRICT | CASCADE
REVOKE [ADMIN OPTION FOR] lista ruoliFROM lista utenti | lista ruoliRESTRICT | CASCADE
44
Protezione dei datiMatteo Magnani, Danilo Montesi ©
REVOKE: commenti
Si possono revocare sia privilegi sia autorizzazioni a occupare un ruolo.Si possono revocare le GRANT | ADMIN | HIERARCHY OPTIONS senza revocare il corrispondente privilegio.Se viene specificata l’opzione RESTRICT, il comando non viene eseguito se comporta la revoca di altri privilegi o la cancellazione di oggetti dallo schema.Se viene specificata l’opzione CASCADE la revoca è simile a quella del System R, ma senza tenere conto del timestamp.I privilegi non sono revocati ricorsivamente se un utente ha ricevuto con grant option il privilegio da altre fonti, indipendentemente dal momento della concessione.
23
45
Protezione dei datiMatteo Magnani, Danilo Montesi ©
REVOKE: esempi
REVOKE GRANT OPTION FOR usage ON Indirizzo FROM GIOVANNA;REVOKE delete ON Clienti FROM Dipendente_amministrazione;REVOKE Dipendente_amministrazione FROM Roberto;
Privacy preserving DBMSs(cenni)
24
47
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Privacy (1)
Il problema della privacy dei dati si pone quando dati univocamente identificabili relativi a una persona sono collezionati e memorizzati (eventualmente in formato digitale).
Informazioni mediche.Giustizia.Finanza.Informazioni genetiche.
La gestione della privacy non è solo una questione di riservatezza. Coinvolge anche altri aspetti, quali la definizione di preferenze degli utenti, l’usabilità, la verifica che un sistema implementi i requisiti.
48
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Privacy (2)
Esistono specifici linguaggi per la definizione e verifica di politiche di privacy.
P3P (Platform for Privacy Preferences).Sono in corso di studio sistemi per la gestione di basi di dati che supportino questi linguaggi, e più in generale sistemi che supportino nativamente il concetto di privacy.Inoltre, si stanno studiando tecniche per garantire la privacy in situazioni in cui il semplice controllo degli accessi non sia sufficiente.Un caso di possibile violazione della privacy senza violare autorizzazioni di accesso è quello dell’estrazione di informazioni per inferenza.
25
49
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Inferenza (esempio 1)
24LaboratorioMLuca
30Basi di datiMGiorgio
23SicurezzaFSara
25LaboratorioFFlavia
18Basi di datiMMirko
28LaboratorioMLuca
18Basi di datiFGianna
22Basi di datiMMarco
28SicurezzaFLuisa
VOTOCORSOGENERENOME
50
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Inferenza (esempio 1)
La politica è di non rivelare i voti dei singoli studenti, ma solo informazioni aggregate.Assumiamo di sapere che Gianna è una studentessa iscritta a basi di dati.Combinando le due interrogazioni seguenti:
SELECT Count(*) FROM StudentiWHERE Genere=‘F’ AND Corso = ‘Basi di dati’SELECT Avg(*) FROM StudentiWHERE Genere=‘F’ AND Corso = ‘Basi di dati’
si ottiene il voto di Gianna in Basi di dati.
26
51
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Inferenza (esempio 2)
Informazioni sensibili si possono ottenere anche combinando informazioni provenienti da database diversi, utilizzando identificatori cross-db oppure identificatori approssimati e inferenze più complesse, come quella mostrata nell’esempio precedente.Componendo informazioni parziali provenienti da più database un ricercatore ha potuto ricavare il quadro clinico di un noto personaggio politico.
52
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Tecniche di anonimizzazione
La k-anonimicità (k-anonimity) è una condizione che possiamo imporre a una tabella sopprimendo o generalizzando alcuni campi, in modo che vi siano almeno k individui distinti a cui ogni record si riferisce.Esempio (k=2):
Francese22VirziLuca
Italiana47RossiGiovanni
Spagnola36VerdiLuca
Italiana34RossiMarco
NazionalitàEtàCognomeNome
*20-40V*Luca
Italiana30-50Rossi*
*20-40V*Luca
Italiana30-50Rossi*
NazionalitàEtàCognomeNome
27
53
Protezione dei datiMatteo Magnani, Danilo Montesi ©
Problemi aperti
L’utilizzo di questo concetto impone lo studio di alcuni importanti aspetti:
L’efficienza del processo di anonimizzazione.Il mantenimento incrementale di tabelle anonimizzate.Utilizzo di tecniche di anonimizzazione e altri approcci (randomizzazione, sampling dei risultati) nella valutazione di interrogazioni.
Allo stesso modo, sono in corso di definizione tecniche per l’applicazione di procedure di data mining che non violino la privacy dei dati.
1
DB e World Wide WebMatteo Magnani, Danilo Montesi ©
1
Basi di dati e WWW
DB e World Wide WebMatteo Magnani, Danilo Montesi ©
2
Obiettivi
Con l'avvento di Internet e' nata la necessita' disviluppare sistemi informatici accessibili via Web .
Gli utenti che utilizzano la rete hanno solitamente a disposizione un browser.
Vedremo diversi modi per estrarre informazioni dauna base di dati attraverso un browser .
? ?
DBMS
DB
2
DB e World Wide WebMatteo Magnani, Danilo Montesi ©
3
Scenario 1: Client Side
DBMS
DB
INTERNET
Browser
ProgrammaOspite
API
DB e World Wide WebMatteo Magnani, Danilo Montesi ©
4
Scenario 1: Client Side
Il browser utilizza un programma che permette la connessione alla base di dati.
Questa soluzione e' consigliabile solo quando:Esiste un controllo sui client (ad esempio la possibilita' diinstallare programmi adeguati su tutti i computer cheaccedono alla BD), oppure
il carico di lavoro dell'applicazione e' di piccola entita'.
3
DB e World Wide WebMatteo Magnani, Danilo Montesi ©
5
Scenario 2: Server Side (ISAPI/NSAPI)
HTTPWeb
Server
INTERNET
Browser
DBMS
DB
API
DB e World Wide WebMatteo Magnani, Danilo Montesi ©
6
Scenario 2: Server Side (ISAPI/NSAPI)
E' possibile estendere il server Web, in modo che essocomunichi direttamente con il DBMS.
Non esiste uno standard.
Le estensioni sono difficili da programmare (gestionedella concorrenza).
I moduli "girano" insieme al Web server. Se i primihanno dei problemi, il secondo ne puo' risentire(devono essere sicuri e stabili).
4
DB e World Wide WebMatteo Magnani, Danilo Montesi ©
7
Scenario 2: Server Side (Application Server)
HTTPWeb
Server
INTERNET
Browser
APPLICATIONSERVER
DBMS
DB
DB e World Wide WebMatteo Magnani, Danilo Montesi ©
8
Scenario 2: Server Side (Application Server)
La parte dell'applicazione che comunica con ildatabase viene implementata al di fuori del server Web.
Questo rende il sistema scalabile e sicuro.
In teoria, questa soluzione puo' essere meno efficientedell'utilizzo di ISAPI, in cui la DLL con l'estensioneviene caricata una volta per tutte.
Esistono comunque implementazioni molto efficienti diquesta strategia. Tra le alternative disponibili, ricordiamo CGI, Servlet, PHP, ASP, ASP.NET, JSP.
5
DB e World Wide WebMatteo Magnani, Danilo Montesi ©
9
Richiesta del browser
HTTPWeb
Server
INTERNET
Browser
Viene richiesta una pagina chenecessita di una connessione auna base di dati.
Queste pagine sono caratterizzateda un URL speciale, che puo'essere riconosciuto dal web server.Ad esempio, http://host/cgi-bin/
DB e World Wide WebMatteo Magnani, Danilo Montesi ©
10
Forward a un modulo specifico
HTTPWeb
Server
INTERNET
Browser
Modulo
Il web server riconosce che si trattadi una pagina speciale, e passa
la richiesta a un programma/moduloprecedentemente registrato.
6
DB e World Wide WebMatteo Magnani, Danilo Montesi ©
11
Elaborazione della richiesta
HTTPWeb
Server
INTERNET
Browser
Modulo
DBMS
DB
Il modulo processa la richiesta,connettendosi a una base di dati.
DB e World Wide WebMatteo Magnani, Danilo Montesi ©
12
Restituzione del risultato
HTTPWeb
Server
INTERNET
Browser
Modulo
DBMS
DB
Il risultato, solitamente scrittonello standard output del modulo,
viene inviato dal web serveral browser richiedente.
7
DB e World Wide WebMatteo Magnani, Danilo Montesi ©
13
CGI
Un esempio ben noto e' quello delle CGI (Common Gateway Interface).
Una CGI viene implementata tramite un programmaesterno al Web server, scritto tipicamente in Perl, residente solitamente in una directory virtuale /cgi-bin.
DB e World Wide WebMatteo Magnani, Danilo Montesi ©
14
CGI
INTERNET
Browser find.cgi<1>
find.cgi<2>
find.cgi<3>
find.cgi<4>
find.cgi<5>
DBMS
DBHTTPWeb
Server
8
DB e World Wide WebMatteo Magnani, Danilo Montesi ©
15
Problemi delle CGI
Per ogni richiesta viene inizializzato un nuovoprocesso. Le performance di una CGI sono il veropunto debole di questa soluzione.
Una CGI scritta male presenta rischi di sicurezza.
E' necessario un interprete esterno (ad esempio nelcaso di CGI scritte in perl).
Alcune CGI non sono portabili (ad esempio se scrittein C).
DB e World Wide WebMatteo Magnani, Danilo Montesi ©
16
Java Servlet
Una soluzione alle basse performance delle CGI èfornita dalle Servlet, applicazioni Java lato-server.
Una servlet viene inizializzata solo una volta, poi restadisponibile (al prezzo di un utilizzo costante di risorsedel sistema).
Nel caso di piu' richieste contemporanee, non vengonocreati nuovi processi, ma esse vengono gestite tramitethread.
9
DB e World Wide WebMatteo Magnani, Danilo Montesi ©
17
HTTPWeb
Server
INTERNET
Browser
Container
DBMS
DB
Ogni nuova richiesta vieneprocessata internamente tramite
un processo leggero (thread)
Application Server e Servlet
DB e World Wide WebMatteo Magnani, Danilo Montesi ©
18
Separazione tra presentazione e contenuto (1)
Una servlet e' una soluzione abbastanzasoddisfacente, ma non del tutto.
Istruzioni per produrre HTML sono immerse nel codicejava, rendendolo poco leggibile.
Se si cambia l'aspetto della pagina (che spessocambia piu' velocemente del codice) bisogna riscriverela servlet.
La soluzione consiste nel separare la parte HTML dalcodice java.
10
DB e World Wide WebMatteo Magnani, Danilo Montesi ©
19
Separazione tra presentazione e contenuto (2)
Esistono diversi modi per realizzare la separazione trapresentazione e contenuto.
ASP, ASP.NET, PHP, JSP.
Le pagine JSP vengono compilate in servlet, per cui ne mantengono i vantaggi, guadagnando in leggibilita' e riusabilita' del codice.
DB e World Wide WebMatteo Magnani, Danilo Montesi ©
20
JSP<%@ page import="java.io.*, java.sql.*"%>"<html><head><title>Hello</title></head><body bgcolor="white"><h1>Risultato della richiesta</h1><table border='5'><%try {
Class.forName("org.postgresql.Driver");String url = "jdbc:postgresql://localhost:8000/test";Connection con = DriverManager.getConnection(url,"magnani","");Statement stmt = con.createStatement();ResultSet rs = stmt.executeQuery("SELECT * FROM autori");while (rs.next()) {
%><tr><td> <%rs.getString(1);%> </td><td> <%rs.getString(2);%> </td><td> <%rs.getString(3);%> </td></tr><%
}stmt.close();
} catch (ClassNotFoundException nf) {System.out.println(nf);}catch (SQLException e) {System.out.println(e);}catch (Exception ex) {System.out.println(ex);} finally { try {if (con != null) con.close();}catch (Exception ex) {System.out.println(ex);}}%> </table></body></html>
HTML
Script
11
DB e World Wide WebMatteo Magnani, Danilo Montesi ©
21
Considerazioni finaliSoluzioni lato-client sono opportune per scenari in cui:
Esiste un controllo sui client.
L'applicazione Web non e' molto “pesante”.
La soluzione lato-server deve essere scelta sulla base dellacomplessita' dell'applicazione (per semplici task le CGI in perlvanno benissimo), il numero di utenti (idem), la riusabilita' e la manutenzione del codice, la piattaforma di sviluppo e di utilizzodell'applicazione.
1
1
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Dati relazionali e JAVA: API JDBC
2
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Obiettivi
• Impareremo a utilizzare l’API JDBC, chepermette a un programma scritto in Java diconnettersi e manipolare dati relazionali.
• Motivazioni della nascita di JDBC.
• Connessione a una sorgente di dati tabellari.
• Manipolazione dei dati.
2
3
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Utente Casuale
DBMS e SQL
• La necessita' di manipolare basi di datiindipendentemente dal sistema utilizzato ha portato alla standardizzazione di SQL.
• Semplici comandi SQL sono utilizzabili suqualsiasi sistema.
SQL
DBMS
DB
DBMS
DB
4
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
DBMS e SQL
• Purtroppo, SQL non e’ sempre sufficiente.
• E' spesso necessario immergere SQL in altrilinguaggi (applicazioni).
• Applicazioni che utilizzano SQL devonocomunicare con i DBMS.
• Inizialmente, la connessione alle basi di dativariava a seconda del sistema.
3
5
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
DBMS, SQL e ODBC
• Per ovviare a queste difficolta', Microsoft ha prodotto ODBC (Open Database Connectivity).
• ODBC e' un'API, scritta in C, che tramite driver specifici rende trasparente il tipo di DBMS.
DBMS
DB
Client
ODBCDriver
DBMS
DB
ODBCDriver
ODBCAPI
6
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
DBMS, SQL, ODBC e Java
• Il linguaggio C non e' portabile, e i driver ODBC devono essere installati su ogni client.
• Problematico in caso di client via internet.
• Ricco di opzioni complicato.
• Nasce JDBC. DBMS
DBClientJava
JDBCDriver
JDBCDriver
JDBCAPI
DBMS
DB
4
7
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Principali passi nell’utilizzo di JDBC
• Apertura di una connessione con un DBMS.
• Scambio di dati (query e aggiornamenti).
• Chiusura della connessione.
8
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Connessione a un database
• La connessione a un database avvieneattraverso un Driver, che dipende dal sistemacon il quale si vuole comunicare.
• Il Driver traduce i metodi dell’API JDBC in istruzioni comprensibili al DBMS utilizzato.
• Bisogna mettere a conoscenza il programmajava di dove reperire il Driver necessario.
• Questa operazione si chiama registrazionedel Driver.
5
9
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Registrazione del Driver
• Inizialmente e’ necessario creare una istanzadel Driver.
Class.forName(nome_del_driver);• Il nome del driver identifica una classe Java.• La prima parte del nome identifica le directory dentro
alle quali cercare la classe. • “com.cloudscape.core.RmiJdbcDriver”• “com.mysql.jdbc.Driver”• “org.postgresql.Driver”
10
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Registrazione del Driver
• Invece di utilizzare un metodo all’interno del programma, e’ possibile registrare il Driver passandolo come parametro, al momentodell’esecuzione.
$ java -Djdbc.drivers = Driver App.class
6
11
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Apertura della connessione
• A questo punto si apre la connessione. • Il metodo DriverManager.getConnection()
riceve come parametro un URL che identificaun server DBMS.
• A partire dalla struttura dell’URL, vieneautomaticamente cercato un Driver chepossa gestirlo.
• Il metodo, tramite il Driver, apre unaconnessione e ritorna un oggetto di tipoConnection.
12
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Apertura della connessione
• Gli url dipendono dal Driver e dal server, e tipicamente hanno una struttura simile aiseguenti esempi:
• jdbc:mysql://localhost/demo
• jdbc:postgresql://localhost:8000/test• jdbc:cloudscape:rmi:db1
7
13
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Riepilogo: ottenere una connessione
Class.forName(driver).newInstance();try{
con=DriverManager.getConnection(url,””,””);// Qui utilizzare la connessione
}catch (SQLException sql) {// gestione eccezione...}finally {
try {con.close();}catch (SQLException ex) {// gest. eccezione...}}
14
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Riepilogo: ottenere una connessione
• In pratica, una connessione si puo’ apriretramite due righe di codice:
Class.forName(driver).newInstance();con=DriverManager.getConnection(url,””,””);• Se il Driver viene registrato dall’esterno, e’
addirittura sufficiente una sola istruzione.
• Vediamo brevemente come viene aperta la connessione.
8
15
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Esempio di apertura di una connessione
DB
DriverManager
Applicazione java
Classe del framework java
DBMS
16
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Caricamento (creazione) di un Driver
DB
DriverManager
Class.forName(driver).newInstance();
9
17
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Registrazione del Driver
DB
DriverManager
DriverManager.registerDriver(this);
Class.forName(driver).newInstance();
18
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Eventuale registrazione di altri Driver
DB
DriverManager
Class.forName(driver2).newInstance();
DriverManager.registerDriver(this);
10
19
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Richiesta di connessione
DB
DriverManager
DriverManager.getConnection(url);
20
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Selezione del Driver opportuno
DB
getDrivers(url);
DriverManager
DriverManager.getConnection(url);
11
21
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Apertura della connessione
DB
DriverManager
Driver.connect(url);
DriverManager.getConnection(url);
22
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Restituzione della connessione
DB
DriverManager
API
12
23
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Esempio di interrogazione SQL
• Prima di analizzare i dettagli di JDBC, vediamoun esempio di una tipica e sempliceespressione SQL:
SELECT Cognome, StipendioFROM Impiegato• Le istruzioni SQL che vogliamo valutare sono
utilizzate direttamente dai metodi Java.stringaSQL = “SELECT Cognome, Stipendio ” +
“FROM Impiegato”
24
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Esempio di interrogazione SQL
• Questa interrogazione si esegue facilmente in due passi:
• Si ottiene dalla connessione un oggettoStatement:
Statement sttm = con.createStatement();
• Si esegue la query e si ottiene il risultato:
ResultSet rs = sttm.executeQuery(stringaSQL);
13
25
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Ottenere il risultato di una interrogazione
Class.forName(driver).newInstance();try{
con=DriverManager.getConnection(url,””,””);Statement sttm = con.getStatement();ResultSet rs = sttm.executeQuery(stringaSQL);
}catch (SQLException sql) {// gestione eccezione...}finally {con.close();}
26
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Utilizzo del risultato
• Un ResultSet contiene il risultato dell’interrogazione, accessibile tramite un cursore e alcuni metodi per recuperarne il contenuto.
• Il cursore inizialmente e’ posizionato prima della prima riga.
• La riga successiva si ottiene tramite il metodo next(), che ritorna true quando tale riga e’ presente.
• Quando viene raggiunta l’ultima riga, next() ritorna false e il ResultSet viene chiuso automaticamente.
14
27
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Utilizzo del risultato
while( rs.next() ) {
rs.getString(1);
rs.getInt(2);
// Estrarre valori da tutte le colonne richieste
}
28
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Scrollable e Updatable Result Sets
• Gli oggetti di tipo ResultSet visti finora sonopercorribili dalla prima all’ultima riga una voltasoltanto, e non possono essere aggiornati.
• E’ possibile utilizzare ResultSet percorribilitramite un accesso random e aggiornabili.
• Per maggiori informazioni:
http://java.sun.com/javase/6/docs/api/� ALL CLASSES � ResultSet
15
29
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Equivalenze di tipoTipo SQL Metodo JavaBIGINT ���������BINARY ��������BIT ������� ���CHAR �����������DATE ���� ����DECIMAL ���������� ���DOUBLE �����������FLOAT �����������INTEGER ��������
30
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Equivalenze di tipoLONGVARBINARY ��������LONGVARCHAR �����������NUMERIC ���������� ���OTHER �����������REAL ������ ���SMALLINT ����������TIME ���������TIMESTAMP ��������� ����TINYINT �������VARBINARY ��������VARCHAR �����������
16
31
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Punto della situazione
Driver
DriverManager
Connection
Statement•executeQuery()
ResultSet
•next()•getXXX()
32
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Un esempio di utilizzo
• Vedremo ora un esempio pratico di come JDBC possa contribuire al fine di riutilizzare la stessa applicazione con diversi DBMS.
• Per rendere l’esempio piu’ significativo, introduciamo una nuova classe che cipermette di ottenere informazioni sul DBMS a cui ci connettiamo.
• Tale classe si puo’ ottenere tramite il metodoConnection.getMetaData().
17
33
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
DatabaseMetaData
• Gli oggetti di tipo DatabaseMetaDatamettono a disposizione moltissimi metodi, che potranno essere scelti volta per voltautilizzando la documentazione della classe.
• Nell’esempio utilizzeremo i due seguenti:
– getDatabaseProductName()
– getDatabaseProductVersion()
34
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Elementi dell’esempio
DB
DB
JDBCDemo.class
com/mysql/jdbc/Driver
sun/jdbc/odbc/JdbcOdbcDriver
DB
properties.cfgproperties2.cfgproperties3.cfg
18
35
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
I file properties.cfg
Driver: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost/DEMO
Driver: sun.jdbc.odbc.JdbcOdbcDriverurl: jdbc:odbc:db1
Driver: sun.jdbc.odbc.JdbcOdbcDriverurl: jdbc:odbc:Impiegato
properties.cfg
properties2.cfg
properties3.cfg
36
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
JDBCDemo.java (1)
String cfgFile = "properties.cfg";
// getting connection parameters
if (args.length != 0)
cfgFile = args[0];
init(cfgFile);
19
37
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
JDBCDemo.java (2)
String sqlQuery = "SELECT Cognome, Stipendio FROM Impiegato";
con = DriverManager.
getConnection(url,"","");
DatabaseMetaData db = con.getMetaData();
System.out.println("DBMS: " + db.getDatabaseProductName() +
" version " + db.getDatabaseProductVersion());
38
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
JDBCDemo.java (3)
Statement stmt = con.createStatement();
System.out.println(sqlQuery);
ResultSet rs = stmt.executeQuery(sqlQuery);
while (rs.next()) {
System.out.print(rs.getString(1));System.out.println("\t" +
rs.getInt(2));
}
20
39
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Esempio 1
DB
DB
DB
Driver
url
40
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Esempio 2
DB
DB
DB
Driver
url
21
41
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Esempio 3
DB
DB
DB
url
Driver
42
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Esecuzione esempio 1
E:\jdbc>java JDBCDemo properties.cfg
DBMS: MySQL version 4.0.16-nt
SELECT Cognome, Stipendio FROM Impiegato
Rossi 45
Bianchi 36
Verdi 40
Neri 45
Rossi 80
Lanzi 73Borroni 40
Franco 46
22
43
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Esecuzione esempio 2
E:\jdbc>java JDBCDemo properties2.cfg
DBMS: ACCESS version 04.00.0000
SELECT Cognome, Stipendio FROM Impiegato
Rossi 45
Bianchi 36
Verdi 40
Neri 45
Rossi 80
Lanzi 73Borroni 40
Franco 46
44
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Esecuzione esempio 3
E:\jdbc>java JDBCDemo properties3.cfg
DBMS: EXCEL version 08.00.0000
SELECT Cognome, Stipendio FROM Impiegato
Bianchi 36
Rossi 80
Neri 45
Verdi 40
Lanzi 73
Franco 46Rossi 45
Borroni 40
23
45
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Statement
• Abbiamo visto come un oggetto di tipo Statement possa essere utilizzato per compiere una interrogazione, tramite il metodo executeQuery().
• Lo stesso oggetto puo’ anche essere utilizzato per aggiornare il database.
• A questo scopo si utilizza il metodo executeUpdate().
46
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Statement
• Utilizzo di Statement.executeUpdate():
• UPDATE
• INSERT
• DELETE
• CREATE TABLE
• DROP TABLE
• ALTER TABLE
24
47
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Statement
• Esempio di utilizzo:
stringaSQL = “DELETE FROM Vigili ” +
“WHERE Matricola=0012”;
int righe = sttm.executeUpdate(stringaSQL);
• righe contiene il numero di righemodificate dal comando diaggiornamento.
48
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Prepared Statement
• Nel caso si debba ripetere piu’ volte un’istruzione SQL in cui cambiano solo alcuni valori, si puo’ preparare uno statement SQL parametrizzato, in cui sia possibile assegnarevolta per volta i valori di alcune variabili.
25
49
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Prepared Statement
SELECT Nome FROM Vigili WHERE Matricola =
2 FASI:
Preparazione:
parametro_1 = 1024;
execute(); // SELECT Nome FROM Vigili WHERE Matricola = 1024
parametro_1 = 1027;
execute(); // SELECT Nome FROM Vigili WHERE Matricola = 1027
Utilizzo:
50
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Prepared Statement (Java)
Preparazione:
update = con.prepareStatement(
"UPDATE Vigili SET Nome = ? " +
"WHERE Matricola = ?" ); Utilizzo:
update.setString(1, “Marco" );
update.setInt(2, 1024 );
update.executeUpdate();
26
51
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Prepared Statements
Preparazione:
select = con.prepareStatement(
"SELECT Nome FROM Vigili " +
"WHERE Matricola = ? "); Utilizzo:
select.setInt(1, 1027 );
select.executeQuery();
52
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Callable Statement
• Per completezza, bisogna ricordare un terzotipo di Statement: CallableStatement.
• Un CallableStatement serve per eseguireStoredProcedures.
• Non approfondiremo ulteriormente questoargomento.
27
53
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
SQLException
• JDBC fornisce 4 tipi specifici di eccezioni: BatchUpdateExceptionDataTruncationSQLExceptionSQLWarning
• SQLException e’ la classe da cui derivano le altre, e mette a disposizione due metodi per recuperare i codici di errore:– getErrorCode()– getSQLState()
54
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Gestione di una SQLException
try { // codice JDBC } catch ( SQLException SQLe) {
while( SQLe != null) {System.out.println(SQLe.getMessage());System.out.print(“EC: ”+SQLe.getErrorCode()); System.out.println (“ SS: ”+SQLe.getSQLState()); SQLe = SQLe.getNextException();
} }
28
55
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Punto della situazione
DatabaseMetaData
Driver
DriverManager
Connection
Statement
ResultSet int•next()•getXXX()
executeQuery()executeUpdate()
-Statement-PreparedStatement-CallableStatement
SQLException
try/catch
56
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
DataSource
• Abbiamo visto come utilizzare un Driver e un indirizzo di un database per creare una connessione.
• E’ possibile introdurre un livello di astrazione superiore.
• L’utilizzo di un oggetto DataSource, oltre a rendere ilcodice piu’ portabile, puo’ aumentare l’efficienzadell’applicazione, utilizzando particolari tipi diconnessione.
• Per approfondimenti: http://java.sun.com/javase/6/docs/api/�PooledConnection e XAConnection.
29
57
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Connessione con Driver e DriverManager
DBDriver
URL
La connessione e’ effettuata a basso livello,dovendo specificare la locazione del Driver
e l’indirizzo del database.
58
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Connessione tramite DataSource
DS
Una DataSource e’ un oggettologico indipendente dalla
locazione e dal tipo di base di dati.
jdbc/MyDB
30
59
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Connessione tramite DataSource
DB
DS JNDI
Un servizio Java Naming and Directory Interfacepermette di gestire la sorgente dei dati,provvedendo a passare all’applicazione
l’oggetto richiesto.
60
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
DataSource���������� �� ���������������������Context ctx = new InitialContext();
DataSource ds =
(DataSource)ctx.lookup("jdbc/MyDB" );
Connection con =
ds.getConnection("utente", "password" );
31
61
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Punto della situazione
DatabaseMetaData
Driver
DriverManager
Connection
Statement
ResultSet int•next()•getXXX()
executeQuery()executeUpdate()
-Statement-PreparedStatement-CallableStatement
SQLException
try/catchContext
DataSource
62
JDBC
© Matteo Magnani, Danilo Montesi – Università di Bologna
Concetti avanzati
• Quanto visto finora e’ sufficiente per connettersi e interagire con una base di dati, in modo semplice ma efficace.
• JDBC offre inoltre altre funzionalità, che non vedremo nel dettaglio, tra cui:– Transazioni.– Batch updates.– Gestione di altri tipi di dato (CLOB, BLOB, Array).