Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoBiagino Pala Modificato 10 anni fa
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
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.