Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di...

696
1 Presentazione corso Basi di Dati e Sistemi Informativi Laboratorio di Basi di Dati e Sistemi Informativi Danilo Montesi [email protected] http://www.unibo.it/docenti/danilo.montesi

Transcript of Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di...

Page 1: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

1

Presentazione corso

Basi di Dati e Sistemi Informativi

Laboratorio di Basi di Dati e SistemiInformativi

Danilo Montesi

[email protected]

http://www.unibo.it/docenti/danilo.montesi

Page 2: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 3: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 4: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

4

Presentazione corso

Luogo e orario BDSI e LABDSI

• Come comunicato.• Concordiamo alcune aggiustamenti

Page 5: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 6: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

6

Presentazione corso

Modalita’ d’esame BDSI

• Prova scritta (senza appunti/libri etc).

Page 7: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 8: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

8

Presentazione corso

Tipi di progetti

• Progettazione di una base di dati (vedi esempio sulla pagina delcorso)

• Progetto avanzata da concordare con il docente

Page 9: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 10: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 11: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 12: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 13: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 14: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 15: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 16: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 17: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 18: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 19: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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”

Page 20: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 21: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 22: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 23: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 24: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 25: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 26: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 27: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 28: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 29: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 30: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 31: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 32: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 33: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 34: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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 .

Page 35: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 36: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 37: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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”)

Page 38: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 39: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 40: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Algebra e Calcolo relazionale

Algebra e calcolorelazionale

(parte 1)

Page 41: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 42: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 43: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 44: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 45: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 46: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 47: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 48: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 49: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 50: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 51: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 52: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 53: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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}

Page 54: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 55: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 56: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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 }

Page 57: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 58: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 59: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 60: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 61: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 62: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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 ÿ

Page 63: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 64: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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 }

Page 65: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 66: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 67: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 68: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 69: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 70: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 71: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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|

Page 72: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 73: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 74: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 75: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 76: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 77: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 78: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 79: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 80: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 81: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 82: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 83: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

44

Algebra e Calcolo relazionale

Esempio 2

• Trova le matricole dei capi degli impiegati che guadagnano piùdi 40 mila

Head210301375

Page 84: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 85: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 86: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 87: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 88: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 89: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 90: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 91: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 92: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 93: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 94: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 95: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 96: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Algebra e Calcolo relazionale

Algebra e calcolorelazionale

(parte 2)

Page 97: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 98: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 99: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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!

Page 100: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 101: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 102: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 103: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 104: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 105: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 106: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)))

Page 107: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 108: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 109: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 110: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 111: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

16

Algebra e Calcolo relazionale

Base di dati per gli esempi

Impiegati(Matricola,Nome, Età, Stipendio)Supervisione(Capo, Impiegato)

Page 112: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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 }

Page 113: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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 }

Page 114: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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 }

Page 115: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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) }

Page 116: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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}

Page 117: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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}

Page 118: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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}

Page 119: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 120: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 121: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 122: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)(...)

Page 123: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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 }

Page 124: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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 }

Page 125: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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 }

Page 126: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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 }

Page 127: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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 }

Page 128: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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))) }

Page 129: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 130: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 131: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 132: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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!

Page 133: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 134: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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 "?")

Page 135: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 136: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 137: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 138: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 139: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 140: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 141: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

SQL

SQL

Page 142: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 143: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

3

SQL

Domini

• Domini elementari (predefiniti)• Domini definiti dall‘utente (semplici, ma riutilizzabili)

Page 144: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 145: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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 ]

Page 146: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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 )

Page 147: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 148: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 149: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 150: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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 …

Page 151: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 152: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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 )

Page 153: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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 >

Page 154: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 155: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 156: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

• ...

Page 157: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 158: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 159: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 160: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 161: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 162: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 163: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 164: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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))

Page 165: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

25

SQL

Espressioni nella target list

select Stipendio/12 as StipendioMensile

from Impiegato

where Cognome = 'Bianchi'

StipendioMensile3.00

Page 166: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

26

SQL

Disgiunzione

select Nome, Cognome

from Impiegato

where Dipart = 'Amministrazione' or

Dipart = 'Produzione'

Nome CognomeMario RossiCarlo Bianchi

Giuseppe VerdiPaola BorroniMarco Franco

Page 167: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

27

SQL

Condizione complessa

select Nome

from Impiegato

where Cognome = 'Rossi' and

(Dipart = 'Amministrazione' or

Dipart = 'Produzione')

NomeMario

Page 168: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 169: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 170: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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))

Page 171: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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))))

Page 172: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 173: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

33

SQL

Proiezione, senza selezione

select Nome, Cognome

from Impiegato

Nome CognomeMario RossiCarlo Bianchi

Giuseppe VerdiFranco NeriCarlo Rossi

Lorenzo LanziPaola BorroniMarco Franco

Page 174: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

34

SQL

Proiezione: duplicati

select Cognome

from Impiegato

CognomeRossi

BianchiVerdiNeri

RossiLanzi

BorroniFranco

select distinct Cognome

from Impiegato

CognomeRossi

BianchiVerdiNeri

LanziBorroniFranco

Page 175: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)))

Page 176: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 177: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 178: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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 ]

Page 179: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 180: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 181: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 182: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 183: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 184: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 185: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 186: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 187: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 188: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 189: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 190: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 191: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 192: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 193: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 194: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 195: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 196: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 197: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 198: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 199: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

59

SQL

Sintassi, riassumiamo

SelectSQL ::=select ListaAttributiOEspressionifrom ListaTabelle[ where CondizioniSemplici ][ group by ListaAttributiDiRaggruppamento ][ having CondizioniAggregate ][ order by ListaAttributiDiOrdinamento ]

Page 200: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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!

Page 201: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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– …

Page 202: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 203: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 204: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 205: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 206: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 207: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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')

Page 208: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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'

Page 209: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 210: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 211: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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')

Page 212: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 213: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 214: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 215: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

75

SQL

Semantica delle espressioni “correlate”

• L’interrogazione interna viene eseguita una volta per ciascunaennupla dell’interrogazione esterna

Page 216: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 217: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 218: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

78

SQL

Differenza e nidificazione

select Nomefrom Impiegatoexceptselect Cognome as Nomefrom Impiegato

select Nomefrom Impiegato Iwhere not exists

(select *from Impiegatowhere Cognome = I.Nome)

Page 219: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

79

SQL

Massimo e nidificazione

“L’impiegato con lo stipendio massimo”

select *from Impiegatowhere Stipendio = (select max(Stipendio)

from Impiegato)

Page 220: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 221: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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')

Page 222: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 223: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 224: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 225: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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'

Page 226: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

86

SQL

• attenzione all’approccio insiemistico:

update Impiegato set Stipendio = Stipendio * 1.1where Stipendio <= 30

update Impiegato set Stipendio = Stipendio * 1.15where Stipendio > 30

Page 227: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

)

Page 228: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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 ))

Page 229: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 230: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 231: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 232: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 233: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 234: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 235: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 236: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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 ]

Page 237: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 238: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 239: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 240: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 241: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 242: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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;

}

Page 243: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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 ]

Page 244: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 245: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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;

Page 246: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 247: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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:

Page 248: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 249: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 250: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 251: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

è 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

….

Page 252: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 253: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 254: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 255: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 256: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 257: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 258: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 259: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 260: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 261: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 262: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 263: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 264: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 265: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 266: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 267: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Contenuti della lezione

Cardinalitàdi relazionidi attributi

Identificatoreinternoesterno

GeneralizzazioneCostruzione di schemi E-R

Page 268: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 269: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 270: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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”

Page 271: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 272: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 273: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 274: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 275: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 276: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 277: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 278: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 279: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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à

Page 280: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 281: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 282: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 283: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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;

Page 284: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

(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

Page 285: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

LA PROGETTAZIONELOGICA

Prima parte

Page 286: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Argomenti della lezione

Inquadramento del problema dellaprogettazione logicaFasi della progettazione logicaRistrutturazione di schemi E-RAnalisi delle prestazioni su schemi E-RAnalisi delle ridondanze

Page 287: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Progettazionefisica

Schema concettuale

Requisiti della base di dati

Progettazioneconcettuale

Progettazionelogica

Schema logico

Schema fisico

“CHE COSA”

“COME”

Progettazionelogica

Page 288: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Obiettivo dellaprogettazione logica

"tradurre" lo schema concettualein uno schema logico che

rappresenti gli stessi dati inmaniera corretta ed efficiente

Page 289: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Dati di ingresso e uscita

Ingresso:schema concettualeinformazioni sul carico applicativomodello logico

Uscita:schema logicodocumentazione associata

Page 290: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

alcuni aspetti non sonodirettamente rappresentabiliè necessario prestare attenzionealle prestazioni

Non si tratta di una pura esemplice traduzione per due

motivi

Page 291: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Articolazione in fasi dellaprogettazione logica

Page 292: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Traduzione nelmodello logico

Ristrutturazione delloschema E-R

Schema E-RCaricoapplicativo

Schema E-Rristrutturato

Modellologico

Schemalogico

ProgettazioneLogica

Schemalogico

Page 293: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 294: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Ma:le prestazioni non sono valutabilicon precisione su uno schemaconcettuale!

Per ottimizzare il risultatoabbiamo bisogno di analizzare le

prestazioni a questo livello

Page 295: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Consideriamo degli“indicatori” dei parametri che

regolano le prestazioni

spazio: numero di occorrenzeprevistetempo: numero di occorrenze (dientità e relazioni) visitate duranteun’operazione

Page 296: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 297: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 298: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 299: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 300: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Tavola degli accessi

Concetto Costrutto Accessi TipoImpiegato Entità 1 LAfferenza Relazione 1 L

Dipartimento Entità 1 LPartecipazione Relazione 3 L

Progetto Entità 3 L

Page 301: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Attività della ristrutturazione

Analisi delle ridondanzeEliminazione delle generalizzazioniPartizionamento/accorpamento dientità e relazioniScelta degli identificatori primari

Page 302: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 303: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

semplificazione delle interrogazioni

Svantaggiappesantimento degli aggiornamentimaggiore occupazione di spazio

Vantaggi

Page 304: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 305: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Attributo derivabile

Impiegato

Importo netto

IVA

Importo lordo

Page 306: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Attributo derivabile daaltra entità

Importo totale

ComposizioneAcquisto Prodotto

Prezzo

(1,N) (1,N)

Page 307: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Corso

Studente

Frequenza

(0,N)

(1,N)

Professore

Insegnamento

(1,1)

(1,1)

Docenza

(0,N)

(1,N)

Ridondanzadovuta a ciclo

Page 308: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Facciamo ora un esempio dianalisi di prestazioni in caso

di presenza e assenza diridondanza

Page 309: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Uno schema con ridondanza

ResidenzaPersona Città

Numero abitanti

Page 310: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 311: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 312: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 313: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 314: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 315: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Contenuti della lezione

Inquadramento del problema dellaprogettazione logicaFasi della progettazione logicaRistrutturazione di schemi E-RAnalisi delle prestazioni su schemi E-RAnalisi delle ridondanze

Page 316: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 317: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 318: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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”

Page 319: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 320: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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à

Page 321: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 322: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 323: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 324: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 325: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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à)

Page 326: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

,

Page 327: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 328: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 329: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 330: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 331: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 332: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

LA NORMALIZZAZIONE

Prima parte

Page 333: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Argomenti della lezione

Forma normale e normalizzazioneRidondanze e anomalieDipendenze funzionaliForma normale di Boyce e CoddProprietà delle decomposizioni

Page 334: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 335: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 336: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 337: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 338: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 339: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 340: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Per studiare in manierasistematica questi aspetti, ènecessario introdurre uno

strumento di lavoro:la dipendenza funzionale

Page 341: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 342: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Notazione

X→→→→Y

Esempi:

Impiegato →→→→ StipendioProgetto →→→→ Bilancio

Page 343: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 344: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 345: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Esiste un’altra proprietà che puòessere modellata da una DF

In ciascun progetto, un impiegatosvolge una sola funzione

Impiegato Progetto →→→→ Funzione

Page 346: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Facciamo un confronto

Impiegato →→→→ StipendioProgetto →→→→ Bilanciocausano anomalie

Impiegato Progetto →→→→ Funzionenon causa anomalie

Perché?

Page 347: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 348: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 349: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 350: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Che facciamo se una relazionenon soddisfa la BCNF?

La rimpiazziamo con altre relazioniche soddisfano la BCNF

Come?Decomponendo sulla base delle

dipendenze funzionali!

Page 351: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 352: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Non sempre così facile

Impiegato Progetto SedeRossi Marte RomaVerdi Giove MilanoVerdi Venere MilanoNeri Saturno MilanoNeri Venere Milano

Impiegato →→→→ SedeProgetto →→→→ Sede

Page 353: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 354: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 355: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 356: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 357: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Un altro problema:conservazione delle

dipendenzeSupponiamo di voler inserire unanuova tupla che specifica lapartecipazione dell'impiegato Neri,che opera a Milano, al progetto Marte

Page 358: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Impiegato Progetto SedeRossi Marte RomaVerdi Giove MilanoVerdi Venere MilanoNeri Saturno MilanoNeri Venere MilanoNeri Marte Milano

Page 359: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Impiegato ProgettoRossi MarteVerdi GioveVerdi VenereNeri SaturnoNeri Venere

Impiegato SedeRossi RomaVerdi MilanoNeri Milano

Neri Marte

Neri Milano

Page 360: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Conservazione delledipendenze

Una decomposizione conserva ledipendenze se ciascuna delle

dipendenze funzionali dello schemaoriginario coinvolge attributi che

compaiono tutti insieme in uno deglischemi decomposti

Page 361: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 362: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Contenuti della lezione

Forma normale e normalizzazioneRidondanze e anomalieDipendenze funzionaliForma normale di Boyce e CoddProprietà delle decomposizioni

Page 363: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

LANORMALIZZAZIONE

Seconda parte

Page 364: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Argomenti della lezione

Richiami di normalizzazioneTerza forma normaleDecomposizione in terza forma normaleVerifiche di normalizzazione su schemiE-RAltre forme di decomposizione

Page 365: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 366: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 367: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 368: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Che facciamo se una relazionenon soddisfa la BCNF?

La rimpiazziamo con altre relazioniche soddisfano la BCNF

Come?Decomponendo sulla base delle

dipendenze funzionali!

Page 369: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 370: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Una relazione non-normalizzata

Dirigente Progetto SedeRossi Marte RomaVerdi Giove MilanoVerdi Marte MilanoNeri Saturno MilanoNeri Venere Milano

Progetto Sede →→→→ DirigenteDirigente →→→→ Sede

Page 371: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

La decomposizione èproblematica

Progetto Sede → Dirigentecoinvolge tutti gli attributi quindinessuna decomposizione puòpreservare tale dipendenza

quindi in alcuni casi la BCNF “nonè raggiungibile”

Page 372: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 373: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Dirigente Progetto SedeRossi Marte RomaVerdi Giove MilanoVerdi Marte MilanoNeri Saturno MilanoNeri Venere Milano

Progetto Sede →→→→ Dirigente

La relazione è in terza forma normale

Dirigente →→→→ Sede

Page 374: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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”

Page 375: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 376: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 377: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 378: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 379: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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?

Page 380: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 381: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 382: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 383: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Prodotto

Nomeprodotto

Prezzo

Nomefornitore

Indirizzo

PartitaIVA

Codice

PartitaIVA →→→→ NomeFornitore Indirizzo

Page 384: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Analisi dell’entità

L’entità viola la terza forma normalea causa della dipendenza:

PartitaIVA →→→→ NomeFornitore Indirizzo

Possiamo decomporre sulla base diquesta dipendenza

Page 385: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Indirizzo

PartitaIVA

Nomefornitore

Nomeprodotto

Prezzo

Codice

FornituraProdotto Fornitore

(1,1) (0,N)

Prodotto

Nomeprodotto

Prezzo

Nomefornitore

Indirizzo

PartitaIVA

Codice

Page 386: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Professore Studente

Corso dilaurea

Tesi

(0,N) (0,1)

(0,N)

Dipartimento

(0,N)

Studente →→→→ CorsoDiLaureaStudente →→→→ Professore

Professore →→→→ Dipartimento

Page 387: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 388: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Professore Studente

Corso dilaurea

Tesi

(0,N) (0,1)

(0,N)

Dipartimento

(0,N)

Dipartimento

Afferenza

(0,N)

(1,1)

Page 389: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 390: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Corso dilaurea

Iscrizione

(0,N)

(1,1)

Professore StudenteTesi

(0,N) (0,1)

Dipartimento

Afferenza

(0,N)

(1,1)

Corso dilaurea

(0,N)

Page 391: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Contenuti della lezione

Richiami di normalizzazioneTerza forma normaleDecomposizione in terza forma normaleVerifiche di normalizzazione su schemiE-RAltre forme di decomposizione

Page 392: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Basi di dati a oggetti

Page 393: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

2

Sommario

• Motivazioni• OODB• ORDB• Tecnologia delle basi di dati a oggetti

Page 394: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 395: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 396: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 397: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 398: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 399: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 400: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 401: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 402: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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))

Page 403: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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”]]

Page 404: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 405: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 406: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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]>

Page 407: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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]>

Page 408: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

17

Page 409: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 410: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 411: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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))

Page 412: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 413: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 414: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 415: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 416: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 417: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)]; }$

Page 418: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 419: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 420: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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...

Page 421: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 422: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 423: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 424: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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 (???)

Page 425: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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”

Page 426: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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”, ...)

Page 427: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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”

Page 428: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 429: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 430: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 431: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 432: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 433: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 434: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

43

Funzionalita' quasi (?) obbligatorie ("no consensus")

• Dati derivati e definizione di viste• Funzionalità DBA• Vincoli di integrità• Funzionalità per la modifica di schemi

Page 435: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

44

Funzionalità opzionali

• Ereditarietà multipla• Verifica dei tipi ed inferenza su di essi• Distribuzione• "Design transactions" (transazioni lunghe e nidificate)• Gestione delle versioni

Page 436: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)"

Page 437: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 438: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 439: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 440: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 441: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 442: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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’

Page 443: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 444: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 445: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 446: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 447: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 448: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 449: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

Basi di Dati Attive

Basi di Dati Attive

Page 450: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 451: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 452: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

4

Basi di Dati Attive

Anni 70: senza DBMS

Sistema Operativo

A1 An…

Applicazioni

File

Dati in comune

Page 453: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

5

Basi di Dati Attive

Anni 80: con DBMS

Sistema Operativo

A1 An…

Applicazioni

File

TabelleDatabase

Scritte in C, Pascal …

Page 454: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

6

Basi di Dati Attive

Anni 80: con DBMS e stored procedure

Sistema Operativo

A1 An…

Applicazioni

File

TabelleDatabase

ComportamentoProceduralein comune

Page 455: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 456: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

8

Basi di Dati Attive

Anni 90: DBMS Attivo

Sistema Operativo

A1 An…

Applicazioni

File

Tabelle

DatabaseAttivo

Trigger

Page 457: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 458: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 459: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 460: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 461: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 462: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 463: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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;

Page 464: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 465: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 466: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 467: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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))

Page 468: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 469: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

21

Basi di Dati Attive

Proprietà delle regole

• terminazione (essenziale)• confluenza• determinismo delle osservazioni

Page 470: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 471: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

BUSINESS INTELLIGENCE:DATAWAREHOUSE &

DATAMINING

Page 472: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 473: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 474: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 475: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 476: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 477: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 478: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 479: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 480: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 481: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 482: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 483: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 484: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 485: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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).

Page 486: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 487: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

17

IntroduzioneBusiness Intelligence: DataWareHouse & DataMining

Base di dati orientata ai soggetti (3/3)

Ulteriore esempiodi ipercubo con tredimensioni

Page 488: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 489: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 490: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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).

Page 491: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 492: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 493: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 494: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 495: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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).

Page 496: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 497: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.)

Page 498: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

28

IntroduzioneBusiness Intelligence: DataWareHouse & DataMining

Le gerarchie di attributi (4/5)Es. Cubo in tredimensioni. Ciascuna conuna propria gerarchia.

Page 499: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 500: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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à.

Page 501: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 502: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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).

Page 503: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 504: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 505: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 506: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 507: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 508: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 509: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 510: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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?

Page 511: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 512: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 513: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

?

Page 514: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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?

Page 515: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 516: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 517: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 518: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 519: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 520: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 521: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 522: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 523: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 524: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 525: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 526: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 527: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 528: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 529: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 530: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 531: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 532: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 533: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 534: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 535: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 536: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 537: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 538: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 539: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 540: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 541: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 542: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 543: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 544: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 545: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 546: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 547: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 548: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 549: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 550: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 551: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 552: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 553: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 554: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 555: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 556: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 557: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 558: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 559: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 560: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 561: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 562: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 563: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 564: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 565: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 566: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 567: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 568: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 569: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 570: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 571: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 572: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 573: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 574: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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 .

Page 575: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 576: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 577: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 578: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 579: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 580: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 581: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 582: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 583: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 584: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 585: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 586: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 587: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 588: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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).

Page 589: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 590: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 591: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 592: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 593: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 594: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 595: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 596: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 597: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 598: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 599: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 600: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 601: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 602: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 603: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 604: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 605: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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…

Page 606: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 607: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 608: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 609: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 610: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 611: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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à

Page 612: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 613: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 614: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 615: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 616: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 617: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 618: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 619: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 620: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 621: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 622: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 623: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 624: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 625: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 626: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 627: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 628: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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 .

Page 629: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 630: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 631: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 632: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 633: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 634: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 635: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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).

Page 636: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 637: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 638: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 639: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 640: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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;

Page 641: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 642: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 643: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 644: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 645: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 646: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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]

Page 647: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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]

Page 648: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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;

Page 649: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 650: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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)

Page 651: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 652: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 653: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 654: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 655: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 656: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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'.

Page 657: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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).

Page 658: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 659: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 660: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 661: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 662: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 663: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 664: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 665: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 666: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 667: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 668: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 669: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 670: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 671: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 672: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 673: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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();

Page 674: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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);

Page 675: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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);

Page 676: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 677: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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);

Page 678: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 679: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 680: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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 �����������

Page 681: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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().

Page 682: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 683: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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);

Page 684: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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));

}

Page 685: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 686: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 687: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 688: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 689: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 690: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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();

Page 691: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 692: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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();

} }

Page 693: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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.

Page 694: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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

Page 695: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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" );

Page 696: Basi di Dati e Sistemi Informativi Laboratorio di ... - GinLemon's Blog · • Realizzare basi di dati utilizzando modelli, metodi e sistemi per la definizione, progettazione e realizzazione

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).