La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Basi di dati Claudia Raibulet

Presentazioni simili


Presentazione sul tema: "Basi di dati Claudia Raibulet"— Transcript della presentazione:

1 Basi di dati Claudia Raibulet

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 o 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 o 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 Schema interno DB  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

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 transazione ha 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 o Successo: tutte le attività della transazione sono andate a buon fine, la base di dati è aggiornata (commit) o 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 RelationCONTO-CORRENTE (NUMERO-CC:integer, NOME:char (20), INDIRIZZO:char (20), SALDO:decimal (14, 2)). RelationMOVIMENTO (NUMERO-CC:integer, DATA-MOV:date, NUMERO-MOV:integer, IMPORTO:decimal (14, 2), CAUSALE:char (1)).

27 Esempio istanza base dati NUMERO-CCNOMEINDIRIZZOSALDO 1Rossiv. Anemoni 53, Bianchiv. Bolla Brunelliv. Po 416, Grandiv. Romolo 33, NUMERO-CCDATA-MOVNUMERO-MOVIMPORTOCAUSALE V P ,700.00S ,850.40S A 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 TABLE NomeTabella ( 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 precision real  L’attributo Massa nella relazione ASTEROIDI: Massa real 0,17E16 = 1,

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

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

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 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 Voto AS SMALLINT 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 o Si applicano all’interno di una relazione Vincoli Interrelazionali o 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 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) ) Vincolo su più attributi Vincolo su un attributo

48 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) ) L’attributo o la n-pla di attributi su cui è definito il vincolo UNIQUE non possono avere istanze uguali ripetute.

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

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

51 Vincoli intrarelazionali CREATE DOMAIN Voto AS SMALLINT DEFAULT 0 NOT NULL) CREATE DOMAIN Voto AS SMALLINT DEFAULT 0 CHECK (Voto>=18 AND VOTO<=30)

52 Vincoli interrelazionali  Coinvolgono più relazioni / tabelle.  Definiamo tre tabelle con le informazioni degli esami sostenuti dagli studenti: Tabella Studente Tabella Esame Tabella Corso

53 Tabella Studente CREATE TABLE Studente ( Matr CHAR(6) PRIMARY KEY, Nome VARCHAR(30) NOT NULL, Città VARCHAR(20), CDip CHAR(3) ) Matr Nome Luca Giovanni Emilio Francesca Città Mi To Ge Vr CDip Inf Mat Ing Mat

54 Tabella Esame CREATE TABLE Esame ( Matr CHAR(6), CodCorsoCHAR(6), Data DATE NOT NULL, Voto Voto, PRIMARY KEY (Matr, CodCorso) ) CodCorso Data 25/02/01 14/12/01 12/03/02 Voto /01/02184 Matr

55 Tabella Corso CREATE TABLE Corso ( CodCorsoCHAR(6)PRIMARY KEY, Titolo VARCHAR(30)NOT NULL, DocenteVARCHAR(20) ) CodCorso Titolo matematica informatica ingegneria Docente Barozzi Meo Neri MatematicaBianchi4

56 Vincoli interrelazionali REFERENCES Permettono di definire vincoli di integrità FOREIGN KEY referenziale CHECK(Vincoli complessi)  Si hanno due sintassi per singoli attributi su più attributi  E' possibile definire politiche di reazione alle violazioni.

57 Vincoli interrelazionali Matr Nome Luca Giovanni Emilio Francesca Città Mi To Ge Vr CDip Inf Mat Ing Mat CodCorso Data 25/02/01 14/12/01 12/03/02 Voto /01/02184 Matr CodCorso Titolo matematica informatica ingegneria Docente Barozzi Meo Neri MatematicaBianchi4 Corso Esame Studente

58 Vincoli interrelazionali CREATE TABLE Esame ( Matr CHAR(6), CodCorsoCHAR(6), Data DATE NOT NULL, Voto Voto, PRIMARY KEY (Matr, CodCorso) FOREIGN KEY (Matr) REFERENCES Studente FOREIGN KEY (CodCorso) REFERENCES Corso )

59 Vincoli interrelazionali CREATE TABLE Esame ( Matr CHAR(6)REFERENCES Studente, CodCorsoCHAR(6)REFERENCES Corso, Data DATE NOT NULL, Voto Voto, PRIMARY KEY (Matr, CodCorso) )

60 Vincoli interrelazionali Matr Nome Luca Giovanni Emilio Francesca Città Mi To Ge Vr CDip Inf Mat Ing Mat CodCorso Data 25/02/01 14/12/01 12/03/02 Voto /01/02184 Matr Esame Studente Se eliminiamo da Studente la tupla con matricola 34321, cosa succede alla tabella Esame? Problema degli orfani!

61 Vincoli interrelazionali: reazioni alle violazioni  Le reazioni operano sulla tabella figlio (es Esami), in seguito a modifiche alla tabella padre (es Studente)  Reazioni previste: CASCADE : propaga la modifica SET NULL: annulla l’attributo che fa riferimento SET DEFAULT: assegna il valore di default all’attributo NO ACTION : impedisce che la modifica possa avvenire  Le violazioni possono essere introdotte: 1. da modifica (update) dell’attributo cui si fa riferimento 2. da cancellazioni di tuple

62 Vincoli interrelazionali Matr NomeCittàCDip Studente CodCorso 1 2 Data 25/02/01 14/12/01 Voto /01/02254 Matr Esame 112/03/02NULL 18/01/ /03/ Viola la chiave Viola il NULL Viola integrità referenziale Una istanza scorretta

63 Vincoli interrelazionali Matr NomeCittàCDip Studente CodCorso 1 2 Data 25/02/01 14/12/01 Voto /01/02254 Matr Esame Una istanza corretta

64 Modifiche degli schemi  Necessarie per garantire l’evoluzione della base di dati a fronte di nuove esigenze.  Ci sono due comandi SQL appositi: ALTER: modifica oggetti persistenti DROP:cancella oggetti dallo schema

65 Modifiche degli schemi  Si applica su domini e tabelle: ALTER TABLE NomeTabella < ALTER COLUMN NomeAttributo| DROP COLUMN NomeAttributo | ADD COLUMN DefAttributo | DROP CONSTRAINT NomeVincolo ADD CONSTRAINT DefVincolo >

66 Modifiche degli schemi  Cancella oggetti DDL, si applica su domini, tabelle, indici, view, asserzioni, procedure,... DROP NomeElemento [ RESTRICT | CASCADE ]  Opzioni: RESTRICTImpedisce drop se gli oggetti comprendono istanze CASCADE Applica drop agli oggetti collegati

67 Esercizio Si consideri il seguente schema relazionale: Implementare in SQL lo schema relazionale dell’esercizio con gli opportuni vincoli di integrità

68 Esercizio CREATE TABLE PRODOTTO ( cod-prod char(3) PRIMARY KEY, descrizione char(25), prezzo-unitario integer CHECK (prezzo-unitario > 0) ) CREATE TABLE FATTURA ( cod-fatt char(3), cliente char(25), cod-prod char(3) REFERENCES Prodotto (cod-prod), quantità smallint CHECK (quantità > 0), PRIMARY KEY (cod-fatt, cod-prod) )


Scaricare ppt "Basi di dati Claudia Raibulet"

Presentazioni simili


Annunci Google