modelli dei dati e dbms di nuova generazione + labo di basi di dati ii
DESCRIPTION
Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II. Marco Mesiti [email protected] http://www.disi.unige.it/person/MesitiM/teach.html. Parte COMUNE. Modello dei dati ad oggetti Modelli dei dati relazionali ad oggetti Il modello relazionale ad oggetti di Oracle - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/1.jpg)
1
Modelli dei Dati e DBMS di Nuova Generazione
+Labo di Basi di dati II
Marco Mesiti
http://www.disi.unige.it/person/MesitiM/teach.html
Marco Mesiti
http://www.disi.unige.it/person/MesitiM/teach.html
![Page 2: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/2.jpg)
2
Organizzazione dei corsi• Modello dei dati ad oggetti• Modelli dei dati relazionali ad oggetti
• Il modello relazionale ad oggetti di Oracle• Le basi di dati attive (in particolare Oracle)• XML DBMS
• Modello dei dati ad oggetti• Modelli dei dati relazionali ad oggetti
• Il modello relazionale ad oggetti di Oracle• Le basi di dati attive (in particolare Oracle)• XML DBMS
Parte COMUNE
•I sistemi di data warehouse•Tecniche di data mining
•Regole di associazione•Alberi di decisione
•I sistemi di data warehouse•Tecniche di data mining
•Regole di associazione•Alberi di decisione
Modelli dei dati
•Organizzazione dati su memoria secondaria•Strategie di elaborazione delle interrogazioni
•Organizzazione dati su memoria secondaria•Strategie di elaborazione delle interrogazioni
Basi di dati II
I due corsi sono complementari. Ha senso inserire sono uno dei due nel piano di studi
I due corsi sono complementari. Ha senso inserire sono uno dei due nel piano di studi
![Page 3: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/3.jpg)
3
Organizzazione di ogni corso
Progetto– progettazione e sviluppo di una base di dati relazionale ad oggetti su
Oracle Seminario
– Approfondimento di uno degli argomenti visti a lezione Progetto + Seminario
– Da svolgere in gruppi da 2 o 3 persone– Valutazione complessiva: [-2,2]– Se il seminario viene svolto entro la fine del corso, il range di
valutazione e’ [-1,3] Esame:
– 2 compitini (o scritto)– Progetto + Seminario– orale obbligatorio solo in caso di sufficienza non piena (16-17) o
scarsa su determinati argomenti
![Page 4: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/4.jpg)
4
Orario
Lunedi’:– 13:30 – 14:30– 14:45 – 16:00
Mercoledi’– 11:00 – 12:00– 12:15 – 13:30
Orario ricevimento: mercoledi’ 14:30 – 16:00 (ufficio Prof. Bertino)
![Page 5: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/5.jpg)
5
Introduzione
Le prime e più rilevanti applicazioni dei DBMS sono state in campo finanziario ed amministrativo
questo ha influenzato l'organizzazione e l'utilizzo dei dati nei DBMS
innovazioni hardware hanno aperto il mercato a nuove applicazioni che richiedono strumenti software adeguati
![Page 6: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/6.jpg)
6
Introduzione
Esempi di tali applicazioni sono: – (Iper)testi, multimedia – Progettazione: CAD/CAM, CASE – Computer integrated manufacturing – Sistemi esperti/basi di conoscenza – Office automation – Reti intelligenti (telecomunicazioni) – Sistemi di supporto delle decisioni – Sistemi informativi geografici/cartografici
![Page 7: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/7.jpg)
7
Introduzione
Tali nuove applicazioni possono essere caratterizzate come data-intensive programming in the large – data intensive: un programma data-intensive produce e/o
richiede grandi quantità di dati – programming in the large: programmi molto grandi e
complessi, progettati e sviluppati da molti programmatori (software engineering)
Sistemi software molto grandi e complessi che richiedono di gestire grandi quantità di dati
![Page 8: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/8.jpg)
8
Introduzione - requisiti nuove applicazioni
Condivisione dei dati Persistenza dei dati Grandi quantità di dati Affidabilità dei dati Interoperabilità
Dati strutturati (tipi complessi)
Semantica dei dati Modellazione del
comportamento attivazione comportamento
in automatico manipolazioni complesse
I DBMS tradizionali soddisfano solo i primi quattro requisiti
![Page 9: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/9.jpg)
9
Introduzione - Evoluzione dei DBMS
DBMS orientati ad oggetti – DBMS + programmazione orientata ad oggetti
DBMS relazionali estesi o relazionali ad oggetti– DBMS relazionali estesi con concetti ad oggetti
DBMS attivi – DMBS + comportamento reattivo AI
![Page 10: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/10.jpg)
10
Introduzione - Evoluzione dei DBMS
Datawarehouse– DBMS + sistemi per il supporto alle decisioni
Datamining– DBMS + statistica
DBMS XML– DBMS + documenti XML
DBMS deduttivi – DBMS + programmazione logica
![Page 11: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/11.jpg)
11
Basi di dati orientate ad oggetti
![Page 12: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/12.jpg)
12
Introduzione - L’orientamento ad oggetti
Object-orientation sempre più diffuso in ambito software engineering e linguaggi di programmazione
– vantaggio di unicità del paradigma
L'object-orientation è una tecnologia chiave per architetture software avanzate e piattaforme di sviluppo di applicazioni
Richiede maggior tempo di progettazione iniziale Riduce significativamente la dimensione del codice Richiede minor tempo totale e meno sviluppatori
![Page 13: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/13.jpg)
13
Introduzione - Unicità del paradigma
Nel tradizionale ciclo di vita del software si devono superare diverse barriere ognuna delle quali comporta problemi di comunicabilità
– dal dominio del problema all'analisi (es. Data Flow Diagram), alla programmazione (es. C) alle basi di dati (es. ER+relazionali)
Nel ciclo di vita del software orientato ad oggetti le varie fasi si basano su un unico modello
– non si deve progettare separatamente la struttura della base di dati
– non si hanno problemi di comunicazione tra DBMS e linguaggio di programmazione
![Page 14: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/14.jpg)
14
Introduzione - Integrazione di sistemi eterogenei
Un requisito importante è che le nuove applicazioni possano interagire con le applicazioni esistenti e accedere ai dati gestiti da tali applicazioni
La scelta di uno specifico linguaggio o DBMS dipende dai requisiti correnti dell'applicazione e dalla tecnologia disponibile, che variano nel tempo
– sistemi eterogenei
Il paradigma ad oggetti, grazie all'incapsulazione, permette di risolvere problemi di integrazione
![Page 15: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/15.jpg)
15
Introduzione - Definizione di OODBMS
Un OODBMS è un sistema con le funzionalità e le caratteristiche di: – un linguaggio di programmazione ad oggetti – un DBMS
Il progetto di un OODBMS richiede l'integrazione della tecnologia delle basi di dati con la tecnologia object-oriented
![Page 16: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/16.jpg)
16
Introduzione - Funzionalità di un OODBMS
object identity oggetti complessi incapsulazione ereditarietà overloading e late
binding completezza
computazionale estensibilità
Persistenza condivisione sicurezza affidabilità linguaggio di
interrogazione efficienza
![Page 17: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/17.jpg)
17
Introduzione - A chi è adatto un OODBMS?
Organizzazioni che: – hanno necessità di tempi di sviluppo brevi – adottano programmazione ad oggetti – hanno necessità di condividere informazione
complessa – sviluppano sistemi intelligenti
![Page 18: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/18.jpg)
18
Introduzione - Prodotti e prototipi
ObjectStore(Object Design) GemStone (Serviologic) O2 (Ardent Software) POET (POET Software) Jasmine (Computer
Associates) Orion (MCC) /Itasca Ontos (Ontologic) Objectivity/DB (Objectivity)
Iris/OpenODB(HewlettPackard) Versant (Versant Technology) Vision (Innovative Systems) GBase (Graphael) Statice (Symbolics) Trellis (Digital) Zitgeist (Texas Instr.) Matisse (Matisse Software)
![Page 19: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/19.jpg)
19
Introduzione - Cenni storici
1986-1989:– lancio dei primi linguaggi ad oggetti con persistenza (sistemi
standalone, non adottano piattaforme standard industriali) – es: GBase, GemStone, Vbase
1990:– primi OODBMS con funzionalità complete – architettura client/server, piattaforme comuni– es: Ontos, ObjectStore, Objectivity, Versant, Itasca, O2 , Zeitgeist
1991:– nasce ODMG necessità di uno standard – 1993,1997: ODMG93 e ODMG 2.0 – 1999: ODMG 3.0 object data management
![Page 20: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/20.jpg)
20
Introduzione
OODBMS sono stati fortemente influenzati da linguaggi di programmazione ad oggetti e fortemente contrapposti a DBMS relazionali
prodotti da piccole compagnie (non quelle che dominano il mercato dei DBMS)
![Page 21: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/21.jpg)
21
Introduzione
Caratteristiche fondamentali:– ricchezza di strutture dati– classi e tipi definiti dall’utente– stretta integrazione con linguaggi di
programmazione ad oggetti– accesso navigazionale ai dati
gli OODBMS si sono imposti in nicchie di mercato che non trovavano adeguato supporto dai DBMS relazionali (es. CAD)
![Page 22: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/22.jpg)
22
Introduzione
Tali DBMS non hanno avuto il successo di mercato sperato
– più carenti per quanto riguarda le funzionalità DBMS dei consolidati prodotti relazionali
– mancanza o limitatezza di accesso associativo ai dati – problema dei legacy system (problemi nel garantire
compatibilita’ all’indietro)
nel frattempo, i più diffusi DBMS relazionali (Informix, Sybase, DB2, Oracle) sono stati estesi con caratteristiche ad oggetti …
![Page 23: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/23.jpg)
23
Introduzione
Gli OODBMS forniscono persistenza a oggetti creati in Java, C++, Smalltalk:
– estensione di un ambiente di programmazione ad oggetti gli ORDBMS (come i relazionali) introducono una API
separata (basata su SQL) per lavorare con i dati memorizzati e hanno un loro sistema dei tipi che non è puramente object-oriented
oggi la quota di mercato che utilizza OODBMS è piuttosto bassa
![Page 24: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/24.jpg)
24
Allora perchè li studiamo?
Storicamente importanti ci permettono di capire meglio i concetti alla
base dei sistemi relazionali ad oggetti “semplici da capire” SE è nota la
programmazione ad oggetti
![Page 25: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/25.jpg)
25
Modelli dei dati ad oggetti - Concetti di base
Oggetti ed identificatori di oggetti Oggetti complessi
Incapsulazione Classi Associazioni Ereditarietà
![Page 26: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/26.jpg)
26
Oggetti (riassunto caratteristiche)
Entita’ del mondo reale contraddistinte da un identificatore (OID)
L’OID e’ indipendente dallo stato dell’oggetto Diversi concetti di uguaglianza/identita’ tra oggetti Gli OID degli oggetti non sono “chiavi” degli oggetti La presenza degli OID permettono la condivisione
(sharing) di oggetti Gli oggetti complessi sono oggetti che presentano una
struttura specifica per una applicazione
![Page 27: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/27.jpg)
40
Oggetti complessi
Non è possibile sviluppare un DBMS che fornisca tutti i possibili tipi di dato che potrebbero servire in un'applicazione
Gli oggetti del mondo reale devono poter essere “mappati'' in oggetti della base di dati nel modo più diretto possibile
La soluzione è quella di fornire agli utenti dei “building blocks'' con cui costruire i tipi di dato necessari
![Page 28: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/28.jpg)
41
Oggetti complessi
Gli OODBMS forniscono: – tipi di dato strutturati – oggetti complessi – tipi di dato (ADT) specifici dell'applicazione – tipi di dato non strutturati es. binary large objects
(Blobs)
![Page 29: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/29.jpg)
42
Oggetti complessi
Assemblati a partire da oggetti atomici mediante costruttori – Oggetti atomici true, false, 25, ''this is an atom'' – Costruttori
tuple [fname: John, lname: Doe] set {John, Susan, Mary } array <1:25, 2:20, 3:21> list [25, 20, 21]
possono a loro volta essere componenti di altri oggetti
![Page 30: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/30.jpg)
48
Incapsulazione - Componenti di un oggetto
In un OODBMS i dati e le operazioni su di essi sono incapsulati in un'unica struttura (l'oggetto)
Un oggetto consiste quindi di: – un OID, o identificatore – uno stato, o valore, costituito dai valori per un certo numero di
attributi, o campi tali campi possono contenere riferimenti ad altri oggetti
– un comportamento costituito da un insieme di metodi o operazioni l’accesso ad un attributo “a” o metodo “m” di un oggetto “o” si indica con la
seguente path expression:– o.a– o.m
![Page 31: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/31.jpg)
49
Incapsulazione - Metodi
La definizione di un metodo consiste di due componenti: – segnatura: specifica il nome del metodo, il nome (e i tipi) degli
argomenti, ed eventualmente il tipo del risultato – body: consiste di codice scritto in qualche linguaggio di
programmazione (eventualmente esteso) ObjectStore: C++ o Java O2: CO2 (estensione del C)
ogni metodo ha sempre un parametro implicito che corrisponde all’oggetto sul quale il metodo viene invocato
![Page 32: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/32.jpg)
50
Esempio
Interfaccia:– aggiorna_stip(int incr)
Implementazione: quando il metodo viene invocato su un oggetto “o”:
o.stipendio = o.stipendio + incr
![Page 33: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/33.jpg)
51
Incapsulazione - Metodo: messaggi e implementazione
L'implementazione (body) delle operazioni è nascosta, cioè non è visibile dall'esterno
l'interfaccia di un oggetto è l'insieme delle segnature delle operazioni – definisce i messaggi cui l'oggetto risponde – descrive interazione dell'oggetto con il mondo
esterno
![Page 34: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/34.jpg)
52
Incapsulazione - metodi
I dati e le operazioni sono progettati insieme e sono memorizzati nello stesso sistema
– maggiore indipendenza logica dei dati
si supera il problema dell’impedence mismatch presente in SQL:– in SQL: è necessario utilizzare SQL + linguaggio di programmazione per
avere un completo potere espressivo due linguaggi diversi problemi di gestione codice
– in OODBMS: un unico linguaggio, che permette di definire operazioni mediante metodi associati agli oggetti
L'intera applicazione può quindi essere completamente scritta in termini di oggetti
![Page 35: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/35.jpg)
53
Incapsulazione - Metodi
Un metodo è invocato mandando un messaggio ad un oggetto – o.aggiorna_stip(incr)
mando il messaggio aggiorna_stip all’oggetto o
Mandando lo stesso messaggio a due oggetti di due classi differenti questi possono esibire comporatamenti differenti (vedi dopo)– overloading: metodi con lo stesso nome ma
comportamento differente
![Page 36: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/36.jpg)
54
Incapsulazione - Overloading: esempio
Oggetto Impiegato[i] con metodo aggiorna_stip(incr):– aggiunge incr allo stipendio di Impiegato[i]
Oggetto Manager[j] con metodo aggiorna_stip(incr):– moltiplica lo stipendio di Manager[j] per incr
![Page 37: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/37.jpg)
55
Incapsulazione e basi di dati
Incapsulazione stretta– i valori degli attributi di un oggetto possono essere
letti e scritti solo tramite metodi accessor (getAttr) e mutator (setAttr)
Incapsulazione non stretta– l’accesso ai valori degli attributi è diretto
![Page 38: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/38.jpg)
56
Incapsulazione e basi di dati
Metodi accessor:– restituiscono il valore associato ad un attributo di un
oggetto o.getStipendio: restituisce lo stipendio di un impiegato o
Metodi mutator: – modificano il valore di un attributo di un oggetto
o.setStipendio(stip): lo stipendio di o diventa stip
si è forzati a scrivere molti metodi banali
![Page 39: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/39.jpg)
57
Incapsulazione e basi di dati
Diversi approcci: – attributi possono essere acceduti (letti e scritti)
direttamente es. Orion
– si forza incapsulazione stretta es. GemStone
– si permette di specificare quali attributi possono essere acceduti direttamente e quali no (attributi pubblici e privati)
es. ODMG, O2, ObjectStore
![Page 40: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/40.jpg)
58
Classi - Instaziazione
L'istanziazione è un meccanismo che permette di “riutilizzare'' la stessa definizione per generare oggetti simili
il concetto di classe è la base per l'istanziazione Una classe descrive le sue istanze specificando:
– una struttura, cioè un insieme di attributi – un insieme di messaggi che definiscono l'interfaccia esterna
degli oggetti – un insieme di metodi che sono invocati da tali messaggi
![Page 41: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/41.jpg)
59
Classi - Esempio
Classe Impiegato
(
string nome,
int stipendio,
METHOD aggiorna_stip(int incr)
)
![Page 42: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/42.jpg)
60
Classi - tipo, classe, interfaccia
Nel modello ad oggetti sono presenti diversi concetti legati alla descrizione delle caratteristiche di un insieme di oggetti: – tipo, classe, interfaccia
La separazione tra tali concetti è piuttosto confusa e le differenze con cui i termini vengono utilizzati varia da sistema a sistema
![Page 43: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/43.jpg)
61
Classi - tipo
É un concetto principalmente legato ai linguaggi di programmazione
fornisce la specifica di un insieme di oggetti o valori (operazioni invocabili su di essi)
è utilizzato a tempo di compilazione per controllare la correttezza dei programmi
![Page 44: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/44.jpg)
62
Classi - classe
Fornisce l'implementazione (stato + implementazione delle operazioni) per un insieme di oggetti dello stesso tipo
fornisce primitive per la creazione di oggetti Fornisce primitive per la creazione di
associazioni tra classi è “first class object''
![Page 45: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/45.jpg)
63
Classi - interfaccia
Fornisce la specifica del comportamento esterno di un insieme di oggetti
può essere implementata da una classe non può essere instanziata direttamente
![Page 46: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/46.jpg)
64
Classi - persistenza degli oggetti
Persistenza degli oggetti significa: – come gli oggetti sono inseriti nella base di dati – come gli oggetti sono rimossi dalla base di dati
oggetti transienti:– non persistenti– esistono solo durante la sessione di lavoro
Nei sistemi relazionali esistono comandi espliciti per inserire e rimuovere i dati nella/dalla base di dati (INSERT, DELETE)
![Page 47: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/47.jpg)
65
Classi - persistenza degli oggetti
Approcci per l’inserimento degli oggetti – persistenza automatica
ogni oggetto diventa automaticamente persistente quando viene creato
non c'è bisogno di un comando di inserimento esplicito
– radici di persistenza gli oggetti creati sono transienti per renderli persistenti bisogna assegnare loro un nome o
associarli, come componente ad un oggetto persistente
![Page 48: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/48.jpg)
66
Classi - persistenza degli oggetti
Approcci per la cancellazione degli oggetti:– tramite un comando di cancellazione esplicito (es. Orion, Iris) – dal sistema quando non è più riferito da altri oggetti (es.
GemStone, O2)
il secondo approccio assicura l'integrità referenziale, ma necessita di un meccanismo di garbage collection
– il sistema deve supportare un algoritmo in grado di capire quando un oggetto non è più riferito ed invocare tale algoritmo periodicamente
![Page 49: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/49.jpg)
67
Classi - persistenza degli oggetti
Molti sistemi permettono di avere istanze persistenti e transienti di una stessa classe
Le applicazioni accedono gli oggetti in modo uniforme, indipendentemente dal fatto che siano transienti o persistenti
![Page 50: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/50.jpg)
68
Classi - estensione
Oltre ad essere un template, la classe in alcuni sistemi denota anche la collezione delle sue istanze (estensione)
Questo aspetto è importante perchè la classe diventa la base su cui sono formulate le interrogazioni
Le interrogazioni sono significative solo se applicate a collezioni di oggetti
![Page 51: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/51.jpg)
69
Classi -Estensione
Per creare gli oggetti, le classi supportano sempre un metodo di creazione (new)– new_persona(): crea un nuovo oggetto di classe
persona
il metodo di creazione è un metodo di classe– si veda oltre
![Page 52: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/52.jpg)
73
Classi - attributi e metodi di classe
Caratterizzano la classe, intesa come un oggetto
Non si applicano alle istanze della classe, ma alla classe stessa
Esempio: – class Persona (nome, stipendio, eta') – class-attribute maxstipendio – class-method trova—il—piu'—ricco () -> Persona
![Page 53: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/53.jpg)
74
Classi - metodi di classe: costruttori
Metodi invocati al momento della creazione di un oggetto il body consiste nell'inizializzazione degli attributi Non hanno tipo di ritorno ed il nome coincide con quello della
classe é possibile definire più costruttori per ogni classe (ovviamente con
numero di argomenti diverso)
Esempio– Classe Persona– costruttore: new_persona -> Persona
restituisce un nuovo oggetto istanza della classe Persona
![Page 54: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/54.jpg)
75
Associazioni
Una associazione e’ un legame tra due classi Simile al concetto di associazione del modello
ER
Nel modello ad oggetti sono supportate solo associazioni binarie
PROGETTO IMPIEGATOCAPO
![Page 55: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/55.jpg)
76
Associazioni: Rappresentazione in UML
Progetto
nome: String
Documento
titolo: Stringstato: Stringcommento: ...
Documenti
Impiegato
nome: Stringstipendio: Numberstelefono: Numbers
autori
superiore
progetto
capo
![Page 56: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/56.jpg)
77
Associazioni: Traversal path
Un’associazione del modello ad oggetti viene dichiarata definendo una coppia di traversal path, uno per ogni direzione di attraversamento dell’associazione
Ogni traversal path rappresenta il legame logico tra le due classi (es: un impiegato e’ il capo di un progetto e un progetto ha un responsabile)
![Page 57: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/57.jpg)
78
Associazioni: Traversal path
I traversal path quindi permettono di specificare l’associazione da una classe A ad una classe B e la sua inversa
Per definire un traversal path in una classe C, si usa la seguente notazione:
relationship <tipo> <nome>
inverse <relazione>;
![Page 58: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/58.jpg)
79
Associazioni: Esempio
BAR BIRRA
BAR BIRRA
BAR BIRRA
serve
serve
servitaDA
![Page 59: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/59.jpg)
80
Associazioni: Esempio
class Bar {attribute string nome;attribute string indirizzo;relationship Set<Birra> serve inverse Birra::servitaDa;
}class Birra {
attribute string nome;attribute string manuf;relationship Set<Bar> servitaDa inverse Bar::serve;
}
Il tipo dell’associazione servee’ un insieme di oggetti Birra.
L’operatore :: lega il nome sulla destra al contesto in cui si trova tale nome, sulla sinistra
![Page 60: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/60.jpg)
81
Associazioni: Tipi
Il tipo di una associazioni puo’ essere:1. Una classe, (ad es. Bar). Un oggetto di Birra
puo’ essere associato a un solo oggetto di Bar.
2. Set<Bar>: l’oggetto e’ associato con un insieme di oggetti di Bar.
3. Bag<Bar>, List<Bar>, Array<Bar>: l’oggetto e’ associato ad un bag, list, o array di oggetti di Bar.
![Page 61: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/61.jpg)
82
Associazioni: Molteplicita’
Associazioni “molti-a-molti” hanno Set<…> come tipo della associazione e della sua inversa
Associazioni “molti-a-uno” hanno Set<…> come tipo della associazione dal lato “uno” e solo la classe per l’associazione dal lato “molti”
Associazioni “uno-a-uno” hanno classi come tipo in entrambe le direzioni
![Page 62: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/62.jpg)
83
Associazioni: Esempio di moltiplicita’
class Bevitore { …relationship Set<Birra> ama inverse Birra::fans;relationship Birra birraTop inverse Birra::superfans;
}class Birra { …
relationship Set<Bevitore> fans inverse Bevitore::ama;relationship Set<Bevitore> superfans inverse Drinker::birraTop;
}
Molti-a-molti usa Set<…>in entrambe le direzioni.
Molti-a-uno usa Set<…>solo dalla parte di “uno.”
![Page 63: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/63.jpg)
84
Associazioni: Associazioni n-arie e binarie con attributi
ODL non supporta:– associazioni binarie con attributi – associazioni ternarie o di grado superiore
E’ possibile modellare tali situazioni attraverso una classe di “connessione”, i cui oggetti rappresentano le tuple di oggetti che si vorrebbero mettere in relazioni atttraverso l’associazione (eventualmente con i relativi attributi).
![Page 64: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/64.jpg)
85
Associazioni: Classi di connessione
Si supponga di voler connettere le classi X, Y, e Z attraverso l’associazione R.
Si crea una classe C, i cui oggetti rappresentano triple di oggetti (x, y, z) presi dalle classi X, Y e Z, rispettivamente.
Sono necessarie tre associazioni “molti-a-uno” da (x, y, z) per ogni x, y e z.
![Page 65: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/65.jpg)
86
Associazioni: Esempio di classe di collegamento
Si supponga di avere le classi Bar e Birra e di voler rappresentare il prezzo a cui un bar vende una birra
– Una associazione “molti-a-molti” tra Bar e Birra non puo’ avere un attributo prezzo come nel modello E.R.
Una soluzione: Creare una classe BBP che ad ogni birra e bar associa il prezzo relativo.
La classe BBP deve contenere due associazioni “molti-a-uno” tra un suo oggetto e gli oggetti di Bar e Birra che rappresenta.
![Page 66: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/66.jpg)
87
Associazioni: Esempio di classe di collegamento
class BBP {
attribute prezzo:real;
relationship Bar ilBar inverse Bar::aBBP;
relationship Birra laBirra inverse Birra::aBBP;
} Bar e Beer devono essere modificate per
contenere la relazione aBBP di tipo Set<BBP>.
![Page 67: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/67.jpg)
88
Associazioni: Un altro esempio
Si supponga di avere le classi:– Progetto– Impiegato– Sede
E di voler rappresentare l’associazione AssegnatoA che rappresenta il fatto che un impiegato e’ assegnato ad un progetto in una sede
Questa associazione viene modellata inserendo una quarta classe AssegnatoA che contiene le triple di oggetti <p,i,s> che specifica che l’impiegato i e’ assegnato al progetto p nella sede s.
![Page 68: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/68.jpg)
89
Associazioni: Implementazioni
Molti OODBMS non supportano direttamente le associazioni
Le associazioni vengono modellate attraverso attributi
In questi casi:– E’ possibile specificare una sola direzione di
attraversamento della associazione– Se vengono specificati entrambi gli attributi, non ho
garanzia della loro reciprocita’
![Page 69: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/69.jpg)
90
Gerarchie di aggregazione
Le associazioni stabiliscono una gerarchia di aggregazione tra classi
In particolare, nella modellazione delle associazioni attraverso attributi, se una classe C è il dominio di un attributo A di una classe C’, si dice che c’è una relazione di aggregazione (o clientship) tra C’ e C
![Page 70: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/70.jpg)
91
Associazioni: Esempio (ER)
Progetto Documento
RapportoTecnico
Articolo
Task
Impiegato
11..*
1
1..*
1
1..*
1..*
1..*
1
1..*
autore
documenti
capo
1..*
1..*
parti
partecipa
1
0..*
responsabile1
0..*
lavorasuperiore
nometitolo stato commento
data numero istituzione
rivista data_pubbl
nome stipendiotelefono
mesi_uomodata_in data_fin
![Page 71: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/71.jpg)
92
Associazioni: Esempio (UML)
Progetto
nome: String
Documento
titolo: Stringstato: Stringcommento: ...
RapportoTecnico
istituzione:Stringnumero:Numberdata: Date
Articolo
rivista: Stringdata_pubbl: Date
Task
mesi_uomo: Numberdata_in: Datedata_fin: Date
Documenti
Impiegato
nome: Stringstipendio: Numberstelefono: Numbersresponsabile
autori
superiore
progetto
tasks
capo
tasks
11..*
1
1..*
1
1..*
1..*
1..*1..*
1..*
1
1..*
![Page 72: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/72.jpg)
93
Associazioni: Esempio di modellazione con attributi
![Page 73: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/73.jpg)
94
Ereditarietà
L’ereditarietà è un importante meccanismo di riutilizzo del codice
Permette ad una classe, detta sottoclasse, di essere definita a partire dalla definizione di una classe già esistente, detta superclasse
La superclasse eredita attributi, messaggi e metodi dalla superclasse
Può introdurre attributi, messaggi e metodi addizionali Può ridefinire (override) attributi, messaggi e metodi
ereditati (con alcune restrizioni)
![Page 74: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/74.jpg)
95
Ereditarietà - esempio
Si considerino i seguenti tipi di oggetti:
![Page 75: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/75.jpg)
96
Ereditarietà - esempio (continua)
Nel modello relazionale sono necessarie due tabelle e tre procedure
Con l'approccio ad oggetti Camion e Bus sono riconosciuti essere veicoli
Si introduce quindi una nuova classe Veicolo e le classi Camion e Bus sono definite come specializzazione di Veicolo
è necessario definire solo le caratteristiche aggiuntive delle classi
![Page 76: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/76.jpg)
97
Ereditarietà - esempio (continua)
![Page 77: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/77.jpg)
98
Ereditarietà - vantaggi
Evita ridondanza di codice Fornisce un potente meccanismo di
progettazione le classi possono essere raffinate in più passi Permette una rappresentazione dello schema
della basi di dati più concisa e meglio organizzata
![Page 78: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/78.jpg)
99
Ereditarietà - sostituibilità
Un'istanza di una sottoclasse può essere utilizzata ovunque ci si aspetti un'istanza della superclasse
ad una variabile di tipo Persona può essere assegnato oggetto istanza della classe Impiegato
Ogni variabile ha quindi – un tipo statico: tipo di cui è dichiarata – un tipo dinamico: classe più specifica dell'oggetto cui la
variabile è istanziata
![Page 79: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/79.jpg)
100
Ereditarietà - overriding
Consideriamo i seguenti tipi di oggetti:
bitmap, window, impiegato (record)
e un'applicazione che debba visualizzare oggetti di tali tipi
In un sistema convenzionale bisogna scrivere tre procedure – display bitmap, display window, display impiegato
![Page 80: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/80.jpg)
101
Ereditarietà - overriding
![Page 81: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/81.jpg)
102
Ereditarietà - overriding
Nell'approccio ad oggetti: – si definisce una classe generale (astratta) Screen Object con
tre sottoclassi: bitmap, window, impiegato – si definisce un'operazione display – in ogni sottoclasse si ridefinisce opportunamente l'operazione
display
for x in X do x.display()
Questo tipo di operazione va sotto il nome di overriding.
![Page 82: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/82.jpg)
103
Ereditarietà - overloading
Una conseguenza dell'overriding è che allo stesso nome di operazione corrispondono differenti implementazioni
– stesso nome usato per scopi diversi– overloading
Nell’esempio l'operazione display() ha almeno tre implementazioni differenti in bitmap, window, impiegato
L'overloading si può avere anche in assenza di ereditarietà (es. operazione =)
![Page 83: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/83.jpg)
104
Ereditarietà - late binding
L'overriding implica l'utilizzo del late binding Il metodo da utilizzare per rispondere ad un
messaggio non può cioè essere deciso a compile time ma solo a run-time
Un oggetto risponde ad un messaggio eseguendo il metodo più specifico, che non è necessariamente noto a compile time
![Page 84: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/84.jpg)
105
Ereditarietà - method lookup (dispatching)
È l'operazione effettuata dal sistema per determinare il metodo da eseguire per rispondere ad un messaggio
Si determina la classe più specifica cui l'oggetto ricevente appartiene (il suo tipo dinamico)
Si determina la superclasse più specifica di tale classe che fornisca un'implementazione per il metodo invocato (risalendo la gerarchia di ereditarietà)
![Page 85: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/85.jpg)
106
Ereditarietà - Method lookup: esempio
Classe Persona con metodo aggiorna_stip Classe Manager, sottoclasse di Persona, ridefinisce
aggiorna_stip Nel codice:
– p: persona– p.aggiorna_stip(incr)
il tipo statico di p è Persona
– a run-time, a p può essere associato un Manager il tipo dinamico di p è manager si sceglie l’implementazione di aggiorna_stip contenuta in Manager
![Page 86: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/86.jpg)
114
Accesso agli oggetti
accesso navigazionale:– dato un OID il sistema accede direttamente (e in modo efficiente)
all'oggetto riferito – possibilità di accedere agli oggetti navigando da uno all'altro – es. X.progetto.capo.stipendio
accesso associativo:– attraverso linguaggio di interrogazione – es. select nome from Impiegato where stipendio > 2000
accesso per nome:– tramite nomi esterni specificati dall'utente – es. MioDoc.titolo
![Page 87: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/87.jpg)
115
Accesso agli oggetti - accesso navigazionale
l'accesso navigazionale è cruciale in molte applicazioni
sfrutta la gerarchia di aggregazione tra gli oggetti e la presenza di riferimenti espliciti (direzionali)
nei sistemi relazionali è estremamente inefficiente perchè richiede molte operazioni di join (una per ogni ‘.’)
![Page 88: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/88.jpg)
116
Accesso agli oggetti - accesso associativo
i linguaggi di interrogazione sono cruciali per lavorare su grandi quantità di oggetti
l'avere a disposizione un linguaggio di interrogazione dichiarativo ad alto livello riduce i tempi di sviluppo delle applicazioni
i linguaggi di interrogazione dichiarativi sono alla base del successo dei DBMS relazionali – più importante caratteristica che gli OODBMS ne hanno
ereditato
![Page 89: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/89.jpg)
117
Accesso agli oggetti - nomi esterni
i nomi esterni forniscono agli utenti riferimenti semanticamente significativi agli oggetti
i nomi esterni permettono di definire entry point nella base di dati: – oggetti per cui è possibile accesso diretto
![Page 90: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/90.jpg)
118
Accesso agli oggetti
le varie modalità di accesso non sono esclusive, ma complementari
esempio: – si seleziona un insieme di oggetti da una classe (o
collezione) con un'interrogazione dichiarativa – si naviga a partire da ogni oggetto per visualizzare le sue
componenti una delle caratteristiche che distinguono un OODBMS da un
Persistent Object System è proprio la presenza di un linguaggio di interrogazione dichiarativo
![Page 91: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/91.jpg)
119
Linguaggi di interrogazione
Caratteristiche principali – uso di path expressions
Progetto.capo.nome
– scope delle interrogazioni: singola classe gerarchia di ereditarietà
– invocazione di metodi Select all from Veicoli
where prox_revisione() > 10/11/1999
![Page 92: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/92.jpg)
120
Linguaggi di interrogazione
la maggioranza dei linguaggi di interrogazione ad oggetti sono estensioni dei linguaggi relazionali
la maggiore ricchezza del modello dei dati introduce nuove problematiche
– es. chiusura del linguaggio di interrogazione
mancanza di base formale (algebra/calcolo ad oggetti) nuove problematiche per l'ottimizzazione (metodi,
tecniche di indicizzazione specializzate)
![Page 93: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/93.jpg)
121
Lo standard ODMG
OMG (Object Management Group) – associazione privata nata nel 1989 con lo scopo di
promuovere l'uso di standard nell'area oo – Data General, HP, Sun, Canon, American Airlines,
Unisys, Philips, Prime, Gold Hill, SoftSwitch, 3 Com +1991 AT&T, Digital, NCR, Bull, IBM, Olivetti
ODMG (Object Data[base] Management Group) è uno dei working group di OMG, che consiste dei maggiori produttori di OODBMS (circa il 90% del mercato)
![Page 94: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/94.jpg)
122
Lo standard ODMG - scopo del consorzio
Sviluppare una serie di standard per favorire portabilità, riusabilità e interoperabilità degli OODBMS commerciali
successo dei RDBMS legato all’esistenza di standard, differenze tra i modelli dei vari OODBMS sono un ostacolo alla loro diffusione
ODMG nel contesto OO stesso ruolo di SQL in quello relazionale
![Page 95: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/95.jpg)
123
ODMG - risultati
1993: ODMG 93 standard – [R. Cattell, The Object Database Standard: ODMG93,
MorganKaufmann, 1993]
1997: ODMG 2.0 standard – [R. Cattell et al., The Object Database Standard:
ODMG 2.0, MorganKaufmann, 1997]
1999: ODMG 3.0 standard – [R. Cattell et al., The Object Database Standard:
ODMG 3.0, MorganKaufmann, 1999]
![Page 96: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/96.jpg)
124
ODMG - componenti
Object Model (modello dei dati ad oggetti) Object Definition Language (ODL) la base è
l'interface definition language (IDL) di CORBA Object Query Language (OQL) linguaggio di
interrogazione dichiarativo (la base è SQL) Bindings per linguaggi, per C++, Smalltalk,
Java
![Page 97: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/97.jpg)
125
ODMG 3.0 ODL - Esempio
![Page 98: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/98.jpg)
126
ODMG 3.0 ODL - Esempio (continua)
![Page 99: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/99.jpg)
127
ODMG 3.0 ODL - Esempio (continua)
![Page 100: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/100.jpg)
128
lo standard ODMG comprende un linguaggio di interrogazione dichiarativo OQL che è stato fortemente influenzato dal linguaggio di interrogazione di O 2
molti OODBMS ODMG compliant non implementano (ancora) OQL, o ne implementano solo un sottoinsieme
ODMG 3.0 - OQL
![Page 101: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/101.jpg)
129
ODMG 3.0 - OQL: esempi
determinare i task con almeno 20 mesi uomo il cui responsabile guadagna almeno 2000
select t from Tasks t
where t.mes_uomo > 20 and
t.responsabile.stipendio > 2000
il risultato è di tipo bag < Task >
![Page 102: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/102.jpg)
130
ODMG 3.0 - OQL: esempi
determinare la data di inizio dei task con almeno 20 mesi uomo
select distinct t.dat_in
from Tasks t
where t.mes_uomo > 20
il risultato è un letterale di tipo set < date >
![Page 103: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/103.jpg)
131
ODMG 3.0 - OQL: esempi
determinare la data di inizio e la data di fine dei task con almeno 20 mesi uomo
select distinct struct(di: t.dat_in, df: t.dat_fine)
from Tasks t
where t.mesi_uomo > 20
il risultato è di tipo
set < struct(di : date; df : date) >
![Page 104: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/104.jpg)
132
ODMG 3.0 - OQL: esempi
determinare i rapporti tecnici che hanno lo stesso titolo di un articolo
select tr
from Rapporti_Tecnici tr, Articoli a
where tr.titolo = a.titolo
![Page 105: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/105.jpg)
133
Modello dei dati ad oggetti - esempio di schema
![Page 106: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/106.jpg)
134
Progettazione di schemi ad oggetti
Metodologie di progettazione ad oggetti (es. UML)
La componente strutturale/statica (es. class diagrams) non è molto diversa dai diagrammi Entità-Relazione
![Page 107: Modelli dei Dati e DBMS di Nuova Generazione + Labo di Basi di dati II](https://reader035.vdocuments.pub/reader035/viewer/2022081603/568150bb550346895dbed983/html5/thumbnails/107.jpg)
135
Progettazione di schemi ad oggetti
Entità– oggetto– Diverse modalità di identificazione (non è necessario introdurre codici se
non semanticamente significativi per l'applicazione) – Possibilità di rappresentare direttamente attributi multivalore e strutturati
insieme di entità– classe (collezione)– attributi– metodi (non distinguiamo tra interfaccia e implementazione)– attributi complessi– Aggregazione/associazione