La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "Claudia Raibulet raibulet@disco.unimib.it Basi di dati Claudia Raibulet raibulet@disco.unimib.it."— Transcript della presentazione:

1 Claudia Raibulet raibulet@disco.unimib.it
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 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
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 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 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: Svantaggi
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 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 +2,700.00 S 4 +1,850.40 3 A

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,7 1015

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 18/09/99 OraDiConsegna time 18/09/ Arrivo timestamp

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 | 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 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 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 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: Nome CHAR(20) NOT NULL UNIQUE, Cognome CHAR(20) NOT NULL UNIQUE, Nome Luca Francesca Emilio Giovanni Cognome Neri Bianchi Verdi Rossi

51 Vincoli intrarelazionali
CREATE DOMAIN Voto AS SMALLINT DEFAULT 0 NOT NULL) 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 34321 73321 64521 53524 Nome Luca Giovanni Emilio Francesca Città Mi To Ge Vr CDip Inf Mat Ing

54 Tabella Esame CREATE TABLE Esame ( Matr CHAR(6), CodCorso CHAR(6),
Data DATE NOT NULL, Voto Voto, PRIMARY KEY (Matr, CodCorso) ) CodCorso 1 2 Data 25/02/01 14/12/01 12/03/02 Voto 28 30 24 18/01/02 18 4 Matr 34321 73321 64521

55 Tabella Corso CREATE TABLE Corso ( CodCorso CHAR(6) PRIMARY KEY,
Titolo VARCHAR(30) NOT NULL, Docente VARCHAR(20) ) CodCorso 1 2 3 Titolo matematica informatica ingegneria Docente Barozzi Meo Neri Matematica Bianchi 4

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 34321 73321 64521 53524 Nome Luca Giovanni Emilio Francesca Città Mi To Ge Vr CDip Inf Mat Ing Esame CodCorso 1 2 Data 25/02/01 14/12/01 12/03/02 Voto 28 30 24 18/01/02 18 4 Matr 34321 73321 64521 Studente CodCorso 1 2 3 Titolo matematica informatica ingegneria Docente Barozzi Meo Neri Matematica Bianchi 4 Corso

58 Vincoli interrelazionali
CREATE TABLE Esame ( Matr CHAR(6), CodCorso CHAR(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, CodCorso CHAR(6) REFERENCES Corso, Data DATE NOT NULL, Voto Voto, PRIMARY KEY (Matr, CodCorso) )

60 Vincoli interrelazionali
Esame Matr 34321 73321 64521 53524 Nome Luca Giovanni Emilio Francesca Città Mi To Ge Vr CDip Inf Mat Ing CodCorso 1 2 Data 25/02/01 14/12/01 12/03/02 Voto 28 30 24 18/01/02 18 4 Matr 34321 73321 64521 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 123 120 789 456 Nome Città CDip Una istanza scorretta CodCorso 1 2 Data 25/02/01 14/12/01 Voto 28 30 18/01/02 25 4 Matr 123 120 Esame 12/03/02 NULL 23 555 456 24 Studente Viola la chiave Viola il NULL Viola integrità referenziale

63 Vincoli interrelazionali
Matr 123 120 789 456 Nome Città CDip Una istanza corretta CodCorso 1 2 Data 25/02/01 14/12/01 Voto 28 30 18/01/02 25 4 Matr 123 120 Esame Studente

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 < schema, domain, table, view, ...> NomeElemento [ RESTRICT | CASCADE ] Opzioni: RESTRICT Impedisce 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 "Claudia Raibulet raibulet@disco.unimib.it Basi di dati Claudia Raibulet raibulet@disco.unimib.it."

Presentazioni simili


Annunci Google