Teoria Database PDF
Document Details
Uploaded by Deleted User
Tags
Summary
This document provides an overview of database theory, including topics such as the role of computers in storing and managing data, organizational systems, and the concept of databases and their use.
Full Transcript
I DATABASE Lo spegnimento dell’elaboratore determinava la perdita di tutti i dati inseriti durante l’esecuzione del programma. La gestione dei file è impraticabile, si utilizzano invece le basi di dati, grazie agli sforzi di Edgar Frank Codd. Il sistema azienda è formato da numerose parti con fun...
I DATABASE Lo spegnimento dell’elaboratore determinava la perdita di tutti i dati inseriti durante l’esecuzione del programma. La gestione dei file è impraticabile, si utilizzano invece le basi di dati, grazie agli sforzi di Edgar Frank Codd. Il sistema azienda è formato da numerose parti con funzioni distinte. Si definisce sistema organizzativo l’insieme delle risorse (persone, denaro, materiali e informazioni) e delle regole per lo svolgimento coordinato delle attività di un'azienda (o ente, o associazione). Viene costituito da sottosistemi che organizzano e gestiscono (acquisiscono, elaborano, conservano e producono) le informazioni di interesse, che possono essere: - Decisionali: scelte di gestione del sistema; - Operative: gestire il sistema stesso e le procedure operative. Ogni organizzazione ha un sistema informativo, solitamente suddiviso in sottosistemi più o meno integrati. Si definisce sistema informativo (SI) il sottosistema del sistema organizzativo aziendale che organizza e gestisce (acquisisce, elabora, conserva, produce) le informazioni di interesse. I sistemi informativi esistono da molto prima dell’invenzione dei calcolatori, basti pensare a vecchi archivi cartacei di banche o servizi anagrafici, e quindi sono indipendenti da qualsiasi automatizzazione. Un sistema informativo si dice automatizzato se integra al sistema informativo il sottosistema informatico dell’azienda, ovvero se si avvale di tecnologie hardware e software per processare i dati aziendali e automatizzare le funzioni di gestione e consultazione. L’insieme di metodi e strumenti automatizzati che permettono di rappresentare e codificare le informazioni per mezzo di dati è detto Electronic Data Processing (EDP). - DWH (Data WareHouse): per mettere a disposizione di tutta l’organizzazione aziendale le informazioni, organizzate in modo da facilitare la ricerca e l’inclusione in altre applicazioni; - DSS (Decision Support System): per costruire, a partire dalle informazioni messe a disposizione dal Data Warehouse, modelli e metodi decisionali; - EIS (Executive Information System): per produrre indicatori e report di controllo. Si chiama ERP (Enterprise Resource Planning) un software per l’automatizzazione che integra tutte le attività aziendali in un unico sistema, raccogliendo i dati del sistema informativo in modo centralizzato, nonostante provengano da molteplici parti dell’azienda. I componenti di un sistema informativo automatizzato sono: - dati (risorsa che permette di creare informazioni - grezzo); - procedure; - servizi; - sottosistema informatico; - persone. I dati sono elementi che necessitano di essere elaborati per assumere un significato. - Intensione del dato: il suo significato, la sua interpretazione; - Estensione del dato: il valore specifico assunto da questo. Le informazioni sono insiemi di dati elaborati e interpretati, con un preciso significato. I dati sono dunque gli elementi in ingresso al sistema, ne costituiscono la materia prima, sono memorizzati in archivi fisici posti sulle memorie di massa e presentano caratteristiche non favorevoli alla loro interpretazione: sono numerosi e disorganizzati. È compito dei progettisti del sistema informativo automatizzato ideare un modello adatto per la loro elaborazione, capace di porre i vari archivi in relazione tra loro. Le procedure sono i meccanismi di elaborazione che consentono di trasformare i dati (materia prima di ingresso) in informazioni. Possono essere manuali o automatiche, e possono avere funzioni di: raccolta (con eventuale verifica), aggiornamento, elaborazione e trasferimento. Il sottosistema informatico è la tecnologia (hardware e software) utilizzata a supporto del sistema informativo. I servizi sono le informazioni elaborate dal sottosistema informatico. Le persone sono fondamentali: nella fase di analisi, come elementi per la realizzazione di procedure manuali e per utilizzatori finali del sistema. Colui che gestisce un Database aziendale è il Database Administrator (DBA). Un sistema informativo automatizzato ha bisogno di un ciclo di vita, composto da: studio di fattibilità, raccolta e analisi dei requisiti (srs, stakeholder), progettazione, implementazione, testing e manutenzione (che può essere correttiva, adattiva, perfettiva e preventiva). Un archivio è un insieme di informazioni organizzate secondo uno specifico criterio logico. I dati devono essere memorizzati in modo da facilitare le operazioni che devono essere svolte su di essi. In assenza di un software specifico per memorizzare dati possono essere utilizzati, tramite i loro metodi, i linguaggi di programmazione come C++, Java, ecc… L’unità logica più semplice da progettare per un archivio è il file. Gli insiemi di dati che hanno tutti lo stesso significato intensionale sono detti record. L’organizzazione di un archivio in file ne permette l’automatizzazione, ma con una serie di problematiche che hanno portato alla nascita della teoria delle basi di dati. Intensione Estensione1 codiceFiscale ABCDEF45G67H891I LMNOPQ23R46S852 Nome Mario Cognome Rossi Si definisce ridondanza la presenza ripetuta dello stesso dato in campi o file differenti. Un sistema informativo si dice inconsistente se in esso sono presenti copie degli stessi dati con valori diversi. Com’è facile intuire, se l’inconsistenza è relativa a informazioni centrali per la gestione del sistema, esso diventa inutilizzabile. Di conseguenza la gestione di dati mediante l’utilizzo di file risulta avere tre problematiche fondamentali: - dipendenza logica e fisica dai dati (aggiunta di un dato comporta alla riorganizzazione del file) - difficoltà di correlazione - ridondanza File pazienti File visite Nome: Mario Nome: Mrio Una base di dati ben progettata elimina i problemi precedentemente esposti per i file. L’errore umano non può mai essere eliminato. Per definire quale base di dati sia adatta ad un determinato contesto occorre prima definire, tramite le fasi iniziali di analisi del sistema, il modello dei dati di riferimento. Un modello dei dati è uno strumento concettuale linguistico formato da un insieme di costrutti utilizzati per organizzare i dati e descriverne le relazioni. I costrutti linguistici utilizzati sono classificati in: - costrutti DDL (Data Description Language): definiscono e descrivono le caratteristiche dei dati (crea l’istanza e l’intensione); - costrutti DMC (Data Manipulation Language): inserisce, modifica e elimina le estensioni. Una buona metodologia deve poter garantire: generalità, qualità e facilità. Il modello concettuale descrive i concetti della realtà d’interesse, ma non i dati utili a rappresentarli. Deve essere indipendente dai criteri di rappresentazione dei dati utilizzati nei sistemi software che gestiscono la base di dati (Database Management System - DBMS). Il modello più conosciuto è il modello Entity - Relationship (ER) di Codd. Per quanto riguarda la progettazione logica, il suo scopo è quello di tradurre lo schema concettuale definito nella fase precedente secondo la struttura di rappresentazione supportata dal sistema di gestione di database (DBMS) adottato dall’azienda. Il modello logico ad albero (o gerarchico) si basa sulle strutture ad albero in cui ogni nodo rappresenta un concetto della base di dati (padre -> figlio). Il modello logico reticolare è un’evoluzione del modello logico ad albero. É basato sia su legami gerarchici sia su legami paritari. Il modello logico relazionale è quello più diffuso. Si basa sul concetto di relazione, rappresentata attraverso una tabella. Una relazione corrisponde ad un concetto del sistema che accomuna elementi caratterizzati dalle stesse proprietà (campi), rappresentate dalle colonne della tabella. Le righe sono dette record, istanze o n-ple. L’ordine di righe e colonne della tabella è irrilevante. Un database basato sul modello logico relazionale è detto database relazionale. Le twelve rules (da 0 a 12, in realtà 13) descrivono le caratteristiche di un database. Il modello logico a oggetti è un’evoluzione del modello logico relazionale poiché estende la tecnologia delle basi di dati con il paradigma di programmazione a oggetti. L’ereditarietà permette di creare nuove classi che acquisiscono le proprietà di una classe specifica. I modelli logici semi-strutturati nascono per superare alcune limitazioni del modello relazionale. Si migliorano la velocità di risposta e la scalabilità a scapito della coerenza e consistenza del dato ma sono caratterizzati anche da un'elevata instabilità e/o irregolarità strutturale a causa della quale è difficoltoso schematizzare in modo rigido i legami tra le categorie presenti. Si può rappresentare questo modello logico attraverso XML o, più in generale, mediante modelli chiave-valore (key-value) generando un database denominato database NoSQL. Questo è un movimento che promuove sistemi software che si appoggiano a basi di dati non relazionali. Nell’ultima fase, lo schema logico viene completato con le specifiche dei parametri fisici per memorizzare dei dati. Il prodotto di questa fase viene denominato schema fisico. REQUISITI -> SC. CONCETTUALE -> SC. LOGICO -> SC. FISICO Si definisce Database un insieme di dati posti in relazione fra loro secondo un preciso modello logico e memorizzati su opportuni supporti di memoria di massa. Un database è, per definizione: - grande: hanno dimensione molto maggiore della memoria centrale disponibile; - condiviso: utilizzabile contemporaneamente da più utenti; - persistente: tempo di vita non limitato (finché la base di dati non è eliminata). Il DBMS è un sistema software, efficiente ed efficace, per la gestione di basi di dati, in grado di assicurare l’affidabilità e la privatezza (SQL, Oracle, MySQL, KeyAccess). - Affidabilità: se il software è backuppabile; - Privatezza: quali utenti possono svolgere azioni su quei determinati tipi di dati; - Efficienza: capacità di svolgere operazioni in tempi e spazi accettabili per gli utenti; - Efficacia: capacità di “rendere produttiva” l’attività dell’utente (risolvere i suoi problemi). I due organismi ANSI e SPARC stabilirono degli standard per la realizzazione di DBMS, costituita su 3 livelli di costruzione: - livello esterno: tutto ciò che è possibile mostrare all’utente; - livello logico: è il livello al quale si costruisce la descrizione della base di dati per mezzo del modello logico adottato; - livello interno: trasposizione dello schema logico per mezzo di strutture fisiche di memorizzazione. SQL = DDL + DML + QL L’indipendenza fisica dei dati prevede che il livello logico ed esterno non debbano essere modificati se la struttura fisica muta. L’indipendenza logica prevede che sia possibile interagire con il livello esterno della base di dati in modo indipendente dallo schema logico. I vantaggi dei DBMS sono: - Gestione centralizzata con possibilità di standardizzazione; - Disponibilità di servizi integrati; - Riduzione dell’inconsistenza; - Indipendenza dei dati che favorisce lo sviluppo e la manutenzione. Gli svantaggi dei DBMS sono: - Costo e complessità; - Non scorporabilità delle funzionalità. La progettazione concettuale di una base di dati è una descrizione formale della realtà d’interesse indipendente dai criteri di rappresentazione del DBMS. Da ciò deriva il modello concettuale del database, successivo al documento SRS. Questo deve: - riepilogare le informazioni raccolte con un adeguato livello di astrazione; - standardizzare la struttura delle frasi; - evitare frasi contorte e lunghi periodi; - costruire un glossario dei termini e unificarli evitando sinonimi; - rendere esplicito il contesto di riferimento. Strategie di progetto: - Top-down: da progetto iniziale ai concetti più specifici; - Bottom-up: schema concettuale ottenuto da più schemi elementari; - Inside-out: bottom-up partendo dagli schemi dei concetti più rilevanti; - Mista: schema di partenza con bottom-up, ognuno dei concetti viene poi raffinato con top-down. Proprietà delle strategie: - Correttezza: utilizzo dei costrutti (sintattici e semantici) delle strategie; - Completo: rappresentazione di tutti i dati di realtà d’interesse del committente; - Leggibilità: requisiti facilmente e naturalmente comprensibili; - Minimalità: tutte le specifiche sono rappresentate una sola volta. Eliminare ridondanze e concetti ricavati da altri. Se la ridondanza è necessaria bisogna documentare questa scelta. Il modello Entity-Relationship (modello ER) è il modello concettuale più utilizzato e diffuso per la rappresentazione delle basi di dati relazionali. I costrutti fondamentali del modello ER sono: entità, associazioni e attributi. Si definisce entità una classe di oggetti (persone, cose o fatti) con proprietà comuni, ben distinta all'interno del sistema informativo (rettangolo). Si definisce associazione il legame logico che sussiste fra una o più entità (rombo). Si definiscono attributi le caratteristiche comuni a tutte le istanze di una entità (cerchio). L’insieme dei valori che un attributo può assumere è chiamato dominio. Il valore NULL è utilizzabile per rimpiazzare informazioni non note o nascoste. E’ esterno al dominio. Un attributo si dice semplice se è formato da un’unica variabile di dominio elementare. Un attributo si dice composto se è formato da altri attributi, detti sottoattributi. Si definisce attributo multiplo un attributo che può assumere contemporaneamente più valori nello stesso dominio. Un attributo identificatore, o identificatore interno, o chiave primaria (PK), è un attributo (o un insieme di attributi - composta) il cui valore non nullo identifica univocamente l’entità. Non può mai essere NULL. E’ anche possibile inserire un attributo contatore. La cardinalità di un'associazione indica quante volte un’istanza di una entità può essere legata alle istanze delle altre entità coinvolte nell’associazione. La cardinalità nelle associazioni è di tre tipi: uno a uno, uno a molti e molti a molti. Si dice che due entità A e B in associazione uno a molti, 1:N, se un’istanza dell’entità A è in relazione con molte istanze dell’entità B, ma un’istanza dell’entità B può essere associata a una sola istanza dell’entità A. (1, 1) - - (1, N) Si dice che due entità A e B in associazione molti a molti, o N:N, se un’istanza dell’entità A è in relazione con molte istanze dell’entità B e, viceversa, un’istanza dell’entità B è in relazione con molte istanze dell’entità A. (1, N) - - (1, N) Si dice che due entità A e B sono in associazione uno a uno, o 1:1, se una istanza dell’entità A è in relazione con una sola istanza dell’entità B e, viceversa, una istanza dell’entità B, può essere associata ad una sola istanza dell’entità A (0, 1) - - (1, 1) Si definisce grado di una associazione il numero di entità coinvolte nell’associazione stessa. Un’associazione si dice ricorsiva (unaria o di grado uno) se descrive il legame di una entità con se stessa. Un’associazione ricorsiva può avere anche cardinalità 1:N. In situazioni più complesse, un’associazione ricorsiva potrebbe essere legata anche ad altre entità, in tal caso si parla di associazione N-aria ricorsiva. Un’associazione si dice di grado N o N-aria se collega tra loro N entità (N>2) con cardinalità molti a molti. Solitamente risulta utile progettare un’associazione N-aria quando si riconosce che un attributo di un’associazione binaria di cardinalità molti a molti genera ridondanza e può quindi essere reificato, dando luogo ad una terza entità che conserva legami con entrambe le entità originali. Un identificatore esterno composto è un identificatore nel quale almeno uno degli attributi da cui è formato proviene da un’altra entità. I dizionari sono strumenti che migliorano la leggibilità dello schema ER descrivendone entità e associazioni mediante definizioni specifiche espresse in linguaggio naturale. Le regole aziendali sono tutte quelle caratteristiche che l’applicazione deve rispettare ma non si possono rappresentare direttamente nel modello concettuale. RVn deve / non deve Prima di descrivere le associazioni in analisi è necessario definire le entità individuate. L’associazione, in relazione molti a molti, diventa tabella trasformandosi quindi in un’entità. Le associazioni 1:1 è utilizzata principalmente per: - scelte legate a sicurezza e privacy dei dati; - scelte legate all’efficienza. In ambito informatico possiamo dire che una tabella rappresenta una relazione se: - le righe sono diverse fra loro - le intestazioni delle colonne sono diverse fra loro; - i valori di ogni colonna sono fra loro omogenei. In una tabella che rappresenta una relazione sia l’ordinamento tra le righe, sia l’ordinamento tra le colonne sono irrilevanti. Si definisce schema di relazione un simbolo R, detto nome della relazione, e un insieme di attributi A1, …, An, ad ognuno dei quali è associato un dominio. Si definisce schema logico (o schema relazionale) di una base di dati relazionale un insieme B di schemi di relazioni con nomi diversi. Lo schema logico di una base di dati B viene così rappresentato: Database B { R1 (A1, …, An) … Rk (Z1, …, Zk) } Prima di realizzare uno schema logico è necessaria una ristrutturazione (eliminazione delle generalizzazioni secondo precisi costrutti, chiavi per associazioni N;N, ecc…) del diagramma ER e della successiva traduzione di questo diagramma ER in schema logico. In una relazione 1:N tra due tabelle, il vincolo di integrità referenziale impone che i valori della chiave esterna nella tabella lato N, siano sempre già presenti nella chiave primaria della tabella lato 1. La sintassi per indicare una chiave primaria esterna è: FK: ChiaveEsterna REFERENCES TabellaLato1(PKTabellaLato1) Un’associazione N:N presente nel modello ER non può essere tradotta direttamente nel modello logico relazionale. Deve prima essere ristrutturata trasformando l’associazione in una terza entità, in associazione uno a molti con le altre due. Questa, conterrà le chiavi esterne relative alle chiavi primarie delle due entità originali. Un’associazione 1:1 non può essere tradotta direttamente nel modello logico relazionale. Essa viene equiparata ad una associazione 1:N, dove la chiave primaria dell’entità designata come “lato molti” coincide con la chiave esterna. La scelta di quale entità deve accogliere la chiave esterna è fatta in base al contesto e all’obbligatorietà o meno della partecipazione dell’entità all’associazione. Le associazioni N-arie non possono essere tradotte direttamente nel modello logico relazionale, ma devono essere ristrutturate trasformando l’associazione in una entità, in associazione uno a molti con tutte le altre entità coinvolte. La nuova entità risulterà essere il “lato molti” di tutte le associazioni e pertanto conterrà le chiavi esterne legate alle chiavi primarie delle N entità originali. Nelle associazioni ricorsive di cardinalità molti a molti, l’associazione genera una nuova entità che si rivela essere il “lato molti” di due associazioni binarie, una per ogni ruolo, legate alla stessa entità originale, destinata quindi a contenere due chiavi esterne riferite alla stessa chiave primaria ma provenienti da due associazioni diverse. Le associazioni ricorsive di cardinalità uno a molti non generano nuove entità. L’unica entità presente genera una tabella con l’aggiunta di una colonna contenente la chiave esterna proveniente dall’entità stessa, che assume funzione sia di “lato uno” che di “lato molti” per l’associazione. La chiave primaria coincide con la chiave primaria dell’entità. Un vincolo definito sullo schema logico di una base di dati si chiama vincolo di integrità. Un database si dice integro se i dati in esso memorizzati rispettano lo schema logico e tutti i suoi vincoli. E’ possibile classificare i vincoli a seconda degli elementi della base di dati a cui si riferiscono. In particolare si distinguono due categorie: - Vincoli intrarelazionali: vincoli che coinvolgono gli attributi di una sola tabella. - Vincoli di dominio: limitano l’insieme dei valori che può assumere un attributo (vincoli sul formato con LIKE, range di valori con IN, clausola BETWEEN … AND …, valore NOT NULL). - Vincoli di t-pla: impongono restrizioni sui valori assunti da due o più attributi contemporaneamente (attraverso CHECK). - Vincoli interrelazionali: vincoli definiti su più tabelle. Quello più importante è quello dell’integrità referenziale. In una relazione 1:N tra due tabelle, il vincolo di integrità referenziale impone che i valori della chiave esterna nella tabella “lato molti”, siano sempre presenti nella chiave primaria della tabella “lato uno”. Si rappresenta attraverso: FK: NomeAttributoLatoN REFERENCES TabellaLato1(ChiavePrimariaLato1). Generalizzazioni: legami logici tra un’entità E (genitore) e una o più entità E1, …, En (figlie) che risultano essere casi particolari dell’entità E. Si definisce quindi una gerarchia tra entità basata sul concetto di ereditarietà. L’entità genitore è detta generalizzazione di una entità figlia, mentre quest’ultima è detta specializzazione rispetto a quella padre. Una entità può essere coinvolta in più generalizzazioni diverse. Ogni istanza di un’entità figlia è anche istanza dell’entità genitore. Ereditarietà: ogni proprietà dell’entità genitore (attributi, identificatori, relazioni e generalizzazioni) è anche una proprietà delle entità figlie. Classificazione: - Totale: quando l’entità genitore è una occorrenza di almeno una delle entità figlie (l’entità genitore è formata dall’unione di tutte le istanze delle entità figlie); - Parziali: quando esistono delle istanze per l’entità genitore che non sono presenti in nessuna entità figlia (l’entità genitore è formata dall’unione delle istanze delle entità figlie); - Sovrapposte: se un’istanza dell’entità genitore può appartenere a più di una entità figlia contemporaneamente (overlapping); - Esclusiva: se ogni istanza dell’entità genitore può appartenere ad una sola entità figlia (exclusive). Caso particolare di una generalizzazione con una sola entità figlia: è sempre parziale ed esclusiva. Le gerarchie non sono implementabili nello schema logico. Il costrutto di generalizzazione può essere trasformato in tre modi possibili: 1. accorpamento delle figlie nel genitore: gli attributi e associazioni delle figlie vengono assorbite dal genitore, si introducono attributi NULL e si introduce un attributo che indica la tipologia. 2. accorpamento del genitore nelle figlie: gli attributi e associazioni del genitore sono assorbiti dalle figlie, non possibile nel caso di generalizzazioni parziali e consente di ottenere un risparmio di memoria perché non genera valori nulli e non ha bisogno dell’attributo che indica la tipologia. 3. mantenimento delle entità legate da associazioni 1:1: inserire n relazioni tra il padre e ciascuna delle n entità figlie, e tutti gli attributi conservano la loro collocazione. Si definisce relazione matematica R tra n insiemi D1 , D2 , …, Dn un sottoinsieme del prodotto cartesiano D1 D1 D2 D2 , dove D1 e D2 si chiamano domini. Si definisce grado di una relazione R il numero di domini coinvolti nel prodotto cartesiano che la contiene. Si definisce cardinalità di una relazione R il numero di n-ple che appartengono alla relazione, valore sempre minore o uguale alla cardinalità del prodotto cartesiano.