La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Archivi e basi di dati Vito Perrone

Presentazioni simili


Presentazione sul tema: "Archivi e basi di dati Vito Perrone"— Transcript della presentazione:

1 Archivi e basi di dati Vito Perrone
Corso di Informatica A per Gestionali

2 Memorie di massa

3 Indice Memorie di massa Organizzazione degli archivi e basi di dati
Basi di dati relazionali

4 Introduzione Memoria di tipo persistente Obiettivi:
Un dato è persistente se è mantenuto integralmente quando il calcolatore viene spento oppure si verifica un errore Obiettivi: Memorizzare in modo compatto grandi quantità di dati Accesso efficientemente e selettivo ai dati Possiamo classificare i dispositivi di memoria di massa in: Dispositivi ad accesso sequenziale (nastri) Dispositivi ad accesso diretto (dischi) Tipicamente, sono basati su tecnologia magnetica La tecnologia ottica è sempre più diffusa (per i dischi)

5 Nastri (1) Accesso sequenziale
Sul nastro magnetico sono incise delle piste orizzontali, parallele fra loro I dati vengono registrati serialmente su ogni traccia Il nastro scorre al di sopra della testina di lettura/scrittura Ai dati sono aggiunti alcuni bit di controllo per consentire il rilevamento di errori (es. bit di parità) Bit 1 2 3 4 5 6 7 8 Bit di parità

6 Nastri (2) I dati sono organizzati sul nastro in zone contigue, dette record Sono previste zone prove di dati (gap) tra i record e all’inizio Parametri principali: Densità di memorizzazione: è misurata in bit per inch (bpi) Capacità di memorizzazione = densità  lunghezza (in pollici) Velocità di movimento del nastro Alcuni nastri hanno le tracce poste diagonalmente e sono letti da testine rotanti (scansione elicoidale) I nastri sono attualmente impiegati solo per il backup

7 Dischi (1) Accesso diretto
Disk-pack: un certo numero di piatti coperti da uno strato magnetico Ciascun piatto ha una serie di cerchi concentrici (tracce) su entrambi i lati Le tracce sono suddivise in spicchi di ugual grandezza (settori) Le testine di lettura/scrittura si spostano (tutte insieme) radialmente tra le varie tracce

8 Dischi (2) L’inizio e la fine dei settori sono marcati con sequenze particolari di bit (formattazione) Blocco di ingresso/uscita: gruppo di dati che vengono letti o scritti con un’unica operazione di ingresso/uscita Ciascun blocco è individuato dalla terna: (num. superficie, num. traccia, num. settore) Una zona di memoria (il buffer) contiene i dati prima che vengano scritti su disco o dopo essere stati letti da disco

9 Dischi (3) Accesso ai dati: Quindi: ti/u = tseek + tlat + ttrasf
Spostamento della testina verso la traccia richiesta (tempo di seek) Attesa del passaggio del settore richiesto (tempo di latenza) Mediamente, pari a metà del tempo di rotazione Trasferimento dei dati da/verso il buffer (tempo di trasferimento) Quindi: ti/u = tseek + tlat + ttrasf Cilindro: l’insieme delle tracce, appartenenti a tutte le superfici, poste alla stessa distanza dal centro

10 Altre memoria di massa Floppy disk: magnetico Dischi ottici
CD-ROM CD-R/RW DVD Chiavi USB: memorie a stato solido Flash EPROM

11 Organizzazione degli archivi e basi di dati

12 Organizzazione degli archivi
Le informazioni vengono organizzate in memoria in record logici Blocchi di ingresso/uscita e record logici: In un medesimo blocco di ingresso/uscita può trovare posto un certo numero di record logici Esistono record logici così grandi da occupare più blocchi di ingresso/uscita L’accesso ad un record logico comporta il trasferimento di uno o più blocchi di ingresso/uscita Coefficiente di riempimento di un file: numero di byte allocati a record logici nel file numero di byte dei blocchi fisici allocati al file

13 Basi di dati Base di dati (o database): insieme di dati raccolti in base a precise regole e organizzati in strutture piuttosto rigide DBMS: sistema software che organizza e gestisce basi di dati Opera al di sopra del sistema operativo Offre linguaggi specifici per l’organizzazione e la gestione dei dati Offre meccanismi efficienti per l’accesso ai dati

14 Basi di dati e archivi separati (1)
Dati gestiti basandosi sui file Più applicazioni accedono ai file Problemi: Inconsistenza e ridondanza dei dati Riservatezza dei dati Integrità dei dati Concorrenza Progr. 1 Progr. 2 Progr. 3 File File modificati

15 Basi di dati e archivi separati (2)
Integrità dei dati I dati devono sempre essere consistenti con un insieme di vincoli logici Ad es. in un’anagrafe ogni dato riguarda una persona, che ha un padre e una sequenza di figli. Ovviamente se esiste la persona P avente padre P1 occorre che P compaia tra i figli di P1 Se il programma che aggiorna i padri è diverso da quello che registra le nascite si possono avere momenti in cui i dati non sono consistenti

16 Basi di dati e archivi separati (3)
Dati gestiti da un DBMS Vantaggi: I dati hanno una sola rappresentazione (meno ridondanza ed inconsistenza) L’accesso alla base di dati viene disciplinato dal DBMS (controllo, privatezza, ecc.) Alcuni vincoli di integrità possono essere definiti e verificati in modo automatico Gestione ottimale della memoria di massa Gestione degli accessi concorrenti Progr. 1 DBMS Base di dati

17 Modelli per la gestione dei dati
Modello dei dati: Gerarchico: basato su strutture ad albero (metà anni 60) Reticolare: basato su strutture a grafo (Codasyl , 1978) Relazionale: basato sul concetto di insieme e sulla strutturazione dei dati tramite tabelle (inizio anni ’80)) Ad oggetti: estende alle basi di dati alcune caratteristiche dei linguaggi di programmazione orientati agli oggetti (inizio anni ’90) Schema di una base di dati: descrizione dei dati di uno specifico contesto applicativo Definita tramite un attività detta database design Istanza (od occorrenza) di una base di dati: valore assunto dalla base di dati in un particolare istante di tempo

18 Categorie di linguaggi
Data Definition Language (DDL): Utilizzato per definire lo schema della base di dati Lo schema viene salvato nel dizionario dei dati Data Manipulation Language (DML): Per formulare interrogazioni (o query) sulla base di dati Per modificare il contenuto della base di dati Nel seguito vedremo il linguaggio SQL (che supporta entrambi questi aspetti)

19 Livelli di astrazione Livelli di astrazione: Livelli di indipendenza:
Fisico: descrive la base di dati come un insieme di record in memoria di massa Logico: descrive la struttura di ciascun dato e i collegamenti tra dati diversi Esterno: presenta i dati così come vengono visti da un particolare utente o da una classe di utenti Livelli di indipendenza: Fisica: ridefinire il livello fisico senza modificare il livello logico Logica: definire nuovi schemi esterni senza modifica la struttura logica Descrizione esterna 1 Descrizione esterna 2 Descrizione esterna n Descrizione logica Descrizione interna Utente 1 Utente 2 Utente 3 Utente 4 Utente n Archivi

20 Transazioni Transazioni: non lasciano mai la base di dati in uno stato inconsistente Proprietà “acide” delle transazioni: Atomicità: vi sono solo due possibili terminazioni Successo: tutte le attività della transazione sono andate a buon fine, la base di dati è aggiornata (commit) Fallimento: qualche attività della transazione non va a buon fine, la transazione fallisce tutta, la base di dati non viene modificata (rollback) Consistenza: i vincoli di integrità dei dati non sono mai violati Isolamento: transazioni concorrenti sono isolate le une dalle altre Durabilità: una volta completata con successo, l’effetto della transazione sulla base di dati è permanente

21 Utenti di una base di dati
Data Base Administrator (DBA): Definizione degli schemi esterni, logico e fisico Definizione dei vincoli di integrità e dei requisiti di riservatezza Per questi compiti, il DBA utilizza il DDL Terminalista: Interagisce con un’applicazione che a sua volta si interfaccerà con la base di dati Programmatore: Scrive le applicazioni e le rende disponibili agli utenti Utilizza il DML per interfacciare applicazione e base di dati Utente occasionale: Formula query non previste dalle applicazioni, usando il DML

22 Basi di dati relazionali

23 Base di dati relazionale
Relazione, una tabella caratterizzata da: Un numero fisso di colonne (dette attributi); ciascuna colonna assume valori estratti da uno stesso dominio Un numero variabile di righe (dette tuple) Grado di una relazione: il numero di colonne Cardinalità di una relazione: il numero di righe Schema di una relazione: il nome della relazione seguito dai nomi dei suoi attributi; a ciascun attributo è associato un dominio Istanza di una relazione: insieme delle tuple presenti nella base di dati in un determinato istante (quindi, varia nel tempo) Base di dati relazionale, un insieme di relazioni: Schema di una base di dati: l’elenco delle relazioni Istanza di una base di dati: insieme delle istanze delle relazioni

24 Esempio: schema base di dati
Relation CONTO-CORRENTE (NUMERO-CC: integer, NOME: char (20), INDIRIZZO: char (20), SALDO: decimal (14, 2)). Relation MOVIMENTO (NUMERO-CC:integer, DATA-MOV: date, NUMERO-MOV: integer, IMPORTO: decimal (14, 2), CAUSALE: char (1)).

25 Esempio: istanza base di dati
CONTO-CORRENTE NUMERO-CC NOME INDIRIZZO SALDO 1 Rossi v. Anemoni 5 3,678.00 2 Bianchi v. Bolla 64 664.00 3 Brunelli v. Po 41 6,777.50 4 Grandi v. Romolo 3 3,400.00 MOVIMENTO NUMERO-CC DATA-MOV NUMERO-MOV IMPORTO CAUSALE 1 V 2 P 3 +2,700.00 S 4 +1,850.40 A

26 Alcune considerazioni
Siamo vincolati ad introdurre informazioni che soddisfino lo schema Ad es. nella relazione Conto_corrente possiamo introdurre solo il nome e l’indirizzo del cliente, non il suo numero di telefono o il codice fiscale. Per inserire queste informazioni dovremmo prima modificare lo schema Partendo dalle relazioni esistenti è possibile ricavare informazioni non direttamente disponibili nel DB, ad es. l’elenco dei clienti che abitano in una certa zona e hanno versato più di un milione nel 1995 Questo tipo di operazioni viene fatto attraverso il query language (o linguaggio di interrogazione del DB)

27 Accesso alle tuple L’accesso ad una certa tupla (o ad un insieme di tuple) di una relazione è sempre ed esclusivamente di tipo associativo (non posizionale): avviene in base al valore contenuto nella tupla Ovvero, posso chiedere al DBMS il saldo di Rossi trova la tupla in cui l’attributo Nome vale “Rossi” e leggi l’attributo Saldo Non posso chiedere il valore dell’attributo Nome della terza tupla le tuple non sono ordinate e non c’è modo di fare un accesso diretto

28 Chiavi nelle relazioni
A causa dell’accesso associativo, è importante dotare le relazioni di una “chiave” Una chiave è un insieme minimo di attributi il cui valore identifica univocamente una tupla Serve per poter accedere ad una singola tupla Ad es. nel caso del Conto_corrente si vuole poter aggiornare il Saldo di una specifica tupla, corrispondente ad un ben preciso conto corrente. La chiave sarà pertanto l’attributo Num_CC Nel caso del Movimento, la chiave sarà data dall’insieme degli attributi Num_CC, Data_mov, Num_mov C è una chiave per una relazione R se valgono le seguenti proprietà: univocità: non possono esistere due tuple di R con lo stesso valore di C minimalità: eliminando un attributo da C la proprietà precedente decade Per una stessa relazione possono esistere più chiavi candidate La chiave primaria della relazione sarà una tra queste Spesso sulla chiave primaria non si accettano valori nulli

29 Restrizione e chiave Restrizione: di una tupla t sugli attributi A di R, indicata con t[A], è data dalla lista dei valori assunti da t sugli attributi A di R Chiave di una relazione R: un sottoinsieme K degli attributi di R, tale che valgano: Unicità: in una qualunque istanza di R, non possono esistere due tuple distinte di R la cui restrizione su K sia uguale Minimalità: non è possibile sottrarre a K un attributo senza che la condizione di unicità cessi di valere Ogni relazione deve avere almeno una chiave Se la relazione ha più chiavi, una di esse sarà la chiave primaria CONTO-CORRENTE (NUMERO-CC; NOME, INDIRIZZO, SALDO) MOVIMENTO (NUMERO-CC, DATA-MOV, NUMERO-MOV, IMPORTO, CAUSALE)

30 Le operazioni Le operazioni relazionali
Ci sono operazioni che servono per combinare relazioni, limitandosi a leggere il contenuto del DB. Restituiscono sempre una relazione Operazioni unarie: hanno come operando un’unica relazione Operazioni binarie: hanno come operando due relazioni Operazioni insiemistiche: corrispondono alle solite operazioni di unione, differenza e intersezione Ci sono operazioni che servono a modificare il contenuto del DB Aggiunta e riomozione e modifica di record Ci sono operazioni che servono a modificare lo schema del DB

31 Le operazioni unarie - selezione
La selezione restituisce una relazione che è strutturalmente identica all’operando (ha lo stesso schema), ma contiene un sottoinsieme delle tuple dell’operando Fa una selezione delle tuple della relazione “operando”, utilizzando un criterio di selezione: Il criterio di selezione è una espressione logica (predicato) che viene valutata (vero/ falso) su ciascuna tupla: le tuple per cui l’espressione vale “vero” sono selezionate e fanno parte del risultato, le altre, per cui l’espressione vale “falso” sono scartate.

32 Le operazioni unarie – selezione Un Esempio
Selezioniamo dalla relazione Conto_corrente le tuple in cui Saldo >

33 Le operazioni unarie - proiezione
Mentre la selezione elimina delle righe della tabella operando, la proiezione elimina delle colonne Contrariamente al caso della selezione il criterio di eliminazione non dipende da un’espressione da valutare, ma si dà direttamente l’insieme degli attributi che vanno mantenuti

34 Le operazioni unarie – proiezione Un Esempio
Proiettiamo la relazione Movimento sugli attributi Data_mov e Importo Nota: eliminando delle colonne può darsi che tra le tuple così ottenute esistano dei duplicati. Poiché le relazioni sono insiemi, i duplicati non sono ammessi, e quindi vengono eliminati Ad es. il movimento del CC 1 del è un duplicato e viene eliminato

35 Le operazioni binarie – prodotto cartesiano
Il prodotto cartesiano crea una relazione avente per tuple tutte le possibili combinazioni ottenibili giustapponendo una tupla del primo operando con una tupla del secondo Esempio

36 Le operazioni binarie – join naturale
Il prodotto cartesiano raramente è utile, perché generalmente si vogliono ottenere solo le combinazioni di tuple tra le quali esiste una certa corrispondenza, o vale una certa proprietà join naturale: si combinano tra loro solo le tuple in cui valori delle relazioni in due attributi aventi dominio uguale (e nome uguale) verificano la proprietà di uguaglianza Nella tabella risultante, si considera la colonna uguale una volta sola

37 Le operazioni binarie – join naturale Un Esempio

38 Il linguaggio SQL E’ presente in tutti i DBMS relazionali
Standard ANSI e ISO Mette a disposizione sia un DDL, sia un DML DDL: permette di creare lo schema della base di darti CREATE TABLE: crea una relazione a livello logico CREATE INDEX: crea indici per una certa relazione; gli indici permettono di accedere ai dati con maggiore efficienza DROP TABLE: cancella una relazione DROP INDEX: cancella un indice DML: permette di scrivere le query Basato sull’algebra relazionale Operatori: selezione, proiezione, join, unione e differenza

39 Il linguaggio SQL: select
L’istruzione che permette di formulare le query Sintassi: SELECT nomi di attributi FROM nomi di relazioni WHERE condizioni di ricerca sui dati Le tre clausole individuano rispettivamente: gli attributi da includere nel risultato; le relazioni da cui estrarre i dati; la condizione di ricerca. Questa condizione può essere assai complessa e coinvolgere nel suo interno altri blocchi SQL

40 Il linguaggio SQL: esempi 1
La selezione riportata nell’esempio precedente si scrive: SELECT * FROM Conto_corrente WHERE Saldo > La proiezione dell’esempio precedente si scrive: SELECT Data_mov, Importo FROM Movimento Nota: nei DBMS commerciali i duplicati sono ammessi. Per eliminarli occorre indicarlo esplicitamente, attraverso la parola chiave DISTINCT: SELECT DISTINCT Data_mov, Importo

41 Il linguaggio SQL: esempi 2
Una singola espressione SQL può indicare selezione e proiezione insieme: SELECT Num_CC, Importo FROM Movimento WHERE Data_mov = L’operazione descritta seleziona le tuple in cui l’attributo Data_mov ha il valore rescritto, poi sopprime gli attributi diversi da Num_CC e Importo Join: Voglio sapere i nomi dei correntisti interessati da ciascun movimento: devo combinare le tuple di Conto_corrente con le tuple di Movimento aventi uguale Num_CC In SQL scrivo: SELECT * FROM Conto_corrente, Movimento WHERE Conto_corrente.Num_CC =Movimento.Num_CC

42 Il linguaggio SQL: esempi 3
Il join è combinabile con la selezione e la proiezione in un’unica operazione SQL: semplicemente il predicato non indicherà solo la corrispondenza tra tuple, ma anche un criterio cui le tuple del risultato dovranno essere conformi Voglio conoscere importo e causale dei movimenti di Rossi del : SELECT Importo, Causale FROM Conto_corrente, Movimento WHERE Conto_corrente.Num_CC = Movimento.Num_CC AND Nome = “Rossi” AND Data_mov =

43 Il linguaggio SQL: le operazioni insiemistiche
Corrispondono alle normali operazioni sugli insiemi Occorre notare che per avere come risultato dei veri insiemi occorre sempre indicarlo esplicitamente usando la keyword DISTINCT Altrimenti ad es. l’unione darà semplicemente un risultato contenente le tuple del primo operando e quelle del secondo, duplicati compresi In SQL queste operazioni si chiamano rispettivamente UNION MINUS INTERSECT

44 Il linguaggio SQL: esempio 4
Estraiamo i CC che hanno un saldo maggiore di e per i quali non è stato fatto alcun movimento per un importo maggiore di SELECT Num_CC FROM Conto_corrente WHERE Saldo > MINUS FROM Movimento WHERE Importo >

45 Alcune considerazioni
L’SQL supporta uno stile di interrogazione dichiarativo, nel senso che le query specificano le caratteristiche del risultato ma non indicano come estrarlo Ad es. nelle selezioni non diciamo se la tabella deve essere scandita dall’alto o dal basso, o quale parte della condizione deve essere valutata per prima Le query vengono interpretate dal DBMS, che provvede anche a ottimizzarle Ad es. dovendo fare un join e una selezione conviene fare la selezione prima, per avere meno tuple su cui valutare la condizione del join

46 Le applicazioni SQL non è adatto agli utenti finali delle basi di dati
Si realizzano applicazioni che permettono un’interazione semplice e schematica L’informazione scambiata con l’utente durante l’esecuzione di un’applicazione è mostrata in una maschera (o form) Esistono strumenti software per la gestione delle maschere che permettono al programmatore di: Definire le maschere Associare ogni maschera l’operazione da eseguire sulla base di dati L’utente finale interagisce con le maschere e non vede né l’SQL, né lo schema della base di dati

47 Maschere: definizione

48 Maschere: uso

49 Rapporti (o report) Ulteriore modo per estrarre informazioni dalla base di dati Caratteristiche tipiche: Destinati alla stampa o ad essere visualizzati in pagine Web Contengono grandi quantità di dati Generati periodicamente, senza interazioni con l’utente Esistono strumenti software per la definizione dei rapporti (generatori di report)

50 Altri linguaggi Linguaggi di quarta generazione
Consentono di realizzare applicazioni specificandole a un alto livello Il progettista usa tali linguaggi interagendo con loro tramite interfacce a menu e maschere

51 Schemi concettuali e logici: Esempio di riferimento

52 Schemi concettuali e logici: Esempio di riferimento

53 Esercizi Visualizzare il nome e il peso specifico degli inquinanti prodotti nella città di Torino Visualizzare tutte le informazioni relative agli inquinanti prodotti nella città di Torino Visualizzare tutte le città in cui viene prodotto un inquinante Visualizzare il nome delle aziende con sede a Milano e grado di pericolosità superiore o pari a 20 Visualizzare le coppie di aziende ed inquinanti tali che entrambi si trovino nella medesima città Visualizzare il nome degli inquinanti scaricati durante la lavorazione del prodotto con codice P3

54 Esercizi Visualizzare le coppie di nomi di città tali che un azienda che ha sede nella prima città scarichi nella seconda un inquinante relativo a un qualsiasi prodotto Visualizzare le coppie di aziende tali che abbiano sede nella stessa città SELECT A.NomeA, B.NomeA, FROM AZIENDA AS A, AZIENDA AS B WHERE A.Città = B.Città AND A.CodA < B.CodA; Visualizzare i nomi delle aziende che producono inquinanti a Milano, a Venezia, o in entrambe le città

55 Esercizi Visualizzare i nomi delle aziende che scaricano inquinanti a Milano Ripetere l’esercizio usando select annidate Visualizzare i nomi delle aziende che non scaricano mercurio SELECT NomeA FROM AZIENDA WHERE CodA NOT IN (SELECT CodA FROM SCARICO,INQUINANTE WHERE SCARICO.CodI = INQUINANTE.CodI AND NomeI = “Mercurio”);

56 Progettare le Basi di Dati
Progettare un DBMS vuol dire essenzialmente definirne lo schema capire quali tabelle servono definire lo schema di ciascuna tabella creare le chiavi La progettazione delle query e delle modalità di interazione fa invece parte della progettazione delle applicazioni

57 Progettare le Basi di Dati
Innanzitutto si cerca di produrre un modello concettuale dei dati da gestire Il modello è concettuale in quanto prescinde dal modello logico dei dati adottato dal particolare DBMS scelto Un formalismo molto usato per la descrizione concettuale dei dati è costituito dai diagrammi Entity/ Relationship (Chen) Entità: ciò che è di interesse per il sistema Relazioni: legami di diversa natura tra entità Attributi: caratteristiche (proprietà) delle entità e delle relazioni

58 Diagramma E-R: un esempio
Un sistema per la gestione dell’allocazione delle aule per i corsi Universitari Entità:

59 Diagramma E-R: un esempio
Relazioni:

60 Diagramma E-R: un esempio
Molteplicità delle relazioni: indicata graficamente dal “ventagl io” ad una estremità della relazione; ad es: Aula--<-Corso, indica che una entità Aula può ospitare più Corsi ma un Corso può essere ospitato in una sola aula (relazione uno-molti) Corso->---<-Studente indica che una entità Studente può seguire più Corsi, e viceversa un Corso può essere seguito da più studenti (relazione molti-molti):

61 Diagramma E-R: un esempio
Attributi:

62 Progettare del DB a partire dal modello E-R
Un diagramma E-R può essere “trasformato” in uno schema logico di DB con qualunque data model Tuttavia, i diagrammi E-R sono particolarmente adatti al progetto di DB relazionali, perché la trasformazione di un diagramma E-R in uno schema relazionale è molto semplice: un’entità diventa una relazione (tabella) un attributo di un’entità diventa un attributo di una relazione le relazioni tra entità possono diventare riferimenti diretti da una tupla di una relazione ad una tupla di un’altra relazione oppure possono dar luogo ad una relazione aggiuntiva, a seconda dei casi

63 Traduzione di relazioni 1-1
E1(IdE1: integer, A1: char(1), IdE2: integer) E2(IdE2: integer, A2: char(1))

64 Traduzione di relazioni 1-n
E1(IdE1: integer, A1: char(1), IdE2: integer) E2(IdE2: integer, A2: char(1))

65 Traduzione di relazioni 1-n
Si possono evitare le ridondanze rappresentando la relazione inversa

66 Traduzione di relazioni n-n
In questo caso si deve introdurre una tabella apposita per la relazione R(IdE1: integer, IdE2: integer)


Scaricare ppt "Archivi e basi di dati Vito Perrone"

Presentazioni simili


Annunci Google