• Non ci sono risultati.

AOT AOT LAB LAB

N/A
N/A
Protected

Academic year: 2023

Condividi "AOT AOT LAB LAB"

Copied!
73
0
0

Testo completo

(1)

Agent and Object Technology Lab

Dipartimento di Ingegneria dell’Informazione Università degli Studi di Parma

AOT AOT LAB LAB

Fondamenti di Informatica Fondamenti di Informatica Fondamenti di Informatica Fondamenti di Informatica

Basi di dati

Michele Tomaiuolo

(2)

AOT AOT

LAB LAB

Sistema informativoSistema informativoSistema informativoSistema informativo

 Un sistema informativo è composto da un insieme di programmi concorrenti:

 Ogni programma opera su un certo insieme di dati

 Dei dati possono essere condivisi da alcuni programmi

 La più semplice soluzione è che ogni programma del sistema gestisca separatamente i suoi dati

 Un’altra soluzione è interporre tra i programmi e i dati un programma chiamato Data Base

Management System (DBMS) dedicato alla gestione dei dati

(3)

AOT AOT

LAB LAB

Gestione distinta dei datiGestione distinta dei datiGestione distinta dei datiGestione distinta dei dati

dati1 Dati2

Prog1

Prog2

Prog3

Dati4 Dati5 Dati6

Dati3

(4)

AOT AOT LAB LAB

 Problemi di ridondanza dei dati

 Esistono più copie di un dato

 Problemi di inconsistenza

 Copie dello stesso dato sono modificate diversamente

 Problemi di privatezza

 Dati riservati sono accessibili a persone non autorizzate

 Problemi di integrità

 Il valore di un dato è modificato a causa di una operazione incompleta o sbagliata

 Problemi di concorrenza

 L’accesso e l’aggiornamento ai dati da parte di programmi differenti non è sincronizzato

Limiti della gestione distinta Limiti della gestione distinta Limiti della gestione distinta Limiti della gestione distinta

(5)

AOT AOT

LAB LAB

Gestione condivisa dei datiGestione condivisa dei datiGestione condivisa dei datiGestione condivisa dei dati

Prog1 Prog2

Prog3

DBMS

Base di Dati

(6)

AOT AOT LAB LAB

 L’introduzione del DBMS comporta dei costi aggiuntivi in termini di investimento:

 Necessità di hardware aggiuntivo

 Necessità del DBMS

 L’introduzione del DBMS comporta dei costi aggiuntivi in termini di tempi di elaborazione:

 Uso di metodi di descrizione e manipolazione non specializzati per un particolare insieme di dati

 Gestione della sicurezza, integrità, concorrenza, back up e ripristino dei dati

Limiti della gestione condivisa Limiti della gestione condivisa Limiti della gestione condivisa Limiti della gestione condivisa

(7)

AOT AOT

LAB LAB

Vantaggi dellVantaggi dellVantaggi dellVantaggi dell’’’’uso di un DBMSuso di un DBMSuso di un DBMSuso di un DBMS

 Tutte le azioni sui dati vengono svolte dal DBMS:

 Si controlla la ridondanza sui dati

 Si controlla l’inconsistenza dei dati

 Si controlla l’integrità dei dati

 Si permette la condivisione dei dati

 Si gestisce l’accesso concorrente ai dati

(8)

AOT AOT

LAB LAB

Vantaggi dellVantaggi dellVantaggi dellVantaggi dell’’’’uso di un DBMSuso di un DBMSuso di un DBMSuso di un DBMS

 Inoltre un DBMS permette di:

 Imporre degli standard sul formato dei dati

 Gestire il back up e il ripristino dei dati

 Restringere l’accesso ai dati

 Fornire un insieme di interfacce utente

 Aumentare la flessibilità del sistema

 Ottimizzare l’uso delle risorse

(9)

AOT AOT

LAB LAB

Quando non usare un DBMSQuando non usare un DBMSQuando non usare un DBMSQuando non usare un DBMS

 Quando un programma usa un insieme di dati:

 Piccolo e ben definito

 Non cambia col passare del tempo

 Non è condiviso con altri programmi

 Quando un programma richiede delle prestazioni in tempo reale

(10)

AOT AOT

LAB LAB

Gestione dei Gestione dei clientiGestione dei Gestione dei clienticlienticlienti di una di una di una bancadi una bancabancabanca

 Si consideri una banca che deve gestire le

informazioni relative ai suoi dipendenti, ai suoi clienti e a i servizi offerti

 Gestire i conti esistenti (aggiungere/togliere denaro)

 Creare i nuovi conti

 Avere informazioni su un certo conto

 Generare estratti conto mensili

 Man mano che si manifestano nuove esigenze, può essere necessario modificare le applicazioni esistenti o disporre di nuovi programmi

 Ad esempio, se intervengono nuove disposizioni in materia bancaria, allora bisogna aggiornare il

sistema informativo

(11)

AOT AOT

LAB LAB

Gestione di Gestione di Gestione di Gestione di una universituna universituna universitàuna universitààà

 Si consideri un’università che deve gestire le informazioni relative ai suoi dipendenti, ai suoi studenti e a i servizi offerti

 Gestire il pagamento delle tasse di iscrizione

 Gestire i piani di studio degli studenti

 Generare documenti di attestazione

 Man mano che si manifestano nuove esigenze, può essere necessario modificare le applicazioni esistenti o disporre di nuovi programmi

 Ad esempio, se intervengono nuove disposizioni sul modo di conseguire una laurea, allora bisogna aggiornare il sistema informativo

(12)

AOT AOT

LAB LAB

Cosa Cosa Cosa Cosa èèè una base di datiè una base di datiuna base di datiuna base di dati

 Una base di dati è una collezione di dati logicamente coerenti con preciso significato

 Un assortimento casuale di dati non può essere indicato come una base di dati

 Una base di dati è disegnata, costruita ed utilizzata per gestire dati condivisi da un certo numero di utenti e/o applicazioni

 Una base di dati rappresenta degli aspetti del mondo reale

 I cambiamenti del mondo reale hanno riflesso sulla base di dati

(13)

AOT AOT

LAB LAB

Cosa Cosa Cosa Cosa èèèè un DBMSun DBMSun DBMSun DBMS

 Un Data Base Management System (DBMS) è un sistema software che:

 Si interpone fra le applicazioni e la memoria di massa dove si trovano le collezioni di dati

 Consente la gestione dei dati, in modo indipendente dalle applicazioni stesse

 I dati non appartengono ad una specifica applicazione, ma le diverse applicazioni vi accedono attraverso il DBMS

(14)

AOT AOT

LAB LAB

Cosa Cosa Cosa Cosa èèèè un DBMSun DBMSun DBMSun DBMS

 Le basi di dati gestite dai DBMS sono in generale strutture dati, organizzate secondo modelli ben

definiti e specificati a priori, aventi le seguenti caratteristiche:

 Grandi: possono avere notevoli dimensioni (fino a migliaia di Gbyte) e devono quindi risiedere nella memoria secondaria

 Condivise: applicazioni ed utenti diversi devono potere accedere ai dati

 Persistenti: il tempo di vita dei dati va oltre la durata

(15)

AOT AOT

LAB LAB

Cosa Cosa Cosa Cosa èèèè un DBMSun DBMSun DBMSun DBMS

 Un DBMS è un sistema di "facilities" per effettuare le tre operazioni fondamentali sui dati:

 Ricerca

 Aggiornamento

 Cancellazione

(16)

AOT AOT

LAB LAB

Cosa Cosa Cosa Cosa èèèè un DBMSun DBMSun DBMSun DBMS

 Un DBMS è caratterizzato da:

 Controllo centralizzato dei dati

 Riduzione della ridondanza dei dati

 Eliminazione delle inconsistenze nei dati

 Condivisione dei dati tra gli utenti

 Uso di standard di rappresentazione

 Uso di restrizioni d’accesso ai dati

 Mantenimento dell'integrità dei dati per mezzo di procedure di validazione

 Realizzazione della indipendenza dei dati

(17)

AOT AOT

LAB LAB

Architettura di un DBMSArchitettura di un DBMSArchitettura di un DBMSArchitettura di un DBMS

 Ogni DBMS é basato su:

 Un modello dei dati

 Un linguaggio di manipolazione

 I DBMS sono classificati:

 Per tipo di modello di dati

 Per numero di utenti che può servire in parallelo

 Per numero di nodi di calcolo coinvolti

(18)

AOT AOT

LAB LAB

Architettura di un DBMSArchitettura di un DBMSArchitettura di un DBMSArchitettura di un DBMS

utente Programmi applicativi / interrogazioni

Software per processare i programmi e le interrogazioni

Software per accedere ai dati memorizzati

Meta

Dati Dati

DBMS Software

(19)

AOT AOT

LAB LAB

Livelli di astrazioneLivelli di astrazioneLivelli di astrazioneLivelli di astrazione

 Un DBMS dovrebbe fornire una visione astratta della base di dati:

 Livello (schema) fisico: descrive la base di dati come un insieme di record in memoria di massa

 Livello (schema) logico: descrive la struttura di ciascun dato e i collegamenti tra dati diversi

 Livello (schema) esterno: presenta i dati così come

vengono visti da un particolare utente o da una classe di utenti

(20)

AOT AOT

LAB LAB

Livelli di astrazioneLivelli di astrazioneLivelli di astrazioneLivelli di astrazione

 Un DBMS dovrebbe fornire indipendenza fisica e logica

 L’Indipendenza fisica garantisce che il livello logico non dipende:

 Dall’implementazione del DBMS

 Dal calcolatore su cui è installato il DBMS

 Dal modo in cui in cui i dati sono distribuiti su più macchine

 Questo permette di ridefinire il livello fisico senza modificare il livello logico

 L’indipendenza logica garantisce che il livello esterno non dipende dal livello logico

 Questo permette di definire nuovi schemi esterni senza modifica la struttura logica

(21)

AOT AOT

LAB LAB

Architettura a tre livelliArchitettura a tre livelliArchitettura a tre livelliArchitettura a tre livelli

Utenti finali

Linguaggio Host + DSL

Linguaggio Host + DSL

Linguaggio Host + DSL

Vista esterna A Vista esterna B

Vista Concettuale

Data Base Fisico DBMS

mappatura concettuale/interna mappatura

esterna/concettuale . . .

(22)

AOT AOT

LAB LAB

Sistemi Sistemi Sistemi Sistemi transazionalitransazionalitransazionalitransazionali

 La condivisione dei dati e l’accesso concorrente comporta il problema del mantenimento della congruenza dei dati

 Un esempio, il prelievo da un conto corrente (cc) effettuato con la sequenza di due operazioni:

 Controllo della disponibilità

 Sottrazione della somma prelevata

 Due prelievi contemporanei di 1000 € su un cc con saldo di 1000 €:

 A verifica cc >= 1000 €

 B verifica cc >= 1000 €

 A sottrae 1000 €

 B sottrae 1000 €

 Ottenendo sul cc un saldo finale di -1000 €!

(23)

AOT AOT

LAB LAB

Sistemi Sistemi Sistemi Sistemi transazionalitransazionalitransazionalitransazionali

t

verifica cc >= 1000 €

verifica cc >= 1000 €

sottrae 1000 €

sottrae 1000 €

A B

(24)

AOT AOT

LAB LAB

Sistemi Sistemi Sistemi Sistemi transazionalitransazionalitransazionalitransazionali

 Una transazione è un insieme di operazioni sui dati che devono essere eseguite completamente, prima che gli stessi dati siano nuovamente disponibili

 La transazione rappresenta un’insieme di operazioni non decomponibili sui dati (si parla di "atomicità della

transazione”)

 Nell’esempio precedente le operazioni:

 Controllo della disponibilità

 Sottrazione della somma addebitata

devono essere contenute in un’unica transazione

(25)

AOT AOT

LAB LAB

Sistemi Sistemi Sistemi Sistemi transazionalitransazionalitransazionalitransazionali

t

verifica cc >= 1000 €

verifica cc >= 1000 € sottrae 1000 €

sottrae 1000 €

A B

(26)

AOT AOT

LAB LAB

Modelli dei datiModelli dei datiModelli dei datiModelli dei dati

 Il modello dei dati caratterizza il livello concettuale e quello esterno dei DBMS

 È definito da regole precise e permette di

esprimere sia le proprietà statiche che quelle dinamiche dei dati

 Evoluzione dei modelli:

 Gerarchico (anni 1960)

 Reticolare (anni 1970)

 Relazionale (anni 1970)

 Object Relational ed Object Oriented (anni 1980)

(27)

AOT AOT

LAB LAB

Modello relazionaleModello relazionaleModello relazionaleModello relazionale

 Proposto da Codd nel 1970 e disponibile come modello logico in DBMS reali nel 1981

 Il modello relazionale si basa sul concetto

matematico di relazione e utilizza le tabelle come rappresentazione naturale delle relazioni

 Il successo del modello relazionale è in gran parte dovuto alla semplicità di utilizzo, data dal fatto che si appoggia ad un modo di rappresentate i dati a noi familiare:

 le tabelle

(28)

AOT AOT

LAB LAB

Modello relazionaleModello relazionaleModello relazionaleModello relazionale

 Nel modello relazionale ogni relazione è sostanzialmente una tabella

 A ciascun dominio associamo un nome

(attributo), unico nella relazione, che “descrive” il ruolo del dominio

 Nella rappresentazione tabellare, gli attributi sono usati come intestazioni delle colonne

 Le informazioni sono rappresentate dalle righe presenti nelle tabelle

(29)

AOT AOT

LAB LAB

Database universitarioDatabase universitarioDatabase universitarioDatabase universitario

studenti

esami

corsi

(30)

AOT AOT

LAB LAB

TerminologiaTerminologiaTerminologiaTerminologia

studenti

Riga-Record -Tupla

Colonna - Campo - Attributo Tabella - Relazione - File

Schema

(31)

AOT AOT

LAB LAB

CaratteristicheCaratteristicheCaratteristicheCaratteristiche

 Le righe di una tabella sono definite dall'insieme dei valori corrispondenti ai campi della tabella

stessa

 I valori che possono essere assegnati a ciascun campo sono il dominio di quel campo

 Il dominio di un campo è l’insieme di tutti e soli i valori che possono essere assunti da un

determinato attributo di una relazione

 Ad esempio, il dominio dei codici fiscali è formato da stringhe di 16 caratteri composte seguendo con

precisione la regola di generazione dei codici fiscali

(32)

AOT AOT

LAB LAB

CaratteristicheCaratteristicheCaratteristicheCaratteristiche

 Informazioni contenute in tabelle distinte possono essere associate semplicemente per mezzo della condivisione di campi (ossia di domini) tra tali

tabelle

 Ad esempio, nel database universitario:

 Studenti ed esami sono associati con i campi matricola e studente

• Corsi ed esami sono associati con i campi corso e codice

 Il modello relazionale basa la propria forza sulla semplicità

(33)

AOT AOT

LAB LAB

Concetto e tipi di chiaveConcetto e tipi di chiaveConcetto e tipi di chiaveConcetto e tipi di chiave

studenti

Esami

corsi

(34)

AOT AOT

LAB LAB

DefinizioneDefinizioneDefinizioneDefinizione

 Data una collezione di insiemi D1,...,Dn, non necessariamente distinti

 Una relazione R su tali insiemi è un insieme di n- uple ordinate (d1,...,dn) tali che d1

D1,..., dn

Dn

 Gli insiemi Di si dicono domini della relazione

 Il valore n è il grado della relazione

 Il numero di n-uple presenti in R rappresenta la cardinalità della relazione

 Una relazione R sugli insiemi D1,...,Dn è un

sottoinsieme del prodotto cartesiano D x D x ... x D

(35)

AOT AOT

LAB LAB

NormalizzazioneNormalizzazioneNormalizzazioneNormalizzazione

 Tutte le relazioni di un DB relazionale devono essere normalizzate, cioè:

 Ciascun attributo in ogni riga, deve essere “atomico”

 Ossia non scomponibile in valori elementari

(36)

AOT AOT

LAB LAB

NormalizzazioneNormalizzazioneNormalizzazioneNormalizzazione

studenti

studenti

(37)

AOT AOT

LAB LAB

Concetto e tipi di chiaveConcetto e tipi di chiaveConcetto e tipi di chiaveConcetto e tipi di chiave

 Una tabella (relazione) non dovrebbe contenere due righe identiche

 E’ sempre possibile scegliere un sottoinsieme di campi di una tabella in maniera da identificare univocamente ciascuna riga della tabella

 La chiave primaria (primary key, PK) di una tabella è il minimo sottoinsieme di campi che permette di identificare univocamente le righe della tabella

(38)

AOT AOT

LAB LAB

Concetto e tipi di chiaveConcetto e tipi di chiaveConcetto e tipi di chiaveConcetto e tipi di chiave

studenti

Esami

corsi

(39)

AOT AOT

LAB LAB

Concetto e tipi di chiaveConcetto e tipi di chiaveConcetto e tipi di chiaveConcetto e tipi di chiave

 Le chiavi candidate sono gli attributi in una

relazione con la proprietà di poter essere la chiave primaria:

 Tra le chiavi candidate deve essere scelta la chiave primaria

 Le chiavi escluse si dicono chiavi alternative

 Le righe di una tabella rappresentano “entità” del mondo reale

 La chiave primaria rappresenta il modo con cui è possibile distinguere queste entità

(40)

AOT AOT

LAB LAB

Concetto e tipi di chiaveConcetto e tipi di chiaveConcetto e tipi di chiaveConcetto e tipi di chiave

 Le informazioni presenti in tabelle diverse possono essere associate tra loro perché tali tabelle hanno dei domini in comune

 Quando il dominio di un campo K che è chiave primaria in una tabella A è presente anche in un’altra tabella B

 Allora questo campo K è detto chiave esterna (foreign key, FK) verso la tabella A

(41)

AOT AOT

LAB LAB

Concetto e tipi di chiaveConcetto e tipi di chiaveConcetto e tipi di chiaveConcetto e tipi di chiave

Esami studenti

(42)

AOT AOT

LAB LAB

OperatoriOperatoriOperatoriOperatori

 Gli operatori relazioni rappresentano la base

teorica per i linguaggi di interrogazioni delle basi di dati relazionali

 Quindi sono anche la base del linguaggio base di interrogazione delle basi di dati relazionali

 Gli operatori relazionali permettono l’esecuzione di ricerche considerando le tabelle come insiemi,

senza operare record per record

 Gli operatori prendono in input tabelle e generano in output nuove tabelle

(43)

AOT AOT

LAB LAB

OperatoriOperatoriOperatoriOperatori

 Gli operatori dell’algebra relazionale sono:

 Unione

 Intersezione

 Differenza

 Ridenominazione

 Selezione

 Proiezione

 Join

(44)

AOT AOT

LAB LAB

Operatori Operatori Operatori Operatori insiemisticiinsiemisticiinsiemisticiinsiemistici

 Le relazioni rappresentano degli insiemi

 Se applichiamo gli operatori insiemistici (unione, intersezione e differenza) a delle relazioni

otteniamo delle altre relazioni

 È importante sottolineare che è possibile applicare gli operatori insiemistici solo a relazioni definite

sugli stessi attributi

(45)

AOT AOT

LAB LAB

Operatori Operatori Operatori Operatori insiemisticiinsiemisticiinsiemisticiinsiemistici

laureati

quadri

reparti

(46)

AOT AOT

LAB LAB

UnioneUnioneUnioneUnione

laureati quadri

laureati ∪ quadri

(47)

AOT AOT

LAB LAB

IntersezioneIntersezioneIntersezioneIntersezione

laureati quadri

laureati ∩ quadri

(48)

AOT AOT

LAB LAB

DifferenzaDifferenzaDifferenzaDifferenza

laureati quadri

laureati - quadri

(49)

AOT AOT

LAB LAB

RidenominazioneRidenominazioneRidenominazioneRidenominazione

 L’operatore di ridenominazione viene applicato ad un unica relazione (operatore monadico)

 Questo operatore modifica lo schema della

relazione lasciando inalterati i valori delle righe della relazione

 Questo operatore, come dice già il suo nome, ha lo scopo di rinominare un attributo di una relazione

(50)

AOT AOT

LAB LAB

RidenominazioneRidenominazioneRidenominazioneRidenominazione

paternità

maternità

(51)

AOT AOT

LAB LAB

Selezione e Selezione e proiezioneSelezione e Selezione e proiezioneproiezioneproiezione

selezione

proiezione

(52)

AOT AOT

LAB LAB

SelezioneSelezioneSelezioneSelezione

 L’operatore di selezione viene applicato ad un unica relazione

 Questo operatore costruisce una nuova relazione:

 Estrae un sottoinsieme orizzontale delle righe di una relazione specificata in input

 Selezionando le righe che soddisfano una condizione espressa sui valori degli attributi della relazione in input

(53)

AOT AOT

LAB LAB

SelezioneSelezioneSelezioneSelezione

(54)

AOT AOT

LAB LAB

ProiezioneProiezioneProiezioneProiezione

 L’operatore di proiezione viene applicato ad un unica relazione

 Questo operatore costruisce una nuova relazione:

 Estrae un sottoinsieme verticale degli attributi di una relazione specificata in input

 Rimuovendo inoltre eventuali n-uple duplicate

(55)

AOT AOT

LAB LAB

ProiezioneProiezioneProiezioneProiezione

(56)

AOT AOT

LAB LAB

JoinJoinJoinJoin

 L’operatore di join viene applicato a due relazioni

 Questo operatore costruisce una nuova relazione:

 Utilizzando un attributo (dominio) comune alle due tabelle originali

 Scegliendo le righe della prima relazione e della seconda tabella che hanno lo stesso valore per l'attributo comune

 Concatenando queste righe

(57)

AOT AOT

LAB LAB

JoinJoinJoinJoin

(58)

AOT AOT

LAB LAB

JoinJoinJoinJoin

(59)

AOT AOT

LAB LAB

JoinJoinJoinJoin

(60)

AOT AOT

LAB LAB

Prodotto Prodotto Prodotto Prodotto cartesianocartesianocartesianocartesiano

 Il prodotto cartesiano è un join su due relazioni senza l’utilizzo di attributi in comune

 Il risultato di questa operazione contiene sempre un numero di ennuple pari al prodotto delle

cardinalità degli operandi (le ennuple sono tutte combinabili)

(61)

AOT AOT

LAB LAB

Prodotto Prodotto Prodotto Prodotto cartesianocartesianocartesianocartesiano

(62)

AOT AOT

LAB LAB

Combinazione degli Combinazione degli operatoriCombinazione degli Combinazione degli operatorioperatorioperatori

 Combinando:

 Selezione e proiezione

 Possiamo raffinare la ricerca di informazioni da una singola relazione

 Combinando:

 Join e selezione

 Join e proiezione

 Possiamo raffinare la ricerca di informazioni da più relazione

(63)

AOT AOT

LAB LAB

Combinazione degli Combinazione degli operatoriCombinazione degli Combinazione degli operatorioperatorioperatori

(64)

AOT AOT

LAB LAB

Combinazione degli Combinazione degli operatoriCombinazione degli Combinazione degli operatorioperatorioperatori

SEL Capo = Bruni (Impiegati JOIN Reparti)

Impiegati

Reparti

(65)

AOT AOT

LAB LAB

Combinazione degli Combinazione degli operatoriCombinazione degli Combinazione degli operatorioperatorioperatori

PROJ Impiegato, Capo (Impiegati JOIN Reparti)

Impiegati

Reparti

(66)

AOT AOT

LAB LAB

SqlSqlSqlSql

 Sql (Structured Query Language) è il linguaggio di

riferimento per la manipolazione e l’interrogazione di basi di dati relazionali

 Sql deriva da una prima proposta di linguaggio di Ibm chiamato Sequel (1974)

 Le prime implementazioni sono di Ibm e Oracle (1981)

 Dal 1983 è lo “standard di fatto” per la manipolazione e l’interrogazione di basi di dati relazionali

 Il linguaggio ha avuto una evoluzione negli anni

corrispondenti ad aggiornamenti delle sue specifiche nel

(67)

AOT AOT

LAB LAB

OperatoriOperatoriOperatoriOperatori

 create table NomeTabella (

NomeAttributo Dominio [ Vincoli ], ...

NomeAttributo Dominio [ Vincoli ], [ AltriVincoli ]

)

 select Attributo … Attributo from Tabella … Tabella [where Condizione]

(68)

AOT AOT

LAB LAB

OperatoriOperatoriOperatoriOperatori

 insert into Tabella [ ( Attributi ) ] values( Valori )

 insert into Tabella [ ( Attributi ) ] select ...

 update NomeTabella

set Attributo = < Espressione

| select … | null | default >

[ where Condizione ]

 delete from Tabella [ where Condizione ]

(69)

AOT AOT

LAB LAB

CreazioneCreazioneCreazioneCreazione

create table Impiegato (

Matricola character(6) primary key, Nome character(20) not null,

Cognome character(20) not null, Sede character(15),

Stipendio numeric(9) default 0, Citta character(15),

foreign key(Sede) references Dipartimento(NomeDip), unique (Cognome,Nome)

)

(70)

AOT AOT

LAB LAB

CreazioneCreazioneCreazioneCreazione

create table persone (

nome character(20) primary key, eta numeric(3),

reddito numeric(9) );

create table paternita ( padre character(20),

figlio character(20) unique );

create table maternita ( madre character(20),

figlio character(20) unique );

(71)

AOT AOT

LAB LAB

RicercaRicercaRicercaRicerca

 Dimmi il nome e il reddito delle persone con età minore di 30 anni

select nome, reddito from persone where eta < 30

 Dimmi i dati delle persone con età minore di 30 anni

select * from persone where eta < 30

 Dimmi i padri delle persone che guadagnano più di 200 mila euro

select paternita.padre from persone, paternita where persona.reddito > 200000 and

paternità.figlio = persona.nome

(72)

AOT AOT

LAB LAB

RicercaRicercaRicercaRicerca

 Dimmi nome, reddito e reddito del padre delle persone che guadagnano più del loro padre

select f.nome, f.reddito, p.reddito

from persone f, paternità t, persone p where f.name = t.figlio and

p.nome = t.padre and f.reddito > p.reddito

 Dimmi il nome del padre e della madre di ogni persona

select paternita.figlio, padre, madre from paternita, maternita where

(73)

AOT AOT

LAB LAB

Manipolazione Manipolazione Manipolazione Manipolazione datidatidatidati insert into persone

values('Mario',25,52)

insert into persone(nome, eta, reddito) values('Pino',25,52)

delete from persone where eta < 35 update persone

set reddito = 45 where nome = 'Piero‘

update persone

set reddito = reddito * 1.1 where eta < 30

Riferimenti

Documenti correlati

 Java non impone ai metodi di catturare o specificare le eccezioni non controllate (RuntimeException, Error e sottoclassi).  I programmatori possono essere tentati di scrivere

 Un oggetto può essere descritto tramite le caratteristiche della classe (insieme, famiglia) di oggetti di cui fa parte1.  Tutti i

Quando viene invocato wait, il thread rilascia il lock e sospende la sua esecuzione. In seguito, un altro thread acquisirà lo stesso

Š Infrared transmission uses low frequency light waves to carry data through the air. Š Its

Quando un server invia una risposta, può inviare anche informazione di stato da memorizzare sul client.  Specificato del range di url per cui lo stato

Š International Standardization Organization (ISO) is responsible for a wide range of standards including networking standards.. AOT LAB

Š FIPA ACL is an “outer language” that defines a set of performatives (communicative acts) used for exchanges of knowledge. Š But knowledge can be expressed in different

 L’ereditarità tra le classi Java è singola: solo una classe base (diretta) per ogni classe derivata..  Tutte le classi sono derivate (implicitamente)