
















Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
INFORMATICA DOCUMENTALE parti libro da studiare per l'esame
Tipologia: Appunti
1 / 24
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!

















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:
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:
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:
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:
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.
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] | t ∈ r } 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:
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)
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.