Oracle Lessons

Oracle Tipi Dati Astratti Lezione 1


In questo documento vedremo come utilizzare i tipi di dato astratti. Verranno trattati temi di amministrazione, di sicurezza e indicizzazione dei tipi di dato astratti, e dei loro attributi. Verrà descritta anche la creazione di metodi e l’impiego di viste e trigger di tipo ISTEAD OF.   Importante. Quando è necessario utilizzare i tipi di dati astratti: Quando sorge la necessità di modellare e gestire dati la cui struttura e le cui interrelazioni non sono riconducibili direttamente alle strutture tabellari del modello relazionale. Nel modello relazionale la modellazione di un oggetto complesso implica una sua suddivisione in un ampio insieme di tuple e la necessità di eseguire un gran numero di join quando si ha la necessità di ricostruirlo. Ad esempio un aeroplano è formato da un gran numero di componenti di base (ali, fusoliera, timone, motori, ecc...) i quali a loro volta sono costruiti a partire da componenti più elementari (tralici, fibre plastiche, parti metalliche) e così via. La modellazione di tali entità con un insieme di tuple rende necessario eseguire un gran numero di join ogni volta che si desidera reperire tutte le informazioni relative a un intero aeroplano.Necessità di esprimere proprietà e relazioni dinamiche dei dati e di gestirne l'evoluzione temporale. Si pensi alle difficoltà che si incontrano con il modello E/R e conseguentemente con quello relazionale nella modellazione del tempo e dell'evoluzione dinamica delle entità. Di contro attualmente:Mancanza di un modello dei dati e di un linguaggio di query standard pienamente accettati;Mancanza di un linguaggio di query dichiarativo (SQL-like);  Il modello relazionale ad oggettiI DBMS relazionali ad oggetti (object-relational) nascono dall’esigenza di assicurare le funzionalità dei RDBMS rispetto alla gestione di dati tradizionali, estendendo il modello dei dati con la possibilità di gestire dati complessi, tipica degli OODBMS. ORDBMS: caratteristiche generali: Vanno incontro alle esigenze attuali di gestire nuovi tipi di dato quali:testi, immagini, audio/video, dati geografici, ecc.;tipi di dato user-defined;tipi collezione;Metodi per modellare le operazioni sui tipi definiti dall'utente (es. Java, C).Nuovi modi per modellare le associazioni.La filosofia per la gestione dei dati è però ancora quella relazionale:Tutti gli accessi ai dati avvengono tramite SQL;Tutti le entità di interesse sono modellate tramite tabelle.Oggi quasi tutti i principali produttori di RDBMS (Oracle, Informix, DB2,..) hanno esteso i loro DBMS con caratteristiche object-relational. Tali estensioni presuppongono anche una estensione del linguaggio SQL. Allo stato attuale ogni RDBMS ha un’estensione proprietaria object-relational.Le estensioni differiscono per:Le funzionalità che supportano;Il modo di realizzarle;Le estensioni apportate al linguaggio SQL.E questo nonostante SQL-99 che è uno standard creato appositamente.SQL-99 è un tentativo di standardizzazione dell’estensione object-relational del modello relazionale. Al momento della definizione di SQL-99 i maggiori produttori di RDBMS avevano già la loro versione delle estensioni object-relational. SQL-99 non standardizza tutte le funzionalità object-relational presenti nei DBMS commerciali.E’ quindi ancora presto per capire quando e in che misura lo standard sarà recepito a livello commerciale. La sensazione è che sarà necessario un ulteriore standard che medi tra tutte le estensioni proprietarie.  Estensione del sistema di tipi. In SQL-92 i tipi di un attributo in una relazione possono essere: numerici (interi, reali, ecc.);carattere (stringhe di lunghezza fissa o variabile, caratteri singoli);temporali (date, time, datetime, interval);booleani (true, false);non strutturati (BYTE, TEXT, BLOB, CLOB);Per ogni tipo built-in esistono un insieme fisso e predefinito di operazioni che su di esso possono essere eseguite. Questo fatto introduce delle limitazioni rendono spesso difficile la rappresentazione di dati reali. Per questo motivo è stato introdotto un’estensione del sistema dei tipi che prevede: Tipi semplici; Abstract data types;User-defined types;Tipi riferimento;Tipi complessi: tipi record e tipi collezione;