vuoi
o PayPal
tutte le volte che vuoi
BASI DATI - INTRODUZIONE
I Database sono una componente con cui ci interfacciamo ogni giorno (prenotazioni, operazioni bancarie ecc). Il sistema organizzativo è un insieme di risorse (umane e non) e regole che perseguono obiettivi attività svolgendo coordinatamente (processi). Esempi di sistemi organizzativi sono banche, università, aziende ecc. Le risorse di una azienda (o ente) sono persone, denaro, materiali, informazioni ecc.
Il sistema informativo è una porzione del che segue, gestisce processi informativi (informazioni) di interesse per quell'organizzazione.
N.B. Questi sistemi possono essere anche fisici come agende, volumi cartacei ecc infatti non avere un sistema informativo non significa avere per forza un sistema informatico. Quindi questo sistema è un componente o sottosistema di una organizzazione che gestisce/elabora le informazioni utilizzate per realizzare gli scopi dell'organizzazione.
Un Database è una...
Una porzione di un sistema informatico, ed ha varie definizioni.
- Definizione: Un Database (DB) è una collezione di dati correlati (non è un database una accozzaglia di dati senza una correlazione)
- Definizione: Un DB è un insieme organizzato di dati per il supporto allo svolgimento di attività di un sistema organizzativo.
I dati sono dei "fatti noti", con un significato implicito, memorizzabili. I dati dopo essere stati elaborati diventano informazioni logicamente. Quindi il DB è una collezione di dati correlati con un significato in un determinato contesto. La dimensione e la complessità di un Database dipendono dal tipo di sistema informativo.
Esempio: Database università contenente quattro file: STUDENTE, CORSO, PREREQUISITI ed ESAME. Questi file corrispondono alle "cose" da gestire; in ogni file è memorizzato un record per ogni dato, che sono omogenei. Di ogni record bisogna specificare i campi o attributi.
il tipo di campo sono STUDENTE CORSO PREREQUISITI ESAME. Oltre a specificare i dati in file è importante realizzare dei collegamenti tra i record. Però dopo averlo creato bisogna popolarlo inserendo i dati veri e propri; poi bisogna manipolarlo ed aggiornarlo. Concetti base dei DBMS (Database Management System) Un DBMS è una collezione di programmi (poiché ha vari moduli) che permette di gestire basi dati (simile al S.O.); è un software general-purpose che supporta l'utente nella progettazione, manipolazione di un DB. I dati vengono memorizzati in strutture dati efficienti, scalabili e flessibili. Un DBMS deve permettere di: - Definire un DB cioè mettere a disposizione strutture e linguaggi per memorizzare tipi, strutture e vincoli (di dominio e referenziali); - Costruire il DB supportando la memorizzazione dei dati su memoria di massa con la quale il DBMS interagisce; - Manipolare il DB che consente di interrogare (trovare dati), aggiornare il DB eGenerare un report dei dati.
DBMS!=DATABASE perché una Base Dati è una collezione di dati gestita dal DBMS (software). (word!=file.txt).
Esempi di DBMS sono My Access, Oracle, Mysql, ecc.
Un DB può essere gestito anche creando una libreria di programmi per accedere ai dati nei file, quindi costruendo un DBMS special-purpose (può essere vantaggioso per creare piccole applicazioni).
Però tutta la logica della struttura (come i vincoli) dobbiamo specificarla noi.
Il DBMS tramite dei suoi compilatori separa i dati dalle informazioni sulla definizione di DB chiamate metadati (come campi, vincoli, record) che memorizza nel catalogo di sistema.
Il DBMS ogni volta che svolgiamo una operazione consulta sempre il catalogo per sapere qual è la struttura dei file e per evitare operazioni illecite.
Quindi un DBMS non ha solo un overhead di tempo ma anche di spazio ma ci aiuta, appunto, per la memorizzazione di metadati.
Es. Type Studente = record Nome: string;
PROPRIETÀ DI UN DATABASE
sopravvivere- Dati persistenti cioè devono all’esecuzione del programma, a guasti edisastri;
- Dati condivisi: cioè il database è centralizzato ma più settori di una azienda possonoaccedergli ma possono esserci alcuni problemi come ridondanza, incoerenza,inconsistenza
Un DBMS multiutente, permette a più utenti di accedere contemporaneamente al Databaseincludendo tra i vari moduli software:
- Controllo dell’accesso (chi può accedere/modificare un DB);
- Controllo della concorrenza per l’aggiornamento corretto (bloccando i datidurante.);
- Garantire affidabilità (resistenza a malfunzionamenti hardware e software);
- Gestione delle transazioni.
Le transazioni sono processi complessi, che garantiscono l’atomicità; se c’è un problemadurante una operazione o si annulla o si riprende dove si è bloccata, NON possono
esseredivise a metà Quando si effettua una transazione si scrive su un journal di dispositivo il valore aggiornato e quindi, se si blocca il sistema, si possono recuperare da lì i dati (anche il backup aiuta). Tutto questo permette di garantire l'affidabilità. Le transazioni possono essere viste in due modi:
- Per l'utente sono programmi semplici che realizzano attività frequenti (prelievi, prenotazioni, ecc.) con poche eccezioni; sono realizzate con un linguaggio host come java o c;
- Per il sistema sono una sequenza indivisibile di operazioni atomiche.
DBMS E FILE PROCESSING
Ci sono due approcci per interfacciarsi con un database:
- In un approccio file processing l'utente si interfaccia con il filesystem scrivendo un programma apposito, quindi salva/accede/modifica i dati in file, che deve avere una descrizione della struttura del file stesso, non essendoci il catalogo di sistema. Questo crea rischi di incoerenza fra le descrizioni contenute
nei programmi e nei file stessi (soprattutto se ci sono più utenti);
- Se si usa il DBMS è lui che fa da intermediario tra utente e filesystem, che consulta una porzione del DB cioè il catalogo dei dati che contiene una descrizione centralizzata (visibile a tutti i programmi) ei metadati consultabile ma non modificabile dai programmi.
Vantaggi DBMS:
- Gestione centralizzata ed economia di scala (es passaggio da dischi ottici a magnetici integrato);
- Disponibilità di servizi integrati (es backup);
- Riduzione di ridondanze ed inconsistenza (dati memorizzati in una memoria condivisa);
- Minor accoppiamento Programma/Dati cioè se si modifica il Database non si devono andare a modificare tutti i programmi che accedono ad esso; ciò favorisce sviluppo e manutenzione delle applicazioni;
- Manutenzione semplificata;
Contro: Costo del DBMS e overhead computazionale (meno efficienza).
Vantaggi File processing: Evita l'acquisto del DBMS e i programmi sono
più efficienti;
Svantaggi: Ridondanza dei dati (rischio di inconsistenze), forte accoppiamentoProgramma/Dati quindi difficoltà nello sviluppo e manutenzione delle applicazioni.
I dati possono essere rappresentati seguendo il modello dei dati di un dato DBMS (esgerarchici, reticolari, tabellari) quindi dobbiamo inserirli seguendo il modello ma è il DBMS che si occuperà di memorizzarli in file traducendone il formato (quindi facendo un mapping tra formato dati e file). Ovviamente il database vero e proprio deve sempre risiedere su un file, quindi è fisico. La rappresentazione virtuale, cioè tramite modello, facilita la scrittura dei programmi; il DBMS si occuperà poi di tradurre le operazioni (garantendo una indipendenza fisica).
MODELLO DEI DATI
In generale un modello deve permettere di rappresentare una certa realtà semplificata (esmappe) nascondendo alcuni dettagli. Un modello dei dati è un insieme di costrutti per descrivere i
dati da memorizzare e in quale strutture, nascondendo alcuni dettagli di memorizzazione. Un importante modello è il modello relazionale che fornisce una tabella che permette di strutturare i dati definendo insiemi di record omogenei. Esistono due tipi di modelli di dati (regole rappresentazione dati):
- Modelli logici sono quelli direttamente supportati dal DBMS adottati per l'organizzazione dei dati (relazionare, oggetti, reticolare, gerarchico, NOSQL);
- Modelli Concettuali non supportati direttamente ma sono ad un livello superiore, poiché li descrivono in modo indipendente da come verranno realizzati (astratti) ed utilizzando un linguaggio grafico sono importanti per il dialogo tra progettista ed utente finali (es Entità-Relazioni);
Modello concettuale
Modello logico Database
In ogni database esistono sempre:
- Schema è quella parte che descrive la struttura del database (strutture date usate, caratteristiche dati, vincoli, ecc.) che è detto anche
aspetto intensionale; cambia raramente nel tempo;
Istanza (popolamento del database) rappresenta i valori memorizzati che possono cambiare velocemente;
Ovviamente l'istanza riflette lo schema, lo schema si basa a sua volta sul modello scelto; se, ad esempio, si sceglie il modello relazionale lo schema sarà una tabella e quindi l'istanza il contenuto di tale tabella.
Lo schema in un modello relazionale è una tabella comprendente il nome della tabella e le colonne, l'istanza invece sono i campi. (il modello è implicito).
ARCHITETTURA SEMPLIFICATA DBMS
Il DBMS "dialoga" con il S.O., e in generale il DBMS all'interno ha due schemi:
- schema logico che rappresenta la struttura del database che è stata fornita dall'utente, quindi se un utente vuole interrogare la base dati farà riferimento alla tabella che vede, cioè allo schema logico;
- schema interno rappresenta la struttura del database vera e propria,
quindinon tabelle ma file composti da record; quindi, se l'utente fa una richiesta tramite lo schema logico, il S.O. si occuperà di tradurla per lo schema interno e poi si andranno a prendere i dati veri e propri.
In generale lo schema logico è la descrizione della BD secondo il modello logico (es tabelle), quello interno (o fisico) rappresenta lo schema logico per mezzo di strutture di memorizzazione (es file, record).
Il livello logico è indipendente da quello fisico (indipendenza fisica) cioè se voglio cambiare lo schema fisico dei dati non siamo costretti a cambiare quello logico poiché il DBMS maschera i dettagli del livello fisico.
Architettura a 3 livelli per DBMS – standard ANSI/SPARC
Per la sicurezza bisogna assicurarsi che tutti gli utenti non possano accedere ai dati di altri utenti ma solo ai propri, quindi il cosiddetto