Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Database Relazionali: Concetti Base e Algebra Relazionale, Appunti di Elementi di Informatica

INFORMATICA DOCUMENTALE parti libro da studiare per l'esame

Tipologia: Appunti

2017/2018

Caricato il 12/06/2018

Alice.Ambrosi
Alice.Ambrosi 🇮🇹

4.1

(6)

5 documenti

1 / 24

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
CAP 1 (LIBRO)
Attività di raccolta/conservazione e organizzazione dati costituiscono uno dei principali compiti dei
sistemi informatici. I sistemi informatici garantiscono che questi dati vengano conservati in modo
permanente su dispositivi per la loro memorizzazione, aggiornati per riflettere rapidamente le loro
variazioni e resi accessibili alle interrogazioni degli utenti, talvolta distribuiti in modo capillare sul
territorio.
Nello svolgimento di attività (individuali e collettive) sono essenziali la disponibilità di informazioni
e la capacità di gestirle in modo efficace > ogni organizzazione è dotata di un sistema informativo,
che organizza e gestisce le informazioni necessarie per perseguire gli scopi dell’organizzazione
stessa. L’esistenza del sistema informativo è in parte indipendente dalla sua automatizzazione.
Con il passare del tempo che le attività si sono andate a sistematizzare, sono state individuate
opportune forme di organizzazione e codifica delle informazioni. Nel sistema informatico le info
vengono rappresentate per mezzo di dati, che hanno bisogno di essere interpretati per fornire
informazioni.
Dati > in modo approssimativo non hanno alcun significato, ma una volta interpretati e correlati
opportunamente, essi forniscono informazioni, che consentono di arricchire la nostra conoscenza
del mondo. È immediatamente presente alla conoscenza, prima di ogni elaborazione, (in
informatica) elementi di informazione costituiti da simboli che devono essere elaborati.
Informazione > notizia, dato o elemento che consente di avere conoscenza più o meno esatta di
fatti, situazioni o modi di essere
Base di dati > collezione di dati, utilizzati per rappresentare le informazioni di interesse per un
sistema informativo.
In assenza di software specifici la gestione dei dati è affidata ai linguaggi di programmazione
tradizionali > es. C e Fortran; recentemente > ai linguaggi a oggetti tra cui C++ e Java (esistono
ancora alcune applicazioni scritte in cobol).
L’approcio convenzionale alla gestione dei dati sfrutta la presenza di archivi o file per memorizzare
i dati in modo persistente sulla memoria di massa. Un file consente di memorizzare e ricercare
dati, ma fornisce solo semplici meccanismi di accesso e condivisione > secondo questo approccio
le procedure scritte in un linguaggio di programmazione sono completamente autonome (ciascuna
di esse definisce e utilizza uno o più file privati). Eventuali dati di interesse per più programmi sono
replicati tante volte quanto sono i programmi che li utilizzano.
Sistema di gestione dei dati ((DBMS> data base management System) è un sistema di software in
grado di gestire collezioni di dati che siano grandi, condivise e persistenti, assicurando la loro
affidabilità e privatezza. Un DBMS deve essere efficiente e efficace. Una base di dati è una
collezione gestita da un DBMS.
Caratteristiche DBMS:
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18

Anteprima parziale del testo

Scarica Database Relazionali: Concetti Base e Algebra Relazionale e più Appunti in PDF di Elementi di Informatica solo su Docsity!

CAP 1 (LIBRO)

Attività di raccolta/conservazione e organizzazione dati costituiscono uno dei principali compiti dei sistemi informatici. I sistemi informatici garantiscono che questi dati vengano conservati in modo permanente su dispositivi per la loro memorizzazione, aggiornati per riflettere rapidamente le loro variazioni e resi accessibili alle interrogazioni degli utenti, talvolta distribuiti in modo capillare sul territorio. Nello svolgimento di attività (individuali e collettive) sono essenziali la disponibilità di informazioni e la capacità di gestirle in modo efficace > ogni organizzazione è dotata di un sistema informativo, che organizza e gestisce le informazioni necessarie per perseguire gli scopi dell’organizzazione stessa. L’esistenza del sistema informativo è in parte indipendente dalla sua automatizzazione. Con il passare del tempo che le attività si sono andate a sistematizzare, sono state individuate opportune forme di organizzazione e codifica delle informazioni. Nel sistema informatico le info vengono rappresentate per mezzo di dati, che hanno bisogno di essere interpretati per fornire informazioni. Dati > in modo approssimativo non hanno alcun significato, ma una volta interpretati e correlati opportunamente, essi forniscono informazioni, che consentono di arricchire la nostra conoscenza del mondo. È immediatamente presente alla conoscenza, prima di ogni elaborazione, (in informatica) elementi di informazione costituiti da simboli che devono essere elaborati. Informazione > notizia, dato o elemento che consente di avere conoscenza più o meno esatta di fatti, situazioni o modi di essere Base di dati > collezione di dati, utilizzati per rappresentare le informazioni di interesse per un sistema informativo. In assenza di software specifici la gestione dei dati è affidata ai linguaggi di programmazione tradizionali > es. C e Fortran; recentemente > ai linguaggi a oggetti tra cui C++ e Java (esistono ancora alcune applicazioni scritte in cobol). L’approcio convenzionale alla gestione dei dati sfrutta la presenza di archivi o file per memorizzare i dati in modo persistente sulla memoria di massa. Un file consente di memorizzare e ricercare dati, ma fornisce solo semplici meccanismi di accesso e condivisione > secondo questo approccio le procedure scritte in un linguaggio di programmazione sono completamente autonome (ciascuna di esse definisce e utilizza uno o più file privati). Eventuali dati di interesse per più programmi sono replicati tante volte quanto sono i programmi che li utilizzano. Sistema di gestione dei dati ((DBMS> data base management System) è un sistema di software in grado di gestire collezioni di dati che siano grandi, condivise e persistenti, assicurando la loro affidabilità e privatezza. Un DBMS deve essere efficiente e efficace. Una base di dati è una collezione gestita da un DBMS. Caratteristiche DBMS:

 Le basi dati sono GRANDI > dimensioni enormi/molto maggiori della memoria centrale disponibile. Le più grandi hanno centinaio o migliaia di terabyte e contegono migliaia di miliardi di record >> dnms devono prevedere una gestione dei dati di memoria secondaria. Ovviamente possono esistere anche basi dati “piccoli” ma i sistemi devono gestire dati senza porre limiti alle dimensioni (a parte quelle fisiche dei dispositivi).  Le basi dati sono CONDIVISE > applicazioni e utenti diversi devono poter accedere, secondo opportune modalità, a dati comuni. Impo > in questo modo si riduce la ridondanza dei dati, poiché si evitano ripetizioni e conseguentemente si riduce anche la possibilità di inconsistenze ( se esistono copie può essere che in alcuni momenti non siano uguali). per garantire l’accesso condiviso ai dati da parte di molti utenti che operano contemporaneamente ì, il dbms dispone di un meccanismo > controllo di concorrenza  PERSISTENTI > hanno un tempo di vita che non è limitato a quello delle singole esecuzioni dei programmi che le utilizzano  Garantiscono AFFIDABILITA’ > capacità di un sistema di conservare sostanzialmente intatto il contenuto della base di dati in caso di malfunzionamento hardware o software. Aspetto essenziale > molte applicazioni ogni dato ha un valore enorme e deve essere preservato nel tempo e a fronte di qualsiasi guasto del sistema, errore umano o catastrofico >> dbms forniscono funzionalità di salvataggio e ripristino.  PRIVATEZZA dei dati > ciascun utente viene abilitato a svolgere solo determinate azioni sui dati, attraverso meccanismi di autorizzazione.  EFFICENTI > capaci di svolgere le operazioni utilizzando un insieme di risorse (tempo e spazio) che sia accettabile per gli utenti. Questa caratteristica dipende dalle tecniche utilizzate nell’implementazione del dbms e dalla bontà della realizzazione della base dei dati da parte dei suoi progettisti. Garantiscono efficienza solo a condizione che il sitema informatico su cui sono installati sia adeguatamente dimensionato.  EFFICACI > sono capaci di rendere produttive le attività dei loro utenti. Obiettivo > buona efficacia complessiva del sistema. La gestione di collezioni di dati grandi e persistenti è possibile anche per mezzo di strumenti meno sofisticati dei dbms. I file sono stati introdotti per gestire insieme di dati localmente a una specifica procedura o applicazione. I DBMS sono stati concepiti e realizzati per estendere le funzioni dei file system, fornendo la possibilità di accesso condiviso agli stessi dati da parte di più utenti e applicazioni, e garantendo anche molti altri servizi in maniera integrata. DBMS utilizzano file per la memorizzazione dei dati ; file gestiti dal dbms ammettono però organizzazioni più sofisticate. Un organizzazione complessa (azienda o ente pubblico) utilizza un insieme di base di dati, che siano ciascuna dedicata a un insieme di applicazioni strettamente correlate e che siano allo

tempo, delle sue righe (coerenti con lo schema) > per es. pagina 7-8. Si dice che lo schema è la componente intensionale della base di dati e l’istanza la componente estensionale. Esiste una proposta di architettura standardizzata per DBMS articolata su tre livelli (esterno, logico e interno) e per ciascun livello esiste uno schema.  Schema logico > descrizione dell’intera base di dati per mezzo del modello logico adottato dal DBMS (es. relazionale o oggetti)  Schema interno > rappresentazione dello schema logico per mezzo di strutture fische di memorizzazione (es. file sequenziale con uno o più indici)  Schema esterno > descrizione di una porzione della base di dati di interesse, per mezzo del modello logico. è possibile associare a uno schema logico tanti schemi esterni. Nei sistemi più moderni il livello esterno non è semplicemente presente, ma è possibile definire relazioni derivate. L’architettura a livelli garantisce l’indipendenza dei dati (principale proprietà dei DBMS) > permette a utenti e programmi applicativi che utilizzano una base di dati di interagire a un elevato livello di astrazione, che prescinde dai dettagli realizzativi utilizzati nella costruzione di basi di dati. L’indipendenza dei dati può essere caratterizzata ulteriormente come:

  • Indipendenza fisica > consente di interagire con il DBMS in modo indipendente dalla struttura fisica dei dati. In base a questa proprietà è possibile modificare le strutture fisiche senza influire sulle descrizioni dei dati di alto livello e quindi su programmi che utilizzano i dati stessi.
  • Indipendenza logica > consente di interagire con il livello esterno della base di dati in modo indipendente dal livello logico. È possibile modificare il livello logico, mantenendo inalterate le strutture esterne di interesse per l’utente. IMPO> accessi alla base dei dati avvengono solo attraverso il modello livello esterno (che può coincidere con quello logico); è il DBMS che traduce le operazioni in termini dei livelli sottostanti. L’architettura a livelli è quindi il meccanismo fondamentale attraverso cui il DBMS realizzano l’indipendenza dei dati. I DBMS sono caratterizzati da un lato dalla presenza di molteplici linguaggi per la gestione dati, dall’altro dalla presenza di molteplici tipologie di utenti. Su un DBMS è possibile specificare operazioni di vario tipo, in particolare quella relativa agli schemi e alle istanze. I linguaggi per basi di dati si distinguono in due categorie:
  1. Linguaggi di definizione dei dati o data definition language (DDL) > definire schemi logici, esterni e fisici e le autorizzazioni per l'accesso
  2. linguaggi di manipolazioni dei dati o data manipulation language (DML) > interrogazione e aggiornamento delle istanze di basi di dati. L'accesso di dati può essere effettuato con varie modalità: ➔ linguaggi testuali interrativi (SQL) nelle sue varie versioni ➔ comandi simili a quelli interattivi immersi in linguaggi di programmazione come C, C++, Java,... sono detti linguaggi ospite > ospitano comandi scritti nel linguaggio per base di dati. Possibilità di realizzare applicazioni parametriche e farle eseguire anchea un utente che non conosce SQL ➔ comandi simili a quelli interattivi immersi in linguaggi di sviluppo ad hoc, spesso con funzionalità specifiche. Questi linguaggi variano molto da sistema a sistema ➔ interfacce amichevoli che permettono di sintetizzare interrogazioni senza usare un linguaggio testuale. Anche queste interfacce differiscono molto le une dalle altre. Varie categorie di persone possono interagire con una base di dati o con un DBMS. Le più importanti sono ➔ amministratore base di dati (database amministration) > persone o gruppo di persone responsabile della progettazione. Controllo e amministrazione della base di dati. Compito di mediare le varie esigenze espresse dagli utenti garantendo un controllo centralizzato sui dati. In particolare. È responsabile di garantire sufficienti prestazioni, di assicurare l'affidabilità del sistema e di gestire le autorizzazioni di accesso dati. ➔ Progettisti e programmatori di applicazioni definiscono e realizzano i programmi che accedono alla base dati. Essi utilizzano il linguaggio di manipolazione dei dati o i vari strumenti di supporto alla generazione di interfacce verso la base dati descritti in precedenza ➔ utenti > utilizzano la base di dati per le proprie attività. Essi a loro volta si dividono in due categorie:
  • utenti finali (o terminalisti) che utilizzano transazioni > programmi che realizzano attività predefinite e di frequenza elevata, con poche eccezioni previste a priori.
  • utenti casuali > impiegano i linguaggi interattivi per l'accesso alla base dati, formulando interrogazioni (o aggiornamenti) di vario tipo. Essi possono essere specializzati e interagire frequentemente con la base di dati.

Dati due insieme D 1 e D 2 si chiama PRODOTTO CARTESIANO di D 1 e D 2 , in simboli D1D2, l'insieme delle coppie ordinate (v 1 , v 2 ), tali che V 1 è un elemento di D 1 e v 2 è un elemento di D 2. es. A={1,2,4} e B ={a,b} >il prodotto cartesiano di AB è costituito dall'insieme di tutte le coppie possibili in cui il primo elemento appartiene ad A e il secondo appartiene a B > sei coppie {(1,a), (1,b), (2,a), (2,b),(4,a),(4,b)} RELAZIONE MATEMATICA sugli insiemi D 1 e D 2 (=DOMINI DI UNA RELAZIONE) è un sottoinsieme di D1*D2. Le relazioni possono essere rappresentate graficamente > tabelle. Dati n>0 insiemi D 1 ,D 2 ,...,Dn, non necessariamente distinti, il prodotto cartesiano di D 1 ,D 2 ,...,Dn, indicato con D 1 *D 2 ...Dn, è costituito dall'insieme n-uple (v 1 ,v 2 ,...,vn) tali che v 1 appartiene a D i, per 1≤ i ≤ n. Una relazione matematica sui domini D 1 , D 2 ,..., Dn è un sottoinsieme del prodotto cartesiano D 1 *D 2 ..Dn. N= grado del prodotto cartesiano della relazione. Il numero di elementi di una relazione viene chiamato cardinalità della relazione. Le relazioni possono essere utilizzate per rappresentare i dati di interesse per qualche applicazione

es appunti stringastringaintero*intero. Una relazione matematica è un insieme di n-uple ordinate (v1,v2,...,vn) con v1 ∈ D1, v2 ∈D2, …, vn ∈Dn. Ciascuna n-upla contiene i dati fra loro collegati. Stabilisce un legame fra loro. Ricordiamo che una relazione è un insieme, quindi:

  • non è definito alcun ordinamento tra le n-uple> nelle tabelle c'è ma è occasionale. Due tabelle con le stesse stringhe ma in ordine diverso rappresentano la stessa relazione
  • n-uple di una relazione sono distinte l'una dall'altra (no elementi uguali fra di loro. Righe sono diverse) ciascuna n-upla è ordinata > l'i-esimo valore di ciascuna proviene dall'i-esimo dominio. Si tende a utilizzare le notazioni posizionali solo quando l'ordinamento corrisponde a un esigenza intrinseca. Nel caso dei record ogni campo è associato ad un nome detto attributo. L'ATTRIBUTO descrive il ruolo. È un etichetta. (guarda esempio pag 19 o appunti). Squadra di casa Squadra ospite Reti Casa Reti Ospite Juventus Lazio 3 1 Lazio Milan 2 0 Juventus Roma 1 2 Roma Milan 0 1

Gli attributi sono stati usati come intestazioni per le colonne > si identificano in maniera univoca le componenti. Gli attributi di una relazione devono essere diversi uno dall'altro. L'ordinamento risulta irrilevante. D > insieme dei domini dom : X → D >>corrispondenza fra attributi e domini, nell'ambito di una relazione per mezzo di questa funzione dom : X → D associa a ciascun attributo A ∈ X un dominio dom (A) ∈D tupla > elemento di un database relazionale caratterizzato da uno o più attributi; record tupla^2 su un insieme di attributi X è una funzione t che associa a ciascun attributo A ∈X un valore del dominio dom(A). >> una RELAZIONE SU X è un insieme di tuple su X. Relazione matematica > n-uple i cui elementi sono individuati per posizione tuple > elementi individuati per mezzo di attributi (tecnica non posizionale).

se t è una tupla su X e A, allora t[A] indica il valore di t su A. esempio t [squadraospitata] = Lazio t[Squadraospitata,Retiospitata] > tupla su due attributi. Una relazione può essere utilizzata per organizzare dati rilevanti nell'ambito di un'applicazione di interesse. Di solito non è sufficiente una singola relazione > una bDd è costituita da più relazioni, le cui tuple contengono valori comuni, ove è necessario stabilire corrispondenze. Vedi esempio p21 o appunti studenti-esami-corsi modello relazionale > basato su valori > riferimenti fra i dati in relazione diverse sono rappresentate per mezzo di valori dei domini che compaiono nelle tuple. In altri modelli (es. reticolare e gerarchico) realizzano la corrispondenza in modo esplicito attraverso puntatori > modelli basati su record e puntatori. Modello relazione basato sui valori(rispetto a quello basato su record e puntatori) > vantaggi:

  • richiede di rappresentare solo ciò che è rilevante dal punto di vista dell'applicazione (i puntatori sono qualcosa di aggiuntivo, legato ad aspetti realizzativi. Il programmatore fa riferimento a dati che non sono significativi per l'applicazione)
  • rappresentazione logica dei dati (valori) non ha alcun riferimento a quella fisica (che può cambiare nel tempo). Il modello relazionale permette l'indipendenza fisica dei dati
  • informazione contenuta nei valori è facile trasferire i dati da un contesto all'altro; in presenza di puntatori l'operazione è più complessa (puntatori hanno un significato locale al singolo sistema, che non è sempre immediato da esportare)

293425 27 e lode 03 739430 24 04 Studenti > Matricola Cognome Nome 276445 Rossi Mario 787643 Bianchi Luca 787643 Neri Piero

introdotto il vincolo di integrità come PROPRIETA' che deve essere soddisfatta dalle istanze che rappresentano informazioni corrette per l'applicazione. Ogni vincolo può essere visto come un predicato > valore vero o falso. Vero >istanza soddisfa il vincolo >> a uno schema di base di dati associamo un insieme di vincoli e consideriamo corrette le istanze che soddisfano tutti i vincoli. Distinguiamo due categorie:

  • vincolo INTRARELAZIONALE > se il soddisfacimento è definito rispetto a singole relazioni della base di dati. A volte il coinvolgimento riguarda tuple ( o valori) le une separate dalle altre:
    • vincolo di tupla > vincolo che può essere valutato su ciascuna tupla indipendentemente dalle altre
    • vincolo di valori o vincolo di dominio > vincolo con riferimento a singoli valori. Impone una restrizione sul dominio dell'attributo.
  • Vincolo INTERRELAZIONALE > coinvolge più relazioni. VINCOLO DI TUPLA > esprimono condizioni sui valori di ciascuna tupla, indipendentemente dalle altre tuple. Un esempio sono le espressioni booleane ( AND-OR-NOT)con atomi che confrontano (operatori uguaglianza, disuguaglianza e ordinamento). es. (Voto ≥ 18) AND (Voto ≤ 30) (NOT (Lode = “Lode”)) OR (Voto = 30) la definizione permette anche espressioni più complesse purché definite sui valori di singole tuple. es. PAGAMENTI(Data, Importo, Ritenute, Netto) Netto = Importo – Ritenute CHIAVI un insieme k di attributi è superchiave di una relazione r se r non contiene due tuple distinte t1 e t2 con t1[k]=t[2k]

k è chiave di r se è una superchiave minimale di r (= non esiste un altra superchiave k' di r che sia contenuto k come sottoinsieme proprio). Ogni relazione ha una chiave. L'insieme di tutti gli attributi è superchiave per ciascuna relazione, quindi lo è per ciascuna relazione lecita. Schema di relazione > chiave >>garantisce l'accessibilità di tutti i valori di una base dati e la loro unica identificabilità. Permette di stabilire efficacemente quelle corrispondenze fra dati contenuti in relazioni diverse che caratterizzano il modello relazionale come modello basato sui valori. VINCOLI DI INTEGRITA' REFERENZIALE > fra un insieme di attributi X di una relazione R1 e un'altra relazione R2 è soddisfatto se i valori su X di ciascuna tupla dell'istanza di R1 compaiono come valori chiave dell'istanza di R2. Vedi esempi pag 36- CAP 3 > ALGEBRA E CALCOLO RELAZIONALE Algebra relazionale > linguaggio procedurale di tipo algebrico. Esso è costituito da un insieme di OPERATORI, definiti su relazioni e che producono ancora relazioni come risultati. > costruire espressioni che coinvolgono più operatori, allo scopo di formulare interrogazioni anche complesse.

  • Operatori insiemistici tradizionali > unione, intersezione, differenza
  • operatori specifici > ridenominazione, selezione e proiezione
  • operatore join> join naturale, prodotto cartesiano e theta-join
  1. UNIONE, INTERSEZIONE E DIFFERENZA le relazioni sono insiemi> ha senso definire su di esse gli operatori insiemistici tradizionali di unione, differenza e intersezione. Una relazione non è sempre un insieme di tuple, ma un insieme di TUPLE OMOGENEE(=definite sugli stessi attributi).
    • l'unione di due relazioni r1 e r2 definite sullo stesso insieme di attributi X è indicata con r1Ur2 ed è una relazione ancora su X contenente le tuple che appartengono a r1 oppure a r2 oppure a entrambe
    • intersezione di r1(X) e r2(X) è indicata con r1∩r2 ed è una relazione su X contenente le tuple che appartengono sia a r1 sia a r
    • differenza di r1(X) e r2(X) è indicata con r1-r2 ed è una relazione su X contenente le tuple che appartengono a r1 e non appartengono a r2.
  2. RIDENOMINAZIONE La limitazione che abbiamo dovuto imporre agli operatori insiemistici risulta pesante. La ridenominazione cambia il nome degli attributi lasciando inalterato il contenuto delle relazioni. Sia r una relazione definita sull'insieme di attributi X e sia Y un (altro)insieme di attributi con la stessa cardinalità. Inoltre, siano A 1 A 2 ...,Ak e B 1 B 2 ...Bk rispettivamente un ordinamento di attributi in X e un ordinamento per quello in Y. Allora la ridenominazione: ρ B1B2...Bk←A1A2...Ak(r) contiene una tupla t in t, definita come segue: t' è una tupla su Y e t'[Bi] = t[Ai], per i=1,....,k.

4)PROIEZIONE

Dati una relazione r(X) e un sottoinsieme Y di X, la proezione di r su Y (indicata con ∏Y(r)) è l'insieme di tuple su Y ottenute delle tuple di r considerando solo i valori su Y: ∏Y(r) = { t[Y] | tr } esempio IMPIEGATI Cognome Nome Reparto Capo Rossi Mario Vendite Gatti Neri Luca Vendite Gatti Verdi Mario Personali Lupi Rossi Marco Personale Lupi ∏Cognome,Nome (IMPIEGATI) Cognome Nome Rossi Mario Neri Luca Verdi Mario Rossi Marco ∏Y(r) contiene lo stesso numero di tuple di r se e solo se Y è superciave per r. infatti:

  • se Y è superchiave, allora r non contiene tuple uguali su Y; quindi ogni tupla da un contributo diverso dalla proiezione
  • se la posizione ha tante tuple quante l'operando, allora ciascuna tupla di r contribusice alla proiezione con valori diversi, quindi r non contiene coppie di tuple uguali su Y (questa è la definizione di superchiave). 5)JOIN (tradotto significa giunzione o congiunzione) è il più caratteristico dell'algebra relazionele > operatore che permette di correlare dati contenuti in relazioni diverse, confrontando i valori contenute in esse e utilizzando quindi la caratteristica fondamentale del modello (quella di essere basata sui valori). Esistono due varianti dell'operatore (riconducibili l'una all'altra):
  • join naturale > riflessioni di tipo astratto
  • theta-join > più rilevante sul punto di vista pratico

JOIN NATURALE > correla dati in relazione diverse, sulla base di valori uguali in attributi con lo stesso nome. Esempio r Impiegato Reparto Rossi Vendite Neri Produzione Bianchi Produzione r Reparto Capo Produzione Mori Vendite Bruni r1Xr Impiegato Reparto Capo Rossi Vendite Bruni Neri Produzione Mori Bianchi Produzione mori Risultato > unione insiemi di attributi degli operandi, e le sue tuple sono ottenute combinando le tuple degli operandi con valori uguali sugli attributi comuni (in questo caso Reparto) in generale > join naturale r 1 X r 2 di r 1 (X 1 ) e r 2 (X 2 ) è una relazione definita su X 1 X 2 (cioè unione insimi x1 e x2) >> r1 X r2 = {t su X 1 X 2 | t[X 1 ]r 1 e t[X 2 ]r 2 } >> tuple del risultato sono ottenute combinando tuple degli operandi con valori uguali sugli attributi comuni. Il grado della relazione ottenuta come risultato di un join è minore o uguale della somma dei gradi di due operandi, perchè gli attributi omonimi degli operandi compaiono una sola volta nel risultato. È molto frequente eseguire join sullabase di valori della chiave di una delle relazioni dati coivolte, esplicitando i riferimenti fra tuple che, sono realizzate per mezzo di valori (soprattutto valori di chiavi). A volte è definito anche un vincolo di integrità referenziale. (vedi es pag 52-53).

INTERROGAZIONE > funzionale e applicata a istanze di basi di dati produce più relazioni. >> dato uno schema R di base di dati, un interrogazione è una funzione che, per ogni istanza r di R, produce una relazione su un dato insieme di attributi X. E(r) lo indichiamo come risultato. Per esempi vedi libro CAP 4 > SQL: CONCETTI BASE (sezione 4.1 è da leggere) SQL > è il linguaggio di riferimento per basi di dati relazionali. DOMINI ELEMENTARI Mette a disposizione alcune famiglie di domini elementari, a partire dai quali si possono definire i dominio da associare agli attributi dello schema. Caratteri > dominio “caracter” permette di rappresentare singoli caratteri oppure stringhe. La lunghezza può essere fissa o variabile (per le stringhe di lunghezza variabile si indica la lunghezza massima). Per ogni schema si può definire una famiglia di caratteri di default (es. alfabeto latino o greco). La sintassi è: character [varying] [(Lunghezza)] varying=variazione carattere [character set NomeFamigliaCaratteri ] Tipi numerici esatti > permette di rappresentare solo valori esatti, interi o con una parte decimale di lunghezza prefissata. SQL mette a disposizione quattro diversi tipi numerici esatti: numeric [ ( Precisione [ , Scala ] ) ] decimal [ (Precisione [ , Scala ] ) ] integer smalliant numeric e decimal rappresentano numeri in base decimale. Numeric esprime un valore esatto, decimal costituisce un valore minimo. Il parametro di precisione specifica il numero di cifre significative (con un dominio decimal (4) si possono rappresentare valori tra -9.999 e +9.999). quando non è specificata, il sistema usa un valore caratteristico della implementazione. Il parametro scala si specifica la scala di rappresentazione, ovvero si indica quante cifre devono comparire dopo la virgola. Se la scala non è specificata, si assume che valga zero. Nel caso in cui interessa avere una rappresentazione della parte frazionaria e non è importante controllare in modo preciso la dimensione della rappresentazione decimale, allora diventa possibile usare i domini predefiniti integer e smalliant. Boolean > permette di rappresentare singoli valori booleani (true e false). In sql-2 era previsto a questo scopo un dominio bit, il quale però non è stato implementato dai sistemi e rimosso da SQL:2003. Manca data (vedi pdf)

DEFINIZIONE DELLE TABELLE (=relazione) una tabella SQL è costituita da una collezione ordinata di attributi e da un insieme equivalente di vincoli. Una qualsiasi sequenza di spazi e di caratteri di fine linea è equivalente a un singolo spazio; ciò deve essere sfruttato per aumentare la leggibilità dei comandi SQL, usando strutture allineate. La sintassi per definizione delle tabelle è: create table NomeTabella ( NomeAttributoDominio [ ValoreDiDefault ] [ Vincoli ] { , NomeAttributo Dominio [ ValoreDiDefault ] [ Vincoli ]} AltriVincoli ) ogni tabella viene definita associandole un nome ed elencando gli attributi che ne compongono lo schema. Per ogni attributo si definiscono nome, un dominio ed eventualmente un insieme di vincoli che devono essere rispettati dai valori dell'attributo. Dopo si possono definire i vincoli che coinvolgono più attributi della tabella. SPECIFICA DI VALORI DI DEFAULT in corrispondenza di ogni dominio e attributo. Questo termine permette di specificare il valore di default > valore che deve assumere l'attributo quando viene inserita una riga nella tabella senza che sia specificato un valore per l'attributo stesso. Quando il valore non è specificato > nullo. Sintassi per la specifica dei valori di default è: default < GenericoValore |user|null > Generico valore > rappresenta un valore compatibile con il dominio. L'opzione user impone come valore di default l'identificativo dell'utente che esegue il comando di aggiornamento della tabella. Quando un attributo o dominio è definito a partire da un dominio per il quale è già stato specificato un valore di default, l'eventuale nuovo valore di default ha la proprietà e diventa il valore effettivo. Nulla> valore di default di base. VINCOLI INTRARELAZIONALI > NOT NULL, UNIQUE, PRIMARY KEY Vincolo > proprietà che devono essere verificate da ogni istanza della base di dati. Il costrutto più potente per specificare vincoli generici è il costrutto check > richiede i formulare delle interrogazioni sulla base di dati. NOT NULL il valore nullo è particolare perchè esprime l'assenza di informazione. Può rappresentare diverse informazioni. SQL non permette di distinguere tra le diverse interpretazioni del valore nullo. Le applicazioni che hanno bisogno di distinguere tra questi diversi casi hanno bisogno di soluzioni ad hoc. Il vincolo not null > valore nullo non è ammesso come valore dell'attributo ; in tal caso il valore dell'attributo deve essere sempre specificato (tipicamente in fase di inserimento). Se l'attributo è associato a un valore di default diverso dal valore nullo diventa possibile effetuare l'inserimento anche senza fornire un valore per l'attributo (assegnato valore di default)

  • set null > all'attributo referente viene assegnato il valore nullo al posto del valore modificato dalla tabella esterna
  • set default > attributo referente viene assegnato il valore di default al posto del valore modificato nella tabella esterna
  • no action > azione di modifica non viene consentita e il sistema non ha bisogno di riaprire la violazione. Per le violazioni dalla cancellazione di un elemento della tabella esterna si ha a disposizone lo stesso insieme di reazioni:
  • cascade > tutte le righe della tabella interna corrispondenti alla riga cancellata vengono cancellate
  • set null > all'attributo referente viene assegnato il valore nullo al posto del valore cancellato nela tabella esterna
  • set default > all'attributo referente viene assegnato il valore di default al posto del valore cancellato nella tabella esterna
  • no action > cancellazione non viene consentita per scrittura vedi pag 102 DICHIARATIVITA' DI SQL SQL esprime le interrogazioni in modo dichiarativo > si specifica l'obiettivo dell'interrogazione e non il modo in cui ottenerlo. Segue i principi del calcolo relazionale e si contrappone a linguaggi di interrogazione procedurali. L'interrogazione per essere eseguita viene passata all'ottimizzatore di interrogazioni (query optimizer) > componente dell DBMS il quale analizza l'interrogazione e formula a partire da questa un'interrogazione equivalente nel linguaggio procedurale interno del sistema di gestione di base di dati. Questo linguaggio procedurale è nascosto all'utente. INTERROGAZIONI SEMPLICI le operazioni di interrogazione in SQL vengono specificate per mezzo dell'istruzione select. Select > clausola select (target list) + clausola form+ clausola where vedi esempio pag 107 Clausola select > specifica gli elementi dello schema della tabella del risultato. Come argomento della clausola select può anche comparire un carattere speciale * > rappresenta le selezione di tutti gli attributi delle tabelle elencate nella clausola from. Possono comparire gerarchiche espressioni sul valore degli attributi di ciascuna riga. comprende una variabile di identificazione singola. Clausola form > quando si desidera un'interrogazione che coinvolge righe appartenenti a più di una tabella, si pone come argomento della clausola from l'insieme di tabelle alle quali si vuole

accedere. Un join può essere specificato indicando in modo esplicito le condizioni che esprimono il legame tra le diverse tabelle. Clausola where > ammette come argomento un'espressione booleana costruita combinando predicati semplici con gli operatori and, or e not. Ciascun presicato semplice usa gli operatori =, <>, <, >, <=, >= per confrontare da un lato l'espressione costruita a partire dai valori degli attributi per la riga, e dall'altro lato un valore costante o un'altra espressione. Nel caso più semplice l'espressione è rappresentata dal nome di un attributo. Quando i predicati sono separati dall'operatore and > selezionate le righe per cui tutti i predicati sono veri; quando i predicati sono separati da or > selezionate solo le righe per cui almeno uno dei predicati risulta vero. L'operatore logico not è unario e inverte il valore di verità del predicato. La sintassi assegna la precedenza di valutazione all'operatore not ma non definisce una relazione di precedenza tra gli operatori and e or. Operatore like > confronto tra stringhe che permette di effettuare confronti con stringhe in cui compaiono caratteri speciali. Il primo carattere è rappresentare nel confronto un carattere arbitrario, il secondo una stringaa di un numero arbitrario di caratteri arbitrari. Gestione dei duplicati > in SQL si può avere una tabella con più righe uguali ovvero righe con gli stessi valori per tutti gli attributi. Permette duplicati all'interno delle tabelle, lasciando a chi scrive l'interrogazione di esplicitare quando l'operazione di rimozione dei duplicati è necessaria. L'eliminazione dei duplicati è specificata con la parola chiava distinct, da porre subito dopo select. JOIN INTERNI ED ESTERNI inner join > rappresenta il tradizionale thetra join dell'algebra relazionale. Con il join interno le righe vengono coinvolte> sottoinsieme delle righe di ciascuna tabella. Outer join > left, right e full. Left > risultato il join interno esteso con le righe della tabella che compare a sinistra per le quali non esiste una corrispondente riga nella tabella di destra Right > conserva le righe escluse dalla tabella di destra Full > restituisce il join interno esteso con le righe escluse di entrambe le tabelle. USO DI VARIABILI Nelle interrogazioni SQL è possibile associare un nome alternativo, detto ALIAS alle tabelle che compaiono come argomento della clausola from. La funzionalità può essere sfruttata per far riferimento a una tabella in modo compatto, ricorrendo a brevi alias ed evitando così di scrivere per esteso il nome della tabella tutte le volte che ne viene richiesto l'uso. Vi sono altre ragioni per usare l'alias: è possibile far accesso più volte alla stessa tabella come avviene nel calcolo relazionale quando si usano più variabili associate alla stessa tabella e in modo simile all'uso dell'operatore di ridenominazione ρ dell'algebra relazionale. Tutte le volte che si introduce un alias per una tabella si dichiara in effetti una variabile che rappresenta le righe della tabella di cui è alias. Quando una tabella compare più volte è necessario considerare l'alias come una nuova variabile.