1 / 68

Basi di dati

Basi di dati. Claudia Raibulet raibulet@disco.unimib.it. Gestione delle informazioni. Le informazioni possono essere gestite (registrate e scambiate) in forme diverse: Idee informali Linguaggio naturale (scritto e parlato, formale o colloquale, in diverse lingue, ecc.)

Télécharger la présentation

Basi di dati

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Basi di dati Claudia Raibulet raibulet@disco.unimib.it

  2. Gestione delle informazioni • Le informazioni possono essere gestite (registrate e scambiate) in forme diverse: • Idee informali • Linguaggio naturale (scritto e parlato, formale o colloquale, in diverse lingue, ecc.) • Disegni, grafici, schemi, • Numeri, codici, … • E su vari supporti: • Memoria umana, carta, dispositivi elettronici, …

  3. Gestione delle informazioni • Nelle attivita’ standardizzate dei sistemi informativi complessi sono state introdotte col tempo forme di organizzazione e codifica delle informazioni via via piu’ precise • Ad esempio, nei servizi anagrafici si e’ iniziato con registrazioni discorsive e poi: • Nome e cognome • Estremi anagrafici • Codice fiscale • …

  4. Informazioni e dati • Nei sistemi informatici, le informazioni sono rappresentate in un modo essenziale attraverso i dati • Definizioni: • Informazione: notizia, dato o elemento che consente di avere conoscenza piu’ o meno esatta di fatti, situazioni, modi di essere, … • Dato: cio’ che e’ immediatamente presente alla conoscenza prima di ogni elaborazione

  5. Informazioni e dati • I dati hanno bisogno di essere interpretati • Esempio: • “Mario”, “6756” su un foglio di carta sono due dati • Se il foglio di carta rappresenta la risposta alla domanda “A chi mi devo rivolgere per risolvere il problema X e qual’e’ il suo numero di telefono?” allora i dati vengono interpretati per fornire informazioni e arricchire la conoscenza

  6. Basi di dati • L’elemento chiave e’ il dato • I dati rappresentano spesso una risorsa strategica perche’ piu’ stabili nel tempo di altri componenti (processi, tecnologie, …) • I dati rimangono gli stessi nella migrazione da un sistema al successivo

  7. Basi di dati • Basi di dati (database) rappresentano un insieme di dati, raccolti in base a precise regole, e organizzate in strutture rigide ben definite • Basi di dati - gestite da un DBMS (DataBase Management System) che: • 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

  8. Basi di dati • Ancora una definizione: • Basi di dati = insieme di archivi in cui un dato e’ rappresentato logicamente una sola volta e puo’ essere utilizzato da un insieme di applicazioni da diversi utenti secondo opportuni criteri di riservatezza

  9. Gestione di basi di dati • Tramite software scritti in un linguaggio di programmazione come per esempio Java (JDBC – Java DataBase Connectivity) • Esempi di DBMS: • Access • DB2 • Oracle • Informix • Sybase • SQLServer • MySQL • …

  10. DBMS – Gestione di basi di dati • Sono applicazioni software in grado di gestire collezioni di dati che siano: • Grandi – di dimensioni molto maggiori della memoria centrale dei sistemi di calcolo utilizzati • Persistenti – con un periodo di vita indipendente dalle singole esecuzioni dei programmi che le utilizzano • Condivise – utilizzate da applicazioni diverse • Garantiscono: • Affidabilita’ – resistenza a malfunzionamenti HW e SW • Privatezza – con una disciplica e un controllo degli accessi • I DBMS sono: • Efficienti – utilizzano al meglio le risorse di spazio e tempo del sistema • Efficaci - rendono produttiva l’attivita’ dei utilizzatori

  11. Basi di dati – risorsa condivisa • Una basi di dati e’ una risorsa integrata e condivisa fra le varie applicazioni • Conseguenze: • Attivita’ diverse su dati in parte condivisi -> richiesti meccanismi di autorizzazione • L’utente A e’ autorizzato a leggere tutti i dati e a modificare quelli sul ricevimento • Attivita’ multi-utente su dati condivisi -> controllo della concorrenza • l’effetto di transizioni concorrenti deve essere coerente

  12. Efficienza e Efficacia • Efficienza • Si misura in termini di tempo di esecuzione (tempo di risposta) e spazio di memoria • A causa della varieta’ delle funzioni i DBMS non sono necessariamente piu’ efficienti del file system • L’efficienza e’ il risultato della qualita’ del DBMS e delle applicazioni che lo utilizzano • Efficacia • Difficile da quantificare • Una applicazione e efficace se risponde agli obiettivi per cui e’ stata progettata

  13. Descrizione dei dati nel DBMS • I dati sono descritti e rappresentati a livelli diversi che permettono l’indipendenza dai dati dalla rappresentazione fisica • I programmi fanno riferimento alla struttura di livello piu’ alto e le rappresentazioni sottostanti possono essere modificate senza necessita’ di modifica dei programmi • Concetto di modello dei dati

  14. Modello dei dati • Insieme di costrutti utilizzati per organizzare i dati e descrivere la dinamica • Componente fondamentale: meccanismi di strutturazione (o costrutti di tipo) • Come nei linguaggi di programmazione esistono meccanismi che permettono di definire nuovi tipi, cosi ogni modello dei dati prevede alcuni contruttori • Esempio: il modello relazionale prevede il costruttore relazione, che permette di definire insiemi di record omogenei

  15. Schemi e istanze • In ogni base di dati esistono: • Lo schema, sostanzialmente invariante nel tempo, che ne descrive la struttura, il significato • L’istanza, i valori attuali, che possono cambiare nel tempo anche molto rapidamente

  16. Due tipi principali di modelli • Modelli logici che sono utilizzati nei DBMS esistenti per l’organizzazione dei dati • Utilizzati dai programmi • Indipendenti dalle strutture fisiche • Esempi: relazionale, gerarchico, a oggetti, … • Modelli concettuali che permettono di rappresentare i dati in modo indipendente da ogni sistema • Descrivono i concetti del mondo reale • Utilizzati nelle fasi preliminari di progettazione • Esempio: entity-relationship

  17. Architettura di un DBMS • Schema logico – descrive la base dati nel modello logico (ad esempio, la struttura di una tabella) • Schema interno – rappresenta lo schema logico per mezzo di strutture di memorizzazione (ad esempio, file) • Schema esterno – descrive una parte della base di dati in un modello logico (viste parziali, …) Schema esterno Schema logico Schema interno DB

  18. Indipendenza dei dati • Il modello logico e il modello esterno sono indipendenti dal modello fisico -> una tabella e’ utilizzata nello stesso modo qualunque sia la sua rappresentazione fisica (che puo’ anche cambiare nel tempo)

  19. Linguaggi per basi di dati • Linguaggio per definire i dati • Data Definition Language – DDL • Usati per definire gli schemi logici, fisici e le autorizzazioni di accesso • Linguaggio per manipolare i dati • Data Manipulation Lanuage – DML • Usati per interrogare e aggiornare la basi di dati • SQL – Structured Query Language – fornisce funzioni per entrambe le categorie

  20. Sviluppatori e utenti di DBMS • Progettisti e realizzatori di un DBMS • Progettisti della base di dati • Amministratori della base di dati (DBA) • Progettisti e programmatori di applicazioni • Utenti finali – eseguono applicazioni predefinite (transazioni) • Utenti casuali – eseguono operazioni non previste a priori utilizzando linguaggi interattivi

  21. Trasazioni • Programmi che realizzano attivita’ frequenti e predefinite, con poche eccezioni, previste a priori • Esempi: • Versamento presso uno sportello bancario • Emissione di certificato anagrafico • Prenotazione aerea • Osservazione: il termine transazioneha anche un altro significato: sequenza indivisibile di operazioni (o vengono eseguite tutte o nessuna)

  22. Transazioni – l’altro significato • Transazioni: non lasciano mai la base di dati in uno stato inconsistente • Proprietà 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

  23. Basi di dati • Una base di dati e’ una collezione di dati (rappresentati in un forma di tabella se e’ relazionale) che rappresentano informazioni di interessa per un’organizzazione • Progettare una base dati significa travare una soluzione ottima per strutturare i dati, che rispetti i requisiti propri del sistema informativo dell’organizzazione sia i vincoli che sui dati vengono imposti • Un DBMS e’ un software che gestisce una base dati • Per eseguire operazioni su una base di dati si scrivono istruzioni in un linguaggio supportato dal DBMS (esempio: SQL)

  24. DBMS • Vantaggi: • Gestione centralizzata dei dati come risorsa comune con opportune forme di controllo • Riduzione di ridondanze e inconsistenze • Indipendenza dei dati • Svantaggi • Costo dei prodotti • Non scorporabilita’; delle funzionalita’

  25. Basi di dati relazionali • 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

  26. Esempio schema base 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)).

  27. Esempio istanza base dati CONTO-CORRENTE MOVIMENTO

  28. SQL Structured Query Language

  29. SQL • Definizione: Il linguaggio SQL è un linguaggio per la definizione e la manipolazione dei dati in database relazionali, sviluppato originariamente presso il laboratorio IBM a San Jose’ (California).

  30. SQL • E‘ un linguaggio con varie funzionalità che contiene: • DDL: definizione di domini, tabelle, autorizzazioni, vincoli, procedure, ecc. • DML: linguaggio di query, modifica, comandi transizionali • SQL è un linguaggio dichiarativo (non-procedurale) • Non specifica la sequenza di operazioni da compiere per ottenere il risultato

  31. Definizioni di schemi • Uno schemaè una collezione di oggetti: • domini, tabelle, indici, asserzioni, viste, privilegi • Uno schema ha un nome e un proprietario CREATE SCHEMA [ NomeSchema ] [ [ authorization ] Autorizzazione ] { DefinizioneElementoSchema }

  32. Dedinizioni di tabelle • L‘istruzione CREATE TABLE definisce uno schema di relazione e ne crea un’istanza vuota • Per ogni attributo va specificato il dominio, un eventuale valore di default ed eventuali vincoli • Possono essere espressi altri vincoli a livello di tabella CREATE TABLENomeTabella ( NomeAttributo Dominio[ Default] [ Constraints ] {,NomeAttributo Dominio[ Default] [ Constraints] } [ AltriConstraints] )

  33. Definizione di tabelle • Esempio: CREATE TABLE Impiegato ( Matricola CHAR(6)PRIMARY KEY, Nome CHAR(20)NOT NULL, Cognome CHAR(20)NOT NULL, Dipart CHAR(15)REFERENCES Dipartimento(NomeDip), Stipendio NUMERIC(9)DEFAULT 0, UNIQUE (Cognome,Nome) )

  34. Domini • I domini specificano i valori ammissibili per gli attributi di una relazione: • Domini elementari: • Bit • Carattere • Numerico Esatto • Numerico Approssimato • Data/Ora • Intervallo Temporale

  35. Il tipo BIT • Corrisponde ad attributi che possono assumere solo due valori (0,1). Attributi di questo tipo (flag) indicano se l’oggetto rappresentato possiede o meno una certa proprietà bit bit(lunghezza) varbit (lunghezza) • Esempio: L’attributo Lavoratore nella relazione STUDENTI indicase lo studente è o meno lavoratore: Lavoratore bit

  36. Il tipo CHAR • Rappresenta singoli caratteri alfanumerici oppure stringhe di lunghezza fissa o variabile char char(lunghezza) varchar(lunghezza) • Esempio: L’attributo Nome della relazione IMPIEGATI rappresenta sequenza di caratteri di lunghezza massima 20 • Nome char(20) -> Paolo Rossi_ _ _ _ _ _ _ _ _ • Nome varchar(20) -> Paolo Rossi

  37. Tipi numerici esatti • Rappresentano numeri interi o numeri decimali in virgola fissa (con un numero prefissato di decimali) integer smallint numeric numeric(precisione) numeric(precisione,scala) decimal(precisione) decimal decimal(precisione,scala • Esempi: L’attributo Eta nella relazione IMPIEGATI: Eta decimal(2) Rappresenta tutti i numeri fra -99 e +99 • L’attributo Cambio nella relazione PAGAMENTO indica il valore del cambio del dollaro preciso al centesimo di lira: Cambio numeric(6,2) Rappresenta tutti i numeri fra -9999,99 e +9999,99

  38. Tipi numerici approssimati • Sono utili per rappresentare ad esempio grandezze fisiche (rappresentazione in virgola mobile). float float(precisione)double precisionreal • L’attributo Massa nella relazione ASTEROIDI: Massa real 0,17E16 = 1,7 1015

  39. I tipi Date/Time • Permettono di rappresentare istanti di tempo datetime time(precisione)timestamp timestamp(precisione) • Ciascuno di questi domini è decomponibile in un insieme di campi (anno, mese, giorno, ora, minuti, secondi): 18/09/99 DataDiNascita date 19.24.16 OraDiConsegna time 18/09/00 21.15.20 Arrivo timestamp

  40. Figure e documenti descrittivi fotografia BLOB(10M) descrizione CLOB(100k) I tipi BLOB e CLOB • Permettono di includere direttamente nel database oggetti molto grandi: • Binary Large Object (BLOB) • Character Large Object (CLOB)

  41. Valori di DEFAULT per un dominio • Definiscono il valore che deve assumere l’attributo quando non viene specificato un valore durante l’inserimento di una tupla DEFAULT < ValoreGenerico | user | null > • ValoreGenerico rappresenta un valore compatibile con il dominio, rappresentato come una costante o come un’espressione. • User è la login dell’utente che effettua il comando

  42. Domini definiti dagli utenti • Paragonabile alla definizione dei tipi nei linguaggi di programmazione • Un nuovo dominio è caratterizzato dalle seguenti informazioni:nome, dominio elementare, valore di default, insieme di vincoli (constraints) CREATE DOMAIN NomeDominio as DominioElementare [ ValoreDefault ] [ Constraints ]

  43. Esempio: CREATE DOMAIN CREATE DOMAIN VotoASSMALLINT DEFAULT 0 NOT NULL) • Il nuovo dominio Voto è definito come uno SMALLINT con valore di default e che non deve essere nullo. • I “nuovi domini” sono utili perché, ad esempio, modifiche alla definizione di Voto si ripercuotono in tutte le occorrenze di questo dominio nello schema del Database.

  44. Il valore NULL • E’ un valore polimorfico (che appartiene a tutti i domini) col significato di valore non noto: 1) il valore esiste in realtà ma è ignoto al database (es.: data di nascita) 2) il valore è inapplicabile (es.: numero patente per minorenni) 3) non si sa se il valore è inapplicabile o meno (es.: numero patente per un maggiorenne)

  45. Vincoli/Contraints • Un vincolo è una regola che specifica delle condizioni sui valori di un elemento dello schema del database. • Un vincolo può essere associato ad una tabella, ad un attributo, ad un dominio. • I vincoli possono essere di due tipi: • Vincoli Intrarelazionali • Si applicano all’interno di una relazione • Vincoli Interrelazionali • Si applicano tra relazioni diverse

  46. Vincoli intrarelazionali NOT NULL (Il valore non deve essere nullo) UNIQUE (I valori non devono essere ripetuti) PRIMARY KEY (Chiave primaria) CHECK (Condizioni complesse)

  47. Vincolo su più attributi Vincolo su un attributo Esempio CREATE TABLE Impiegato ( Matricola CHAR(6) PRIMARY KEY, Nome CHAR(20) NOT NULL, Cognome CHAR(20) NOT NULL, Stipendio NUMERIC(9) DEFAULT 0, UNIQUE (Cognome, Nome) )

  48. L’attributo o la n-pla di attributi su cui è definito il vincolo UNIQUE non possono avere istanze uguali ripetute. Vincoli intrarelazionali CREATE TABLE Impiegato ( Matricola CHAR(6) PRIMARY KEY, Nome CHAR(20) NOT NULL, Cognome CHAR(20) NOT NULL, Stipendio NUMERIC(9) DEFAULT 0, UNIQUE (Cognome, Nome) )

  49. In alcune implementazioni di SQL potrebbe essere necessario specificare comunque anche il vincolo NOT NULL per tutti gli attributi coinvolti. Vincoli intrarelazionali CREATE TABLE Impiegato ( Nome CHAR(20) NOT NULL, Cognome CHAR(20) NOT NULL, Stipendio NUMERIC(9) DEFAULT 0, PRIMARY KEY (Cognome, Nome)

  50. Nome Nome Cognome Cognome Luca Luca Rossi Neri Giovanni Giovanni Bianchi Bianchi Emilio Emilio Verdi Verdi Francesca Emilio Rossi Rossi OSSERVAZIONE Nome CHAR(20) NOT NULL, Cognome CHAR(20) NOT NULL, UNIQUE (Cognome, Nome), Non è la stessa cosa di: Nome CHAR(20) NOT NULL UNIQUE, Cognome CHAR(20) NOT NULL UNIQUE,

More Related