Viste come strumenti di programmazione

Documenti analoghi
Viste (relazioni derivate)

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

Equivalenza di espressioni. Equivalenze. Equivalenze. Due espressioni sono equivalenti se: Atomizzazione delle selezioni σ F1 F2 (E) σ F1 (σ F2 (E))

Tipi numerici esatti Valori interi o con parte decimale di lunghezza prefissata

Algebra con valori nulli

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

Corso di Basi di Dati

SQL. Lezione 1. Docente: Alberto Belussi

Laboratorio di Basi di Dati

Stringhe di caratteri

SQL Matteo Magnani, Danilo Montesi Università di Bologna SQL. Linguaggio di interrogazione per basi di dati relazionali

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL

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

SQL-DDL. Basi di Dati. Prof. Alfredo Cuzzocrea Università degli Studi di Trieste

SQL. Dott.ssa Elisa Quintarelli

Principi di Progettazione del Software a.a Il linguaggio SQL. Prof. Luca Mainetti Università del Salento

Principi di Progettazione del Software a.a Il linguaggio SQL. Linguaggi per DBMS

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

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

Interrogazioni (Query) Esempi. Esempi. Esempi

Definizione di domini

Equivalenze di espressioni. Equivalenze. Equivalenze. Atomizzazione delle selezioni ( F 2 (E)) Idempotenza delle proiezioni

Basi di Dati. Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio. Corso di Laurea in Informatica. a.a

Laboratorio di Basi di Dati Per Bioinformatica

Laboratorio di Basi di Dati e Multimedia

Basi di dati SQL. Standardizzazione di SQL. Linguaggi di Interrogazione: SQL. Prof.Angela Bonifati

SQL: "storia" 31/05/2006 2

Appunti dalle lezioni. Sistemi informativi e basi di dati. Il modello relazionale. SQL come DCL Utilizzo di un DBMS Reale.

Linguaggio SQL: fondamenti D B M G

D B M G. Linguaggio SQL: fondamenti. Gestione delle tabelle

Laboratorio di Basi di Dati

Laboratorio di Basi di Dati e Multimedia

Domini elementari, 2. Basi di dati. Domini elementari, 4. Domini elementari, 3. Domini definiti dagli utenti. Domini elementari, 5

Introduzione Basi di Dati. Orazio Battaglia

Elena Baralis 2007 Politecnico di Torino 1

Creazione di una tabella Modifica della struttura di una tabella Cancellazione di una tabella Dizionario dei dati Integrità dei dati

Basi di Dati e Sistemi Informativi. Structured Query Language

Laboratorio di Basi di Dati

Laboratorio di Basi di Dati e Web

Elena Baralis 2007 Politecnico di Torino 1

Basi di dati - Laboratorio

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, ALGEBRA E CALCOLO RELAZIONALE

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

Corso di Informatica (Basi di Dati)

Elena Baralis 2007 Politecnico di Torino D B M G M BG. Gestione delle tabelle. Linguaggio SQL: fondamenti. Creazione di una tabella (1/3)

Dichiarazione degli schemi in SQL DDL 1

SQL. Storia un po piu in dettaglio. SQL: "storia" Tre livelli per SQL-2. Standard, dialetti, mercato

Il linguaggio SQL: DDL di base

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

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

Il linguaggio SQL. Il linguaggio SQL

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini

Proiezione. Proiezione. Join. Operatore monadico Produce un risultato che

Modello Relazionale. Concetti e definizioni

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

DDL DML. Tipi di linguaggi per basi di dati. Si distinguono due categorie:

Structured Query Language

SQL. SQL (Structured Query Language) è un linguaggio di interrogazione per basi di dati relazionali

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"

Linguaggio SQL: fondamenti D B M G. Gestione delle tabelle

Basi di Dati prof. Letizia Tanca

Modello Relazionale. Esempio (Relazione) A x B. Introduzione. Relazione: definizione. I fattori del successo. Relazione

Sistemi di Elaborazione delle Informazioni

SQL. Storia e standard

Basi di Dati. Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio. Corso di Laurea in Informatica. a.a

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

Linguaggi per basi di dati

Linguaggi per basi di dati e SQL

Linguaggi per basi di dati. Linguaggi per basi di dati e SQL. Linguaggi di interrogazione per basi di dati relazionali. Linguaggi di interrogazione

Gestione delle tabelle

Dichiarativi : specificano le proprietà del risultato ("che cosa") Procedurali specificano le modalità di generazione del risultato ("come")

Scopo. Informatica. Sistema informativo. Sistema informatico

Corso di Informatica

Basi di Dati Relazionali

SQL Laboratorio di Basi di Dati a.a. 2002/2003

Modulo 2 Data Base 3

Uno dei principali motivi del successo delle basi di dati: è diventato uno standard

SQL. SQL: una visione panoramica. SQL: "storia" Definizione dei dati

Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati

Basi di dati e Relazioni

Modulo 10: Basi di dati e loro gestione

Lezione 2. Modello relazionale: concetti e definizioni

SQL Sintassi Dei Comandi

Corso di. Basi di Dati I. 7. Esercitazioni in SQL: Definizione e manipolazione dei dati

Scopo Laboratorio di Informatica

SQL: Concetti Base -Prima Parte-

PRODOTTO CARTESIANO Caso Generale

5 SQL : Definizione e manipolazione dei dati

Il linguaggio SQL Introduzione e costrutti di interrogazione.

Il theta-join, espresso come prodotto cartesiano seguito da una selezione, è il tipo di join operativamente più generale. Infatti:

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"

Vincoli di Integrità Referenziale

SQL. SQL come Data Manipulation Language - Inserimento, cancellazione e aggiornamento di righe

Corso di. Basi di Dati I. 7. Esercitazioni in SQL: Definizione e manipolazione dei dati

Interpretazione delle query nidificate

Transcript:

Viste come strumenti di programmazione Trovare gli impiegati che hanno lo stesso capo di Rossi Senza vista: PROJ Impiegato ((Afferenza JOIN Direzione) JOIN REN ImpR,RepR Impiegato,Reparto ( SEL Impiegato='Rossi' (Afferenza JOIN Direzione))) Con la vista: PROJ Impiegato ((Supervisione) JOIN REN ImpR,RepR Impiegato,Reparto ( SEL Impiegato='Rossi' (Supervisione))) NB In questo esempio, rispetto al precedente, Supervisione(Impiegato,Reparto, Capo) = Afferenza JOIN Direzione (senza proiezione) quindi contiene anche l attributo Reparto!

Viste e aggiornamenti Afferenza Direzione Impiegato Reparto Reparto Capo Rossi A A Mori Neri B B Bruni Verdi A B C Bruni Supervisione Impiegato Rossi Neri Verdi Capo Mori Bruni Mori Vogliamo inserire, nella vista, il fatto che Lupi ha come capo Bruni; oppure che Belli ha come capo Falchi; come facciamo?

Viste (relazioni derivate) "Aggiornare una vista": modificare le relazioni di base in modo che la vista, "ricalcolata, rispecchi l'aggiornamento L'aggiornamento sulle relazioni di base corrispondente a quello sulla vista deve essere univoco In generale però non è univoco! Sulle viste sono ammissibili pochissimi aggiornamenti

Esercizi Trovare nome e stipendio dei capi degli impiegati che guadagnano più di 40 milioni Trovare gli impiegati che guadagnano più del proprio capo, mostrando matricola, nome e stipendio dell'impiegato e del capo Trovare le matricole dei capi i cui impiegati guadagnano tutti più di 40 milioni (suggerimento: usare gli operatori insiemistici)

SQL SQL (pronunciato anche come l inglese sequel): acronimo di Structured Query Language (linguaggio di interrogazione strutturato) Linguaggio completo che presenta anche proprietà di: DDL (Data Definition Language) DML (Data Manipulation Language) Con SQL è quindi possibile: definire schemi di basi di dati eseguire query modificare il contenuto della base di dati

Definizione dei dati Esistono 6 domini elementari: Character Bit Tipi numerici esatti Tipi numerici approssimati Data e ora Intervalli temporali

Domini Character rappresenta singoli caratteri o stringhe character [varying] [(Lunghezza)] [character set NomeFamigliaCaratteri] character(20) stringa di lunghezza 20 character varying(100) stringa di lunghezza max. 100 character(20) character set Greek stringa di lunghezza 20 in caratteri greci

Domini Bit rappresenta attributi o vettori di attributi che possono assumere solo valori 0 o 1. Utilizzato per implementare flag. bit [varying] [(Lunghezza)] Intervalli Temporali interval UnitàDiTempo1[(Precisione)] [to UnitàDiTempo2[(Precisione)]] UnitàDiTempo1 e UnitàDiTempo2 specificano le unità di misura da usare dalla più lunga alla meno lunga NB Definizione valida nei 2 sottointervalli [year,month] e [day,second]. interval day(4) to second(6) rappresenta l intervallo [0,10000) giorni e secondi con precisione al milionesimo di s.

Domini Tipi numerici esatti Valori interi o con parte decimale di lunghezza prefissata numeric [(Precisione [,Scala])] decimal [(Precisione [,Scala])] integer smallint Precisione specifica il numero di cifre significative Scala quante cifre si rappresentano dopo la virgola decimal(4) numeri da -9999 a 9999 numeric(6,3) numeri da -999.999 a 999.999 La precisione degli interi dipende dall implementazione

Domini Tipi numerici approssimati rappresentano valori reali approssimati float [(Precisione)] double precision real Precisione specifica il numero di cifre dedicato alla mantissa (la precisione dell esponente dipende dall implementazione) real e double precision hanno precisione prestabilita, una doppia rispetto all altra.

Domini Data e ora tipi utilizzati per rappresentare istanti di tempo date time [(Precisione)][with time zone] timestamp [(Precisione)][with time zone] Ciascun tipo è divisibile in campi. date ammette come campi year, month e day time i campi hour, minute, second timestamp tutti i campi da year a second I campi sono divisi da : 20:03:04+1:00

Definizione di domini Come nei linguaggi ad alto livello (es. C) è possibile definire nuovi domini (tipi di dati) a partire da quelli predefiniti, anche se il costruttore è più limitato. create domain NomeDominio as TipodiDato [ValDefault] [Vincolo] Non si possono creare array o strutture poiché il modello relazionale impone che gli attributi siano definiti su un dominio elementare. E però possibile associare dei vincoli ad un dominio definito dall utente. Se si modifica la definizione di un dominio, la modifica si propaga a tutte le tabelle.

Definizione di domini: esempio CREATE DOMAIN Voto AS SMALLINT DEFAULT NULL CHECK ( value >=18 AND value <= 30 )

Definizione di schemi E possibile definire uno schema di base di dati come collezione di oggetti. create schema[nomeschema] [[authorization] Autorizzazione]] {DefElementoSchema} Autorizzazione rappresenta il nome dell utente proprietario dello schema NB In MySQL sintassi diversa per le opzioni

Definizione di tabelle Una tabella SQL è costituita da una collezione ordinata di attributi e da un insieme di vincoli create table NomeTabella ( NomeAttributo Dominio [default ValDefault] [Vincoli] {,NomeAttributo Dominio [default ValDefault] [Vincoli]} [AltriVincoli] ) Una tabella è inizialmente vuota e chi la crea possiede tutti i diritti su di essa

Definizione di tabelle Esempio create table Dipartimento ( Nome char(20) primary key, Indirizzo char(50), Città char(20) )

Valori di default Si possono specificare valori di default per un attributo quando, al momento della creazione di una nuova tupla, in un campo non viene inserito alcun valore. default < GenericoValore user null > GenericoValore è un valore compatibile col dominio user è il nome dell utente che aggiorna la tabella null corrisponde al valore di default di base

Valori di default Un nuovo default (es. nella definizione di un tipo a partire da un altro) sostituisce il precedente Nota: è per questo che, anche se, in mancanza di una istruzione di set default, a qualsiasi attributo non istanziato viene assegnato come default il valore null, è ugualmente previsto il comando set default null (di fatto, quindi, per resettare a null un precedente diverso default). Es. NumeroFigli smallint default 0 impone il valore 0 quando non viene specificato il valore dell attributo.

Vincoli intrarelazionali I più semplici vincoli intrarelazionali predefiniti sono: not null indica che il valore nullo non è ammesso su uno specifico attributo. Si impone che sia inserito in ogni caso un valore, salvo che non sia già definito un valore di default. SQL non distingue i diversi tipi di valore nullo. Se è necessario, bisogna definire opportuni domini.

Vincoli intrarelazionali unique(attributo {, Attributo}) indica che l insieme di attributi deve essere una superchiave per la tabella. primary key(attributo {, Attributo}) definisce la chiave primaria. Può (e deve) essere definita una sola chiave primaria per ogni tabella. Tutti gli attributi della chiave primaria sono automaticamente not null.

Vincoli intrarelazionali Nome character(20) not null, Cognome character(20) not null, unique (Nome, Cognome) impone che non esistano due tuple in cui sia i valori di Nome che di Cognome siano uguali Nome character(20) not null unique, Cognome character(20) not null unique impone che non esistano due tuple che abbiano uguali valori di Nome o di Cognome

Vincoli interrelazionali Vincoli di integrità referenziale Il vincolo di foreign key (chiave esterna) collega i valori di un insieme di attributi della tabella corrente (tabella interna) a un insieme di attributi di un altra tabella (tabella esterna). Per ogni tupla della tabella interna i valori della chiave esterna devono essere presenti nei corrispondenti attributi della tabella esterna. L insieme di attributi esterni deve essere unique. Se la chiave esterna consiste in un unico attributo si usa la clausola references(attribtabext)nella riga in cui è definito; altrimenti foreign key(listaattributi)

Vincoli interrelazionali create table Impiegato ( Matricola character(6) primary key, Nome character(20) not null, Cognome character(20) not null, Dipart character(15) references Dipartimento(NomeDip), Stipendio numeric(9) default 0, ) unique (Cognome, Nome), foreign key(nome, Cognome) references Anagrafica(Nome,Cognome)