La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

0 Aspetti relazionali ad oggetti di SQL:1999. 1 Utilizzo di un DBMS zTre classi di applicazioni: yapplicazioni gestionali yapplicazioni navigazionali.

Presentazioni simili


Presentazione sul tema: "0 Aspetti relazionali ad oggetti di SQL:1999. 1 Utilizzo di un DBMS zTre classi di applicazioni: yapplicazioni gestionali yapplicazioni navigazionali."— Transcript della presentazione:

1 0 Aspetti relazionali ad oggetti di SQL:1999

2 1 Utilizzo di un DBMS zTre classi di applicazioni: yapplicazioni gestionali yapplicazioni navigazionali yapplicazioni multimediali

3 2 ORDBMS: caratteristiche generali zNuovi tipi di dato ytesti, immagini, audio/video, dati geografici, ecc. ytipi di dato user-defined ymetodi per modellare le operazioni sui tipi definiti dall'utente zInterrogazioni per contenuto su dati multimediali zTrigger & stored procedure

4 3 Estensione del sistema di tipi zTipi semplici zTipi complessi: yADT yrow types zTipi riferimento zTipi collezione

5 4 Tipi semplici zI tipi semplici (o distinct type) sono la forma più semplice di estensione del sistema dei tipi fornita da un ORDBMS zConsentono agli utenti di creare nuovi tipi di dati, basati su un solo tipo primitivo zSono usati per definire tipi di dati che richiedono operazioni diverse rispetto al tipo primitivo su cui sono definiti

6 5 Tipi complessi zUn tipo complesso, o strutturato,include uno o più attributi zAnaloghi alle struct del C o ai record del Pascal z possono essere usati come: ytipi di una colonna in una relazione (ADT) ytipi di una tabella (row types)

7 6 Abstract data types CREATE TYPE t_indirizzo( numero_civicoINTEGER, viaVARCHAR(50), cittàCHAR(20), statoCHAR(2), capINTEGER); t_indirizzo è un tipo complesso i cui attributi hanno tipi predefinitii

8 7 Abstract data types zGli ADT possono essere usati come tipi di una colonna di una relazione: CREATE TABLE Impiegati ( imp# id_impiegato, nome CHAR(20), curriculum TEXT, indirizzo t_indirizzo);

9 8 Abstract data types zGli ADT possono anche essere annidati zSugli ADT possono essere definiti metodi come parte della definizione del tipo zGli ADT sono totalmente incapsulati zLa loro manipolazione può avvenire solo mediante apposite funzioni automaticamente create dal DBMS al momento della creazione dellADT

10 9 Row types zUn tipo complesso può anche essere usato come tipo di una intera tabella (row type) zLe righe della tabella sono istanze del tipo complesso mentre le colonne coincidono con gli attributi del tipo complesso

11 10 Row types zPermettono di definire un insieme di tabelle che condividono la stessa struttura zPermettono di modellare in modo intuitivo le associazioni tra dati in tabelle diverse zConsentono di definire gerarchie di tabelle

12 11 Esempio (relazionale) Impiegati prj# Progetti prj# SM123 12 12 Oracle …. imp#... nome

13 12 Row types zIn un ORDBMS ho due opzioni in più: ydefinire un ADT t_progetto e usare questo come tipo di una colonna della relazione Impiegati (ridondanza dei dati perché lo stesso progetto può essere memorizzato molte volte in Impiegati) ydefinire una tabella basata su un nuovo tipo complesso e riferire le colonne istanza di questo nuovo tipo

14 13 Esempio CREATE TYPE t_progetto( prj#INTEGER, nomeVARCHAR(20), descrizioneVARCHAR(50), budgetINTEGER); CREATE TABLE Progetti OF t_progetto;

15 14 Tipi riferimento zI row type possono essere combinati con i tipi riferimento (REF type) zPermettono di rappresentare facilmente le associazioni tra istanze di tipi zTali tipi permettono ad una colonna di riferire una tupla in un'altra relazione zUna tupla in una relazione viene identificata tramite il suo OID

16 15 Esempio CREATE TABLE Progetti OF t_progetto (prog_refREF(t_progetto)); prog_ref prj#nome descrizione budget xxxx 433DB2 ORDBMS 20,000,000 Riferimento univoco creato automaticamente dal DBMS

17 16 Esempio CREATE TABLE Impiegati( imp#id_impiegato, nomeVARCHAR(50), indirizzot_indirizzo, assegnamentoREF(t_progetto) SCOPE Progetti); Più impiegati possono riferire lo stesso progetto Un impiegato è assegnato al massimo ad un progetto

18 17 Tipi collezione zSet zBag zList zArray

19 18 Esempio CREATE TABLE Impiegati( imp#id_impiegato, nomeVARCHAR(50), competenzeSET(VARCHAR(20)), titolo_di_studioVARCHAR(30));

20 19 Esempio CREATE TYPE t_impiegato( imp#id_impiegato, nomeVARCHAR(30), indirizzot_indirizzo, managerREF(t_impiegato), progettiSET(REF(t_progetto)), figliLIST(REF(t_persona)), hobbySET(VARCHAR(20))); CREATE TABLE Impiegati2 OF t_impiegato;

21 20 Ereditarietà zPossibilità di definire relazioni di supertipo/sottotipo zLereditarietà consente di specializzare i tipi esistenti a seconda delle esigenze dellapplicazione zUn sottotipo eredita gli attributi e i metodi dei suoi supertipi

22 21 Ereditarietà zSi possono distinguere due tipi di ereditarietà yereditarietà di tipi yereditarietà di tabelle

23 22 Ereditarietà di tipi CREATE TYPE t_persona( nomeCHAR(20), idINTEGER, data_di_nascitaDATE, indirizzot_indirizzo); CREATE TYPE t_insegnante( stipendioDECIMAL(8,2), dipartimentoREF t_dipartimento, corsi_insegnatiTABLE OF REF t_corso) UNDER t_persona;

24 23 Ereditarietà di tipi CREATE TYPE t_studente( corsi_seguiti TABLE OF REF t_corso) UNDER t_persona; persona insegnante studente

25 24 Ereditarietà di tabelle zCome visto in precedenza i row type possono essere usati come tipi di tabelle zI row type possono essere organizzati in gerarchie di ereditarietà zLa gerarchia definita sui row type impone anche una gerarchia sulle tabelle definite con questi tipi

26 25 Esempio zCREATE TABLE Persone OF t_persona; zCREATE TABLE Insegnanti of t_insegnante UNDER Persone; zCREATE TABLE Studenti OF t_studente UNDER Persone; zE stata creata una gerarchia tra le tabelle Persone, Insegnanti e Studenti zLa gerarchia influenza i risultati delle interrogazioni

27 26 Large Objects (LOBs) zFacilitano la memorizzazione di dati multimediali (documenti, immagini, audio, ecc.) zPossono contenere fino a 4GB di dati (di solito i RDBMS non vanno oltre 2-32KB) zIl DBMS non associa nessuna interpretazione a questi dati

28 27 LOB zSi distinguono in: yBLOB (Binary Large Object) yCLOB (Character Large Object) zSono fisicamente memorizzati esternamente alle tabelle ma internamente al DB (comportamento transazionale)

29 28 LOB CREATE TABLE Pazienti( idINTEGER, etàINTEGER, cartella_clinica CLOB(1M), radiografiaBLOB(10M));

30 29 Metodi zI metodi sono funzioni definite dallutente associate ai tipi zPossono essere scritti in linguaggi proprietari del DBMS o in 3GL zLa sintassi varia notevolmente a seconda del DBMS utilizzato

31 30 Metodi CREATE TYPE t_persona( nomeCHAR(20), idINTEGER, data_di_nascitaDATE, indirizzot_indirizzo) MEMBER FUNCTION età(t_persona) RETURNS INTEGER;

32 31 Trigger zI trigger sono delle regole attive (scritte in SQL) che possono essere associate alle tabelle zI trigger vengono automaticamente attivati al verificarsi di una certa condizione zLa loro attivazione comporta una serie di operazioni nel DB (inserimenti in tabelle, ecc.)

33 32 Trigger zStruttura generale: ON WHERE DO

34 33 Trigger zEvento: INSERT, DELETE, UPDATE zCondizione: una qualsiasi condizione espressa in SQL (anche sottointerrogazioni) zAzione: una qualsiasi istruzione SQL zTempo di attivazione: BEFORE o AFTER levento che ha causato lattivazione del trigger

35 34 Esempio zSi vuole definire un trigger che faccia in modo che ogni richiesta di rimborso per spese di viaggio contenga il codice del conto da cui tale rimborso deve essere effettuato zSi supponga di avere due tabelle: ySpese(id_imp,id_dip,id_prg,inizio_viaggio,fin e_viaggio,totale,n_conto) yConti(n_conto,id_dip,id_prg)

36 35 Esempio CREATE TRIGGER Codice_Conto BEFORE INSERT on Spese REFERENCING NEW AS N FOR EACH ROW WHEN(N.n_conto IS NULL) SET N.n_conto = (SELECT n_conto FROM Conti WHERE id_dip = N.id_dip AND id_prg = N.id_prg)

37 36 Trigger zConsentono di specificare facilmente vincoli e controlli zUn loro uso massiccio può però penalizzare le prestazioni zCatene infinite di trigger

38 37 Stored Procedure zSono procedure memorizzate persistentemente nello schema del DB zPossono essere invocate da molteplici applicazioni zMigliorano le prestazioni in quanto riducono la comunicazione tra client (applicazione) e DBMS (server)

39 38 Stored Procedure zPossono essere scritte in un linguaggio di programmazione (Java,C++,ecc.) o in unestensione procedurale del linguaggio SQL (Oracle PL/SQL,Sybase Transact/SQL, Informix 4GL,) zIl maggiore svantaggio delle stored procedure è la mancanza di standardizzazione


Scaricare ppt "0 Aspetti relazionali ad oggetti di SQL:1999. 1 Utilizzo di un DBMS zTre classi di applicazioni: yapplicazioni gestionali yapplicazioni navigazionali."

Presentazioni simili


Annunci Google