SQL e linguaggi di programmazione. Cursori. Cursori. L interazione con l ambiente SQL può avvenire in 3 modi:

Documenti analoghi
Basi di Dati Concetti Introduttivi

Fondamenti di Teoria delle Basi di Dati

DBMS. Affidabilità. Privatezza dei dati. Efficienza. Efficacia. Un DBMS deve garantire:

Elena Baralis 2007 Politecnico di Torino 1

Progettazione di basi di dati

Metodologie e modelli di progetto

Basi di Dati. Concetti e Principi Generali. Maria Mirto

CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Sommario. Introduzione... 13

Introduzione alle Basi di Dati

DOCENTE PROF. ALBERTO BELUSSI. Anno accademico 2010/11

INTRODUZIONE ALLA PROGETTAZIONE. Patrizio Dazzi a.a

MODELLI DEI DATI. Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia

Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia. Università degli Studi di Salerno

Basi di dati D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2012/13

SISTEMI INFORMATIVI TERRITORIALI DATABASES -LEZIONE 3

Le basi di dati. Definizione 1. Lezione 2. Bisogna garantire. Definizione 2 DBMS. Differenza

Ministero della Pubblica Istruzione Ufficio Scolastico Regionale per la Sicilia Direzione Generale

Basi di dati. Elena Baralis Politecnico di Torino

Elementi di Informatica LB Basi di Dati. Anno accademico 2007/2008 Prof. Stefano Contadini

Pag Politecnico di Torino 1

Informatica. Dipartimento di Economia. Ing. Cristiano Gregnanin. 20 ottobre Corso di laurea in Economia

2011 Politecnico di Torino 1

Ciclo di vita di un sistema informativo

SQL e linguaggi di programmazione Applicazioni ed SQL: architettura

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati

PROGRAMMAZIONE INFORMATICA SECONDO BIENNIO. Liceo Scientifico opzione Scienze Applicate

Corso di Laurea in Informatica Basi di Dati a.a

LE BASI DI DATI. Prima parte Premesse introduttive I MODELLI DEI DATI

Modello Entità - Relazione. Basi di dati. Elena Baralis 2007 Politecnico di Torino D B M G D B M G2 D B M G4 D B M G6. Progettazione di basi di dati

D B M G D B M G 2. Sistemi informativi. Progettazione di basi di dati

ARCHITETTURA DI UN DBMS

LA PROGETTAZIONE DELLA BASE DI DATI. la progettazione della base di dati 1

Progettazione di basi di dati

Introduzione Concetti Generali Pratica su Access Link utili. ECDL - Database. European Computer Driving Licence - Modulo 5 - Database LEZIONE 1

Esercitazione seconda prova Esame di Stato Prova di Informatica Gestionale ITC Programmatori e Mercurio. Note introduttive

Basi di Dati: Corso di laboratorio

Elena Baralis 2007 Politecnico di Torino 1

Informatica per le Scienze Umane. Introduzione al corso: programma

Corso di Informatica. Software di produttività personale e database. Ing Pasquale Rota

Basi di dati attive. Una base di dati è ATTIVA quando consente la definizione e la gestione di regole di produzione (regole attive o trigger).

Librerie digitali. Uso di XML per memorizzare i metadati. Descrizione generale. XML per memorizzare i metadati. Motivi dell uso di XML

Interrogazioni nidificate

Corso di Laurea in Informatica Basi di Dati a.a

Trigger. Basi di dati attive. Trigger: regole che specificano azioni attivate automaticamente dal DBMS al verificarsi di determinati eventi

REGIONE BASILICATA UFFICIO S. I. R. S.

Informatica per le Scienze Umane. Introduzione al corso: programma dettagliato

INFORMATICA GENERALE Prof. Alberto Postiglione Scienze della Comunicazione

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor

PROGRAMMAZIONE. INFORMATICA SECONDO BIENNIO Opzione Scienze Applicate

Basi di dati. Giuseppe De Giacomo. Dipartimento di Informatica e Sistemistica Antonio Ruberti SAPIENZA Università di Roma

I DATI E LA LORO INTEGRAZIONE 63 4/001.0

Laboratorio di Basi di Dati

Basi di dati attive. Paolo Atzeni Stefano Ceri. Basi di dati attive

Che cos è l informatica?

Informatica per l Ambiente e il Territorio

PROGRAMMAZIONE DISCIPLINARE DIPARTIMENTALEDI INFORMATICA

Interrogazioni nidificate

Linguaggi, Traduttori e le Basi della Programmazione

Corso di Ingegneria del Software. Modelli di produzione del software

Il linguaggio di programmazione Python

Corso di Basi di Dati/Laboratorio di Basi di Dati

Componenti di un DBMS

Basi di Dati: Corso di laboratorio

Strategie top-down. Primitive di trasformazione top-down. Primitive di trasformazione top-down

Viene richiesto di MIN CARD(S,E) = 1 UPDATE DELETE MAX CARD(S,E) = 3 INSERT UPDATE

SISTEMI INFORMATIVI E DATABASE

cap.6 del testo a cosa servono i tipi nei linguaggi di programmazione cos è un linguaggio type safe

SQL. SQL: "storia. Sviluppato nella metà degli anni settanta (1974) presso il laboratorio di ricerca IBM di S.Josè. Dal 1983 ca. "standard di fatto"

Algebra Relazionale. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

Sistema azienda. Sistema azienda (o sistema della organizzazione) uno o più obiettivi, o fini istituzionali

Basi di dati Introduzione

Esercitazione 4: Trigger in DB2

Basi di dati Basi di dati per bioinformatica

CURRICOLO DIPARTIMENTO INFORMATICA PRIMO BIENNIO

Linguaggi e Ambienti di Programmazione

La gestione delle interrogazioni

Programma Master Programmatore Java

Perché il linguaggio C?

JDBC. Marco Tessarotto Programmazione dei Web Server Anno Accademico

Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2

Caratteristiche dei linguaggi per Database

Informatica Industriale Modello funzionale: Informazione Modello Entità-Relazione

Corso di Laurea Specialistica in Ingegneria Informatica. Corso di Ingegneria del Software A. A Introduzione ad UML E.

SQL - Sottointerrogazioni

Informatica di Base - 6 c.f.u.

BASI DI DATI. Titolo Prof. Cognome Nome Indirizzo Numero Telefono

INFORMATICA PER LE SCIENZE UMANE a.a. 2016/2017

Le basi di dati. Le basi di dati. dalla teoria all'utilizzo di tutti i giorni. Alessandro Tanasi

Basi di dati Modelli e linguaggi di interrogazione

Basi di dati. Progettazione di basi di dati: Metodologie e modelli

Servlet & JDBC. Alberto Belussi. anno accademico 2008/2009

Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2011/2012. Basi di dati

Corso di Laurea in Ingegneria Informatica Fondamenti di Informatica II Modulo Basi di dati a.a

Servlet & JDBC ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010. Servlet: interazione con un DBMS. In Java è possibile interagire con un DBMS attraverso

Capitolo 5. Soluzione: Soluzione in C:

Corso di Basi di Dati

Corso di Basi di Dati

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL: fondamenti. Il linguaggio SQL

Transcript:

SQL e linguaggi di programmazione L interazione con l ambiente SQL può avvenire in 3 modi: in modo interattivo col server attraverso interfacce o linguaggi ad hoc legati a particolari DBMS attraverso i normali linguaggi di programmazione In quest ultimo caso è necessario che un preprocessore si occupi di riconoscere in un sorgente il codice SQL e lo trasformi in codice del linguaggio che si sta usando. Uno dei problemi che sorgono è il fatto che SQL sia orientato agli insiemi mentre i linguaggi di programmazione, ad eccezione di alcuni linguaggi ad oggetti, possono essere soltanto orientati alle tuple. Le tuple dovranno quindi essere scandite una per una per eseguire un comando SQL. Si può ovviare a questo o con linguaggi ad oggetti che supportino operazioni evolute sugli insiemi o mediante i cursori. Cursori I cursori estendono SQL in modo tale da fornire la possibilità ad un programma di accedere alle tabelle una riga alla volta. Hanno un comportamento simile ai puntatori a file. declare NomeCursore [scroll] cursor for SelectSQL [for < read only update [ of Attributo {, Attributo } ] > ] associa un cursore ad una interrogazione. scroll indica se il programma può spostarsi liberamente nell interrogazione for [read only update] specifica se il cursore deve essere usato in un comando di modifica o in sola lettura. Cursori open NomeCursore attiva l interrogazione cui è collegato il cursore e permette di accedere al risultato tramite il comando fetch [ Posizione from ] NomeCursore into ListadiFetch che prende una riga dal cursore e la ripone nelle variabili della ListadiFetch. La corrispondenza fra attributi e variabili è per posizione. Quando si parla di riga corrente si intende l ultima riga letta. Posizione può assumere i valori: next (il cursore legge la riga successiva alla corrente) prior (la precedente) first (la prima) last (l ultima) absolute EsprIntera (la i-esima, i è il risultato dell espressione) relative EsprIntera (la i-esima rispetto alla corrente) 1

Cursori Le opzioni di posizione viste possono essere usate solo se è stata specificata l opzione scroll. Altrimenti solo next. In quel caso l implementazione è più efficiente. update e delete possono usare i cursori. update NomeTabella set Attributo = < Espressione null default > {, Attributo = < Espressione null default > } where current of NomeCursore delete from NomeTabella where current of NomeCursore close NomeCursore chiude il cursore e libera la memoria dalla copia del risultato della query cui è collegato. Se la query restituisce solo una riga si può evitare il cursore e usare select ListaAttributi into ListaVariabili SQL dinamico In molti casi è necessario formulare interrogazioni arbitrarie, non solo parametrizzabili, ma anche dipendenti ad esempio dallo stato dell esecuzione di un programma. Le interrogazioni che si possono formulare attraverso le istruzioni viste sinora sono di tipo statico, cioè scritte una volta per tutte. SQL dinamico consente di costruire interrogazioni al momento dell esecuzione di un programma. In SQL statico, i comandi vengono compilati una volta per tutte. Questo si traduce in elevata efficienza. In SQL dinamico, per ottimizzare l efficienza di un programma e mantenerla equivalente a quella di SQL statico, sono previste due modalità di esecuzione. SQL dinamico execute immediate IstruzioneSQL Questo comando provoca l esecuzione immediata dell istruzione e può quindi essere usato solo per comandi che non richiedono parametri in ingresso o in uscita. Es. istruzionesql= delete from Dipartimento where Nome = Amministrazione ; $ execute immediate :istruzionesql Se il comando viene eseguito più volte o se il programma deve gestire uno scambio di parametri bisogna distinguere 2 fasi: preparazione ed esecuzione. 2

SQL dinamico Fase di preparazione prepare NomeComando from IstruzioneSQL fa analizzare l istruzione e la fa tradurre nel linguaggio procedurale del sistema. Gli eventuali parametri sono sostituiti da? In pratica, definisce una funzione che sarà possibile chiamare dal linguaggio ad alto livello. prepare :comando from select Città from Dipartimento where Nome =? Quando non serve più l istruzione è possibile deallocare memoria la deallocate prepare NomeComando deallocate prepare :comando SQL dinamico Fase di esecuzione execute NomeComando [ into TargetList ] [ using ListaParametri ] La target list contiene le variabili in cui deve essere inserito il risultato dell esecuzione del comando. La lista dei parametri specifica i valori che devono essere assunti dai parametri della funzione. execute :comando into :citta using :dipartimento diventa, se :dipartimento assume il valore Produzione, select Città from Dipartimento where Nome = Produzione SQL dinamico e cursori I cursori vengono utilizzati come in SQL statico, con la sola differenza che si associa al cursore l identificativo dell interrogazione invece che l interrogazione stessa e che si possono usare using e into per specificare i valori dei parametri di ingresso e uscita. Es. prepare :comando from :istruzionesql declare Cursore cursor for :comando open Cursore using :nome1 3

Progettazione di una base di dati Ciclo di vita di un sistema informativo Studio di fattibilità definisce le varie alternative possibili, i relativi costi e le priorità di realizzazione. Raccolta e analisi dei requisiti individua proprietà e funzionalità del sistema tramite interazione con gli utenti e definizione informale dei dati e delle operazioni. Progettazione divisa in progettazione dei dati e progettazione delle applicazioni. Individua struttura e organizzazione dei dati e caratteristiche degli applicativi che vi dovranno accedere. Implementazione realizza la base di dati e il codice dei programmi conformemente alle specifiche Validazione e collaudo verifica il corretto funzionamento del sistema informativo Funzionamento il sistema informativo diviene operativo Metodologia di progettazione Una metodologia di progettazione di una base di dati consiste in: decomposizione del progetto in più passi strategie realizzative e criteri di scelta di alternative modelli di riferimento per descrivere dati di ingresso e uscita delle varie fasi e può essere valutata in base alle proprietà: generalità: per garantire la possibilità di utilizzare la metodologia indipendentemente dal problema affrontato qualità del prodotto (correttezza, completezza, efficienza) facilità d uso di strategie e modelli di riferimento Fasi della progettazione Progettazione concettuale rappresenta le specifiche informali in modo formale e completo, ma indipendente dalla rappresentazione usata nei DBMS. Produce lo schema concettuale e fa riferimento ad un modello concettuale dei dati. Rappresenta il contenuto informativo e non la codifica. Progettazione logica traduce lo schema concettuale nello schema logico basato su un modello logico (es. modello relazionale) ancora indipendente dalla realizzazione fisica della base di dati. Progettazione fisica completa lo schema logico con la specifica dei parametri fisici di memorizzazione dei dati. Produce uno schema fisico e fa riferimento ad un modello fisico dei dati, dipendente dal DBMS. 4

Modello dei dati insieme di costrutti utilizzati per organizzare i dati di interesse e descriverne la dinamica componente fondamentale: meccanismi di strutturazione (o costruttori di tipo) come nei linguaggi di programmazione esistono meccanismi che permettono di definire tipi di dati, così ogni modello dei dati prevede alcuni costruttori ad esempio, il modello relazionale prevede il costruttore relazione, che permette di definire insiemi di record omogenei Due tipi (principali) di modelli modelli logici: utilizzati nei DBMS esistenti per l organizzazione dei dati utilizzati dai programmi indipendenti dalle strutture fisiche esempi: relazionale, reticolare, gerarchico, a oggetti modelli concettuali: permettono di rappresentare i dati in modo indipendente da ogni sistema e dal modello logico su cui è basato cercano di descrivere i concetti del mondo reale sono utilizzati nelle fasi preliminari di progettazione il più noto è il modello Entità-Relazione Modelli concettuali, perché? servono per ragionare sulla realtà di interesse, indipendentemente dagli aspetti realizzativi permettono di rappresentare le classi di dati di interesse e le loro correlazioni prevedono efficaci rappresentazioni grafiche (utili anche per documentazione e comunicazione) 5

Progettazione concettuale Progettazione logica Progettazione fisica 6