Che materia stai cercando?

Basi Di Dati - Riassunti Completi

Appunti di Basi di dati basati su appunti personali del publisher presi alle lezioni della prof. Ferrari dell’università degli Studi Insubria Como Varese - Uninsubria, facoltà di Scienze matematiche fisiche e naturali. Scarica il file in formato PDF!

Esame di Basi di dati docente Prof. E. Ferrari

Anteprima

ESTRATTO DOCUMENTO

Dominio: insieme anche infinito di valori

Prodotto cartesiano: D1×D2×…×Dk è definito come:

{(v1, v2, . . . , vk) | v1 Î D1, . . . , vk Î Dk}

D1×D2×…×Dk ha valore k

Ogni elemento del prodotto cartesiano è detto tupla

Relazione: Una relazione su D1, D2, …, Dk è un sottoinsieme finito del prodotto cartesiano

D1×D2×…×Dk

Una relazione ha grado k

Ogni tupla ha k componenti su cui è definita la relazione

La cardinalità è il numero di tuple appartenenti alla relazione

Def: Una relazione è un insieme finito di tuple, ordinate al loro interno.

Non è definito alcun ordinamento fra le tuple e sono distinte l'una dall'altra.

Notazione Per Nome

Ad ogni componente delle tuple viene associato un nome detto nome di attributo,

La coppia (nome di attributo, dominio) è detta attributo

L'uso degli attributi permette di:

• Denotare le compenenti delle tuple per nome

• Fornire maggiori informazioni

Schema di Relazione

La coppia (S(A1,A2,…An), dom) è uno schema di relazione

L'insieme di schemi di relazioni [S = {S1, S2,…, Sn}] è detto schema di base di dati

Informazione Incompleta

Non sempre sono disponibili informazioni su tutte le proprietà, è possibile rappresentare l'assenza

di valore mediante un valore speciale (o, null, ?); sono detti valori nulli

Vincoli di Integrità (VI)

Condizioni che devono essere verificate da ogni istanza della base di dati; un' istanza corretta

rispetta tutti i vincoli di integrità su di essa.

Vincolo di Chiave

Una chiave è un insieme di attributi che distingue fra loro le tuple della relazione.

Un insieme è chiave di uno schema di relazione se verifica le due proprietà

1. Non devono esistere due tuple con lo stesso valore per tutti gli attributi

2. Nessun sottoinsieme verifica la proprietà 1

Un insieme che verifica solo la proprietà 1 e non la 2 è detto super-chiave

L'esistenza delle chiavi permette l'accessibilità a ciascun dato della base di dati, permetto inoltre di

correlare i dati in relazioni diverse.

Chiavi Candidate

Una relazione nel quale si verificano entrambe le proprietà 1 e 2

Si dividono in Primaria e Alternativa.

Chiave Primaria:

Criteri di scelta:

• Chiave candidata contenente il minor numero di attributi,

• Chiave candidata piu utilizzata

Le chiavi primarie non possono avere valori nulli mentre le chiavi alternative si

Chiavi Esterne

Insieme di attributi usati per riferire una tupla in un'altra relazione (deve corrispondere alla chiave

primaria della seconda relazione) e vengono utilizzate per modellare associazioni.

X è una chiave esterna di S su S′ se, qualsiasi siano gli stati di S ed S′, per ogni tupla t di S esiste

una tupla t′ di S′ tale che t[X] = t′[Y ]

S è detta relazione referente

S' è detta relazione riferita

Vincolo di integrità referenziale

Qualsiasi siano gli stati di S ed S′, per ogni tupla t di S esiste una tupla t′ di S′ tale che t[X] = t′[Y ]

L'integrità referenziale può essere violata da inserimenti e modifiche oppure cancellazione e

modifiche

03 - Linguaggio SQL: Comandi del DDL

giovedì 12 ottobre 2017

14:49

SQL: Structure Query Language

DDL: Data Definition Language (creare e modificare schemi di database)

• permette di specificare e modificare lo schema della base di dati, lo schema delle viste ed i

vincoli di integrità. [livello logico ed esterno]

DML: Data Manipulation Language (inserire, modificare, interrogare e gestire dati memorizzati)

• permette di creare, modificare ed interrogare l'istanza della base di dati. [livello logico ed

esterno]

SDL: Data Storage and Definition Languages (specificare le strutture di memorizzazione e i metodi

di accesso)

• definisce lo schema fisico del DB. [livello fisico]

Il linguaggio SQL è il linguaggio per la definizione e manipolazione dei dati dei DBMS; è stato il

primo linguaggio dichiarativo progettato per l'accesso ai dati.

Tipi di Dato

In SQL si dividono in:

• Tipi predefiniti

• Tipi user-defined

Tipi carattere:

• Singoli caratteri o stringhe

• Tipi numerici

• Tipi temporali (date e ore)

• Boolenai

• BLOB, CLOB (per grandi immagini e testi)

Creazioni di Relazioni

CREATE TABLE nome relazione (specifica colonna [specifica colonna]*

In SQL è possibile specificare nella definizione i diversi tipi di vincoli (not null, unique e primary key,

foreign key, check)

Per specificare che una colonna non può avere valori nulli bisogna includere il vincolo NOT NULL

Stessa cosa anche per UNIQUE e PRIMARY KEY

• UNIQUE: garantisce che non esistono due tuple con gli stessi valori non nulli

• PRIMARY KEY: impone per ogni tupla i valori

Chiavi esterne: definite mediante FOREIGN KEY

ALTER TABLE <nome relazione> <modifica>

04 - SQL: Linguaggio di Query

venerdì 13 ottobre 2017

15:11

SQL

È un linguaggio set-oriented dove gli operatori operano su relazioni ed il risultato è sempre una

relazione

Interrogazioni

SELECT {[distinct] R1 .C1, R2.C2, …, Ri.Cn}

FROM R1, R2, … Rk

WHERE F;

Se nel select voglio selezionare tutte le colonne e non solo uno si può usare SELECT *

Operatore LIKE

Il carattere _ rappresenta un singolo carattere qualsiasi presente

Il carattere % rappresenta una sequenza di n caratteri

//selezionare tutti i film che hanno 'd' come terza lettera del titolo

SELECT*

FROM Film

WHERE Titolo LIKE '__d%';

Si possono utilzarre espressioni nella clausola di proiezione, inoltre è possibile dare un nome alla

colonna contenente l'espressione calcolata, il nome deve essere preceduto dalla parola chiave AS

SELECT Stipendio/12 AS StipendioMensile

FROM Impiegato

WHERE Cognome = 'Bianchi';

Oltre che nella clausola di proiezione è possibile inserire espressioni anche nella clausola di

qualificazione.

È possibile effetturare ordinamenti alla fine dell'interrogazione aggiungendo ORDER BY, seguita

da una lista di nome di colonne. Di default è settato l'opzione ASC (crescente) mentre si può

specificare DESC per un ordinamento decrescente.

05 - SQL: Linguaggio di Query (II parte)

venerdì 13 ottobre 2017

16:06

Operazione di Join

Il join di due relazioni A e B genera tutte le coppie formate da una tupla A e una tupla B; consente

di attraversare le associazioni rappresentate mediante il meccanismo delle chiavi esterne.

JOIN ON

<nome relazione> JOIN <nome relazione> ON <predicato>

JOIN USING

applicabile quando le due relazioni hanno colonne col lo stesso nome

<nome relazione> JOIN <nome relazione> USING (<lista nomi colonne>)

NATURAL JOIN

Richiesta l' uguaglianza dei valori di tutte le colonne con lo stesso nome nelle due relazioni

<nome relazione> NATURAL JOIN <nome relazione>

OUTER JOIN

Aggiunge al risultato le tuple che non hanno partecipato al join completandole con NULL

T OUTER JOIN S

• FULL: sia le tuple di T che quelle di S che non partecipano vengono completate e inserite

• LEFT: le tuple di T che non partecipano al join vengono completate e inserite nel risultato

• RIGHT: le tuple di S che non partecipano al join vengono completate e inserite nel risultato

Funzioni di Gruppo

Nella clausola di proiezione possiamo avere anche espressioni che calcolano valori a partire da

insieme di tuple.

• Operano su un insieme di valori

• Producono come risultato un unico valore

• Sono indicate nella clausola di SELECT

Tutte le funzioni di gruppo possono essere usate col qualificatore DISTINCT

Raggruppamento

Le colonne da usare per il raggruppamento sono specificate tramite la parola chiave GROUP BY.

Usando il GROUP BY ogni tupla risultante rappresenta un gruppo di tuple della relazione.

Esistono delle condizioni sui gruppi

È possibile selezionare solo alcuni dei gruppi ottenuti dal parzionamento usando HAVING

• È seguita da un predicato o una combinazione booleana di predicati

• Solo predicati di funzioni di gruppo

Operazioni Insiemistiche

La select da sola non consente di fare unioni, intersezioni e differenze, quindi SQL prevede dei

costruttori per ciò: UNION, INTERSECT, MINUS

UNIONE

Operatore di unione: A UNION B

• Esegue l'unione delle due espressioni A e B

• Richiede la compatibilità di schemi tra A e B (stesso numero di attributi e dominio)

• Rimuove i duplicati (UNION rimuove i duplicati UNION ALL no)

• La tabella risultato ha di default come il nome della colonna il nome della prima query (se

non mi va bene rinomino le colonne delle query usando AS)

INTERSEZIONE

Operatore di intersione: A INTERSECT B

• Esegue l'intersezione delle due espressioni A e B

• Richiede la compatibilità di schemi tra A e B

• Tabella di risultato ha il nome di default della prima colonna

DIFFERENZA

Operatore di differenza A EXCEPT/MINUS B

• Esegue la differenza delle due espressioni A e B

• Richiede la compatibilità di schemi tra A e B

• Leva da A gli elementi di B

06 - Sotto-Interrogazioni

mercoledì 18 ottobre 2017

12:09

Sotto-interrogazioni (Subquery)

È un' istruzione select contenuta all'interno di un'altra interrogazione, permette di suddividere un

problema complesso in sotto problemi più semplici.

È possibili introdurle nella clausola WHERE, HAVING e nella clausola FROM.

Nella clausola WHERE usata per:

• Determinare uno o più valori da usare come valori di confronto di un predicato

dell'interrogazione

• Esprimere quantificazioni esistenziali (EXIST / NOT EXIST)

Tre tipi di Sotto-Interrogazioni

• Subquery Scalare: comando SELECT che restituisce un solo valore

SELECT Max(Valutazione) FROM Film;

È possibile esprimere interrogazioni complesse, prima il DBMS calcola la subquery

 Se restiuisce più di un valore genera un errore run-time

 Se voglio restituire più valori devono essere specificati nella clausola where

• Subquery di Colonna: comando SELECT che restituisce un colonna

SELECT Valutazione FROM Film;

Utilizzo operatori di confronto: ANY(almeno uno dei valori) | ALL(tutti i valori)| NOT

IN (non è in..)

Per concetto di esclusione si può utilizzare NOT IN ma anche le formule EXCEPT

• Subquey di Tabella: comando SELECT che restituisce una tabella

SELECT Titolo, Regista FROM Film;

Se restituisce come risultato una tabella con più di due attributi

 • Nel predicato va inserito il costruttore della tupla

• Elencare gli attributi tra () [ (NomeAttributo, NomeAttributo) ]

Sotto Interrogazioni Correlate

Sotto-interrogazione eseguita ripetutamente per ogni tupla candidati considerata nella valutazione;

ogni esecuzione è correlata al valore di uno o più attributi delle tuple candidate nella interrogazione

principale.

EXIST e NOT EXIST

Una sotto-interrogazione può essere usata con gli operatori:

EXIST(sq): TRUE se sq restituisce almeno una tupla

 NOT EXIST(sq): TRUE se sq non restituisce alcuna tupla

Questi due operazioni possono essere usate in altervia a intersezione e differenza

07 - SQL: DML - Istruzioni di Aggiornamento

mercoledì 1 novembre 2017

17:19

Tre comandi per la manipolazione del contenuto di relazioni:

• INSERT: inserimento di tuple

• UPDATE: modifica di tuple

• DELETE: cancellazione di tuple

Operazioni di Aggiornamento

Modifca dello stato della base di dati, quindi bisogna verificare che siano rispettati i vincoli.

Ogni istruzione può aggiornare il contenuto di una sola tabella

Operazioni di Inserimento

• Inserimento di una tupla: assegna di un valore costante ad ogni attributo

• Inserimento di più tuple: lette da altre tabelle mediante un'istruzione SELECT

Inserimento

INSERT INTO S [(C1,C2,…,Cn)]

{VALUES (v1,v2,…,Vn) | sq};

I valori da assegnare alla nuova tupla possono:

• Essere specificati esplicitamenti (clausola VALUES)

• Determinati tramite una sotto interrogazione (sq)

Cancellazione

DELETE FROM S [<alias>] [WHERE F];

Se non è specificata nessuna clausola di qualificazione vengono cancellate tutte le tuple

Modifica

UPDATE S [<alias>]

SET C1 = {e1 | NULL}, …, Cn = {en | NULL}

[WHERE F]

Se non è specificata alcuna clausola di qualificazione vengono modificate tutte le tuple

Usate per:

• Determinare le tuple da modificare

• Determinare i nuovi valori da assegnare alla tuple

08 - SQL: Vincoli di Integrità & Viste

giovedì 2 novembre 2017

14:05

Vincoli di Integrità

Oltre ai vincoli già identificati come NOT NULL, UNIQUE o PRIMARY KEY, FOREIGN KEY,

esistono altri vincoli che dipendono dal dominio applicativo.

• Nel comando CREATE TABLE è possibile definire:

Vincoli CHECK su colonna

o • Specifica affianco alla colonna CHECK più predicato

Vincoli CHECK su relazione

o • Aggiunta affianco alla relazione CHECK più predicato

• Può contenere sotto interrogazioni che riferiscono ad altre tabelle

È possibile specificare i vincoli associandone un nome usando CONSTRAINT e il nome del vincolo

[…

Colloc DECIMAL (4) CONSTRAINT Pkey PRIMARY KEY,

…]

Se si aggiunge una relazione mediante ALTER TABLE ADD CONSTRAINT è possibile solo se le

tuple soddisfano procedentemente il vincolo

Utilizzata per poter eliminare o modificare successivamente il vincolo chiamato per esempio "pkey"

Q di leggibilità:

È consigliabile espreimere con vincoli CHECK solo condizioni che fanno riferimento a singole tuple

della relazione cui associamo il vincolo (maggiore comprensibilità)

Devo sempre usare un asserzione se faccio riferimento a tuple di tabelle diverse

Asserzioni

Elementi dello schema che danno un nome al vincolo check

Obbligatorio se il vincolo coinvolge più relazioni

CREATE ASSERTION <nome asserzione>

CHECK (<condizione>)

Un vincolo CHECK è violato se la valutazione della condizione di controllo restituisce FALSE

In presenza di valori nulli per capire se è vero o falso uso una logica a 3 stati, quindi si ha anche il

valore di unknown(?) impossibile da determinare

Valori Nulli

• Se il risultato di un predicato è NULL restituisce ?

• Nelle espressioni se un argomento è NULL allora il valore dell' intera è NULL

• Nel calcolo delle funzioni di gruppo vengono escluse le tuple con valore nullo per la

colonna

Conseguenza: SUM(e1 + e2) pùò dare un risultato diverso da SUM(e1) + SUM(e2)

• Una tupla per cui il valore di verità è ? non viene resitutita dall'interrogazione

• In un vincolo di integrità se la valutazione della condizione restituisce ? Il vincolo non è

violato

IS NULL

• Applicato ad un dato restituisce true se la tupla ha valore nullo per l'attributo

IS NOT NULL

• Applicato ad un dato restituisce true se la tuple ha valore non nullo per l'attributo

09 - Viste

martedì 7 novembre 2017

11:10

Viste

Ulteriori astrazione del livello logico, permettono di vedere dati nel livello logico oppure campi

calcolati a partire dalle informazioni del livello logico

• Relazione virtuale (contenuto definito tramite interrogazione SQL)

• Contenuto non memorizzato fisicamente nella base di dati (non continene tuple)

• Può essere usata come una relazione

• Interrogazione valutata ogni volta

• Meccanismo delle viste è utile per

• Semplificare accesso dati

• Fornire indipendenza logica

• Garantire la protezione dei dati

Comando Viste:

Creazione viste:

CREATE VIEW <nome vista> [(<lista nomi colonne>)]

AS <interrogazione>

[WITH [{LOCAL | CASCADED }] CHECK OPTION];

Cancellazione di vista:

DROP VIEW <nome vista>;

Su una vista si possono eseguire sia interrogazioni che aggiornamenti sotto condizioni.

L'interrogazione può contenere operazioni di join e fare uso di funzioni di gruppo e espressioni

Ad esempio è possibile su una vista

• Effettuare proiezioni

• Specificare condizioni di ricerca

• Effetture join con altre relazioni

• Effettuare raggruppamenti

• Definire viste

Check Option

Una vista può contenere una condizione sul contenuto delle tuple, quindi solamente le tuple che

soddisfano questa condizione appartengono alla vista.

Per assicurarsi che le tuple inserite siano accettate solo se verificano la condizione si usa la

clausola CHECK OPTION

Nel caso in cui siamo in presenza di viste di altre viste si complica perché entrambe possono

essere definite con CHECK OPTION, quindi si utilizzano due alternative:

• LOCAL: verifica solo la query di definizione della vista in oggetto

• CASCADED: verifica ricorsivamente tutte le query delle viste coinvolte

10 - Sviluppo di Applicazioni per Basi di Dati

martedì 14 novembre 2017

11:07

Estensione linguaggi di Programmazione

Integrazione di due linguaggi

o: SQL e un linguaggio generico

• Impedance mismatch dovuto alle differenze tra i due linguaggi

Due differenze principali:

• Differenze nei tipo di dato: necessità di binding tra i tipo di dati (varchar SQL - String Java)

• Differenze nelle modalità di elaborazione del risultato- (set oriented SQL - tuple oriented ..)

Flusso di Esecuzione

Qualunque approccio sia scelto il programma deve eseguire i seguenti passi:

1. Connessione alla base di dati

a. Bisogna aprire la connessione col DBMS

b. Nelle estensioni di SQL la connessione è già implicitamente aperta

c. Nelle altre soluzioni bisogna specificare il server

2. Esecuzione dei comandi SQL

3. Chiusura della connessione

a. Bisogna chiudere la connessione col DBMS

b. Chiudere la connessione da la possibilità ad altre app di accedere al DBMS

c. Terminazione di un'applicazione comporta la chiusura delle connessioni aperte

Esecuzione di Comandi SQL

Per ogni comando ci sono 3 passi:

• Preparazione del comando: genera strutture dati per comunicazione, compilazione e

ottimizzazzione del comando

• Esecuzione del comando: comando eseguito utilizzando struttura dati e informazioni

generate nella fase precedente

• Manipolazione del comando: risultato del comando viene manipolato secondo la logica

dell'applicazione

Il risultato di un comando è:

• Insieme di tuple per le interrogazioni

• Un valore numerico per comandi del DDL

Cursore

• Puntatore ad una tupla contenuta nel risultato di un'interrogazione

• Associato alla valutazione di un'interrogazione

• I valori sulla tupla puntata dal cursore possono essere letti ed inseriti in una struttura dati

• Operazioni sui cursori

• Dichiarazione: associa cursore ad interrogazione

• Apertura: esegue interrogazione associata al cursore e analizza

• Posizionamento: sposta il cursore sulla tupla successiva o precedente

• Chiusura: disabilita il cursore

SQL Statico

Istruzioni di SQL da eseguire sono note durante la scrittura dell'applicazione:

• Nota la definizione di ogni istruzione SQL

• Istruzioni possono contenere variabili

• Valore delle variabili è noto solo durante l'esecuzione dell'istruzione SQL

Vantaggi:

• Nota a priori la struttura delle interrogazioni

• Rende possibile l'ottimizzazione delle istruzioni

• Ottimizzatore del DBMS

• Compila l'istruzione

• Crea il piano di esecuzione

• Esecuzione più efficiente

SQL Dinamico

Uso di comandi SQL noti solo a tempo di esecuzione

• Comportano maggiori problemi in termini di ottimizzazione, compliazione, esecuzione

• Questo comando può essere preparato solo durante l'esecuzione del programma, con un

aumento del tempo

LIBRERIE DI FUNZIONI

Librerie di Funzioni

Accesso alla base di dati avviene tramite un'interfaccia chiamata Call Level Interface (CLI), ogni

CLI è una libreria per uno specifico linguaggio.

SQL prevede di standard SQL/CLI

I comandi SQL sono inviati al DBMS per mezzo di funzioni al linguaggio ospite, il quale contiene la

chiamate alle funzoni messe a disposizione

Modo d'uso

Esiste una strutturazione comune dell'interazione con il DBMS

• Apertura della connessione col DBMS e DB

• Esecuzione di istruzioni SQL

• Chiusura della connessione

JDBC

JDBC è una CLI Java Standard per interagire con basi di dati da Java, permette di ottenere una

soluzione per l'interazione col DBMS.

• La portabilità a livello di eseguibile è ottenuta attraverso driver (programma che traduce

tutte le chiamate JDBC in chiamate per un DBMS)

DBMS

Il DBMS rimane inalterato nel suo funzionamento, riceve sempre e solo richieste nel linguaggio

supportato ed esegue il comando SQL ricevuto dal driver e invia i risultati all'applicazione.

Driver Manager

Classe che gestisce la comunicazione tra applicazione e driver.

Risolve le problematiche comuni a tutte le app:

• Quale driver caricare, basandosi sulle info fornite dall'app

• Caricamento driver

• Chiamate alle funzioni dei driver

L'applicazione interagisce solo con il driver manager

Applicazione

Un'applicazione è un programma che chiama specifiche funzioni JDBC per accedere ai dati gestiti

da un DBMS

Il flusso tipico di una applicazione è:

1. Caricamento driver

a. Primo passo consiste nel caricare driver che si intende utilizzare

b. Ogni driver = classe Java

c. Nome della classe viene fornita con la documentazione relativa al driver

1. Selezione sorgente dati e connessione

a. Specificare DBMS e la base di dati del DBMS a cui si vuole connettere

b. Possibile connettersi a qualunque base di dati specificando la stringa di locazione

c. Sessione inizia con la creazione di un oggetto connection

d. Connessione avviene usando il metodo getConnection

e. Se uno dei driver caricati riconosce la stringa di locazione inizia la connessione

f. Connessione si può terminare con il metodo close

1. Invio statement SQL

Identificatori definiti nella classe java.sql.Types (specificano corrispondenze tra tipo sql

e tipi Java)

Statement stmt = con.createStatement()

Prima di assegnare a stmt un'istruzione, necessario distinguere tra comandi che

rappresentano query e comandi di aggiornametno

Per eseguire query, stmt.executeQuery("SELECT … FROM …");

Per eseguire aggiornamenti, stmt.executeUpdate("INSERT …");

Se non si conosce tipo, stmt.execute("comando");

Se struttura statement SQL è statica, meglio utilizzare classe PreparedStatement

PreparedStatement queryPstmt = con.prepareStatement("SELECT …");

Direttamente in fase di definizione

queryPstmt.executeQuery();

queryPstmt.executeUpdate();

Esecuzione

Utilizzo parametri: stabilire valore in fase di esecuzione (es. lasciare decidere

utente)

PreparedStatement queryParStmt = con.prepareStatement("SELECT … WHERE

genere = ?")

Utilizzo metodi setXXX, con XXX tipo Java, per settare valori a parametri

queryParstmt.setString(1,'thriller'), dove 1 indica il numero del parametro

1. Recupero risultati e elaborazione

a. Puntare tuple del risultato una alla volta e salvarla in variabili del programma

ResultSet rs

While (rs.next()) {…}

a. Utilizzo metodi getXXX, con XXX tipo Java, per recuperare valore associato a

attributo della tupla

String s = rs.getString("Cognome")

String s = rs.getString(2), che utilizza notazione posizionale

1. Disconessione

a. Utilizzo metodi close()

Esempio:

Statement selStmt = con.createStatement();

String stmt = " SELECT titolo, regista

FROM Film

WHERE genere = 'thriller' ";

ResultSet reStmt = selStmt.executeQuery(stmt);

While(rsStmt.next()){

System.out.println(reStmt.getString("titolo"));

System.out.println(reStmt.getString("regista"));

}

Metodi per gestione eccezioni:

• getErrorCode()

• getMessage()

Embedded SQL (Ospitato)

Linguaggio è chiamato ospite

Comandi SQL direttamente inseriti in programmi

• Utilizzo estensione del linguaggio per scrivere comandi

• Facilità di programmazione, ma non tutto codice scritto con stesso linguaggio

Ogni istruzione deve essere chiaramente identificabile nel programma

• Aggiunta di prefisso (#, EXEC SQL, …) e terminatore (';', …)

Esecuzione programmi avviene in tre passi

• Pre-compilazione

Precompilatore elimina statement sql, sostituendoli con chiamate a CLI del DBMS

o Risultato è programma scritto completamente in linguaggio ospite

o

• Compilazione

Programma precompilato viene compilato come programma normale

o

• Esecuzione

Estensioni procedurali

Aggiungono a SQL costrutti di programmazione imperativa

• Costrutti di scelta, salti incondizionati, …

Soluzione server side: è DB

• Svantaggi: poco potere espressivo, poca portabilità

Stored procedure è funzione definita all'interno di DBMS

• Fa parte dello schema logico

• Può contenere sia codice applicativo che codice SQL

• Linguaggio è estensione procedurale di SQL

PL/SQL è linguaggio con struttura a blocchi (unità minima è blocco)

Ogni blocco è composto da tre componenti:

Parte di dichiarazione

Facilitare interazione tra DB e codice

Variabili possono avere qualsiasi tipo di SQL

Si possono dichiarare costanti, variabili

Possibilità di specificare variabile con stesso tipo di altra variabile o avente come tipo

l'attributo di una tabella

Possibilità di specificare che attributo rappresenta record

Insieme di componenti, uno per ogni attributo della tabella

Parte degli statement

Parte per gestione di eccezioni

Creare stored procedure

CREATE PROCEDURE nomeSP [parametri]

3 SOLUZIONI

• JDBC Vantaggi:

o • Portabilità

• Utilizzo di java come unico paradigma

Svantaggi:

o • Performance

• Minor facilità di programmazione

• Embedded SQL

Vantaggi:

o • Portabilità

• Facilità di programmazione

Svantaggi:

o • Performance

• Minor facilità di programmazione rispetto a estensioni proc a SQL

• Estensioni Procedurale di SQL

Vantaggi:

o • Facilità di programmazione

• Performance

• Gestione eccezioni DBMS


PAGINE

27

PESO

193.30 KB

AUTORE

biuzzo

PUBBLICATO

9 mesi fa


DETTAGLI
Esame: Basi di dati
Corso di laurea: Corso di laurea in informatica
SSD:
A.A.: 2018-2019

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher biuzzo di informazioni apprese con la frequenza delle lezioni di Basi di dati e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Insubria Como Varese - Uninsubria o del prof Ferrari Elena.

Acquista con carta o conto PayPal

Scarica il file tutte le volte che vuoi

Paga con un conto PayPal per usufruire della garanzia Soddisfatto o rimborsato

Recensioni
Ti è piaciuto questo appunto? Valutalo!

Altri appunti di Basi di dati

Basi di Dati - Domande e Risposte
Esercitazione
Basi di dati - controllo dell'accesso in SQL standard
Appunto
Basi di dati - linguaggio di Query
Appunto
Basi di dati - modello Relazionale
Appunto