1 Basi di dati multimediali. 2 Basi di dati Multimediali Introduzione.
ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni...
Transcript of ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni...
DBMS - 1
ARCHIVI E BASI DI DATI
Un file (archivio) è una raccolta di record logici. Lagestione dei file è un servizio reso dal SistemaOperativo.
Ogni record logico contiene una sequenza di bit ed èsuddiviso in campi
Ogni campo contiene una differente informazione.
Esempio:
ROSSINI GIORGIO Via Nappi 6 - Milano 2372445
campo1:nome
campo2:indirizzo
campo3:telefono
Meccanismi per l’inserimento, la cancellazione, lamodifica e la ricerca dei dati.
Un database (base di dati) è una raccolta di dati chevengono organizzati e gestiti da un sistema softwarespecifico detto DBMS (Data Base ManagementSystem) che opera al di sopra del SistemaOperativo.
DBMS - 2
Organizzazioni dei file:
• sequenziale (eventualmente ordinata)
I record sono letti o scritti uno dopo l’altro.
Inserimento, cancellazione e modifica di un filesequenziale presentano problemi, in quantorichiedono di norma lo spostamento di tutti i recordche seguono il punto di intervento.
• ad accesso diretto
L’allocazione dei record in memoria di massa èdefinita da un algoritmo che genera un indirizzo apartire dal valore assunto da un campo del recorddetto chiave.
Il vantaggio delle strutture ad accesso diretto è larapidità della ricerca: in assenza di conflitti ogniricerca richiede una sola operazione diingresso/uscita.
• a indice
In queste strutture, come in quelle ad accessodiretto, è il valore di un campo chiave che determinail record a cui accedere. La corrispondenza fra lachiave e l’indirizzo non è mantenuta esplicitamentemediante un file ausiliario detto file indice.
Su uno stesso archivio è possibile avere diversi fileindice relativi a chiavi diverse.
DBMS - 3
BASI DI DATI
Le basi di dati sono sorte alla fine degli anni ’60.
Prima i sistemi informativi si basavano sull’uso difiles separati.
I programmi applicativi accedevano ai filesindividualmente, utilizzando procedure del SistemaOperativo.
Problemi:
1) Inconsistenza e ridondanza dei dati. I dati sonoduplicati in file diversi e quindi le modifichepossono generare discordanze;
2) Privatezza dei dati. È limitata perché gestita solodal sistema operativo (controllo sull’accesso alfile, non al singolo record o campo);
3) Integrità dei dati. Si devono poter imporre vincolidi consistenza.
4) Problemi di concorrenza. Più programmipossono cercare di accedere nello stessomomento allo stesso dato: si possono generaresituazioni scorrette.
Questi inconvenienti si possono superare se tutti idati vengono organizzati e gestiti da un DBMS (DataBase Management System).
DBMS - 4
SISTEMI PER LA GESTIONEDI BASI DI DATI
Base di Dati (DB):
Raccolta di dati che:
- può essere utilizzata da utenti o programmiapplicativi diversi;
- è integrata;
- fornisce all’utente una rappresentazione logica (enon fisica) dei dati;
- accesso in locale o in remoto.
Data Base Management Systems (DBMS):
Sistema che gestisce una base di dati (in particolaregestisce gli accessi da parte di più utenti oprogrammi applicativi).
Descrizione della struttura dei dati unica (SCHEMA).
Data Manipulation Language (linguaggio didefinizione e di interrogazione).
DBMS - 5
OBIETTIVI delle BASI DI DATI
Rendere il più possibile indipendenti le applicazioniche agiscono sui dati dalla struttura fisica dimemorizzazione (file e loro organizzazione).
Inoltre:
Coerenza dei dati (per evitare, ad esempio,duplicazioni discordanti, etc.)
Integrità dei dati: il DB deve contenere solo daticorretti (ad esempio un dato MESE può assumeresolo valori 1-12).
Ripristino: procedure automatiche di ripristino dei datiin caso di errori.
Privatezza: in caso di sistemi utilizzati da più utenti,occorrono controlli di autorizzazione per agire suidati.
DBMS - 6
ARCHITETTURA DI UN DBMS
DML, Data Manipulation Languageinterrogazione e manipolazione dei datiDDL, Data Definition Languagedefinizione dello schema e sottoschemaDMCL, Device Media Control Languagecorrispondenza tra schema e strutture fisiche
DBMS - 7
IL MODELLO RELAZIONALE DEI DATI
È uno dei modelli dei dati utilizzati nei DBMS (oltre aquello gerarchico e reticolare).
Si basa sul concetto di relazione, nel suo sensomatematico originale.
Dati gli insiemi D1, D2, ..., Dn (non necessariamentedistinti), R(D1, D2, ..., Dn) è una relazione su questiinsiemi se è un insieme di n-ple ordinate (d1, d2, ...,dn) tali che d1 appartiene a D1, d2 appartiene a D2, ecosì via:
R(D1, D2, ..., Dn) ∏ D1xD2x...xDn
R
D1 D2 ... Dn
val1 val2 ... valn
D1, D2, ..., Dn sono detti domini della relazione.
Il grado della relazione è n (numero di colonne).
Cardinalità della relazione, numero di righe (record)
DBMS - 8
UN ESEMPIO DI RELAZIONE
Agenda telefonica
Domini:
nomi propri di persona
cognomi
numeri telefoniciCampi o
Agenda attributi
Nome Cognome Numero
Mario Rossi 212347
Ivo Bianchi 355221
Lucia Bianchi 212347
Righe orecord
(tuple)
I dati sono organizzati in tabelle.
L’accesso ai dati avviene sulla base di valori di alcunicampi.
Agenda(Nome, Cognome, Numero)
Schema della relazione Agenda
DBMS - 9
ACCESS
Si basa sul modello relazionale dei dati
Consente di:
- definire lo schema (struttura) di una relazionespecificando nome, tipo, vincoli (valore unico, nonnullo, default e integrità) e dimensione dei campi;
- introdurre i dati in una relazione ed eventualmentecorreggere i dati introdotti;
- utilizzare un database e interrogarlo;
- cancellare o aggiungere record in modo selettivo(ad esempio tutti i record con un campo = ...);
- correlare due tabelle.
- organizzare i dati di una tabella ordinandoli su unoo più campi;
- creare indici per una tabella su uno o più campi;
Tutte queste operazioni possono essere effettuatesfruttando interfaccie grafiche, menù e finestre. Ognioperazione (effettuata tramite finestre) è l’equivalentegrafico di uno statement SQL (Structured QueryLanguage).
DBMS - 10
SQL
• Linguaggio di creazione, interrogazione, modifica didatabase e tabelle.
• Basato sugli operatori dell’algebra relazionale:
- Proiezione (•c1,...): selezione di alcune colonne(C1,..)
- Selezione (sF) : selezione di alcune righe sulla
base di un certo criterio (formula F)
Esempio: relazione Agenda
Nome Cognome Numero
Mario Rossi 212347
Ivo Bianchi 355221
Mario Neri 644532
DBMS - 11
•nome,cognome proietta la relazione agenda sulle solecolonne Nome e Cognome:
Nome Cognome
Mario Rossi
Ivo Bianchi
Mario Neri
snome=‘mario’ seleziona i record che soddisfano larelazione Nome=‘Mario’
Nome Cognome Numero
Mario Rossi 212347
Mario Neri 644532
DBMS - 12
- Unione: Unisce due relazioni R e S con lo stessonumero di campi (R U S ==> unione di insiemi)
- Differenza: R - SR:
Nome Cognome
Mario Rossi
Ivo Bianchi
Mario Neri
S:
Nome Cognome
Mario Rossi
Ivo Bianchi
Maria Verdi
DBMS - 13
R U S =
Nome Cognome
Mario Rossi
Ivo Bianchi
Mario Neri
Maria Verdi
R - S:
Nome Cognome
Mario Neri
DBMS - 14
- Prodotto Cartesiano R X S:R = D1 X D2 X .. DMS = d1 X d2 X .. dNR X S = D1 X D2 X ...X DM X d1 X d2 X ... X dN
La tabella R X S contiene tutte le possibilicombinazioni di un record di R e un record di S.
R:CR1 CR2
A BC D
S:CS1 CS2
1 23 45 6
R X S:
CR1 CR2 CS1CS2
A B 1 2A B 3 4A B 5 6C D 1 2C D 3 4C D 5 6
DBMS - 15
OPERATORI RELAZIONALI DERIVATI
- Join (I><IF):Data una formula logica F di confronto fra attributi direlazioni (ed eventualmente valori costanti),R I><IF Ssi ottiene dalle relazioni R e S come prodottocartesiano più selezione:R I><IF S = sF(R X S)
R I><ICR1=‘A’ S
CR1 CR2 CS1CS2
A B 1 2A B 3 4A B 5 6
DBMS - 16
CREAZIONE DI UN DATABASE E DELLETABELLE
• Creazione di un Database:
CREATE DATABASE <Nome-Database>
Esempio: CREATE DATABASE Clienti.mdbDipendente dal data base (molte opzioni)
• Creazione di una Tabella:
CREATE TABLE <Nome-Tabella>
(<Nome-Col> < Tipo> <Vincolo>)...
Esempio: CREATE TABLE Ordini
(Numero_ordine Numero)
Crea la struttura delle tabelle che compongono ildatabase: nome, tipo, dimensione dei campi,definizione delle chiavi, etc.
• Popolazione di una tabella (inserimento dati)
INSERT INTO <Tabella> (<Nomi Colonne>)
VALUES (<Valori Corrispondenti>)
Esempio: INSERT INTO Ordini (Numero, Importo)
VALUES (8, 1500000) VALUES ecc. può essere una query
DBMS - 17
ACCESS: CREAZIONE DI DB E TABELLE
DBMS - 18
STRUTTURA
DBMS - 19
CHIAVE DI UNA RELAZIONE
È un sottoinsieme degli attributi della relazione taleche ogni record è identificato univocamente dalvalore assunto dalla chiave.
Prodotti
Codice Descrizione Qty
X2134 Vite destrorsa 1300
F4533 Chiodo legno 10000
C5436 Chiodo muro 1200
Codice è la chiave della relazione Prodotti (identificaunivocamente ciascun prodotto).
Agenda
Nome Cognome Numero
Mario Rossi 212347
Ivo Bianchi 355221
Lucia Bianchi 212347
L’insieme degli attributi NOME + COGNOMEcostituisce la chiave della relazione AGENDA
DBMS - 20
INSERIMENTO DATI
DBMS - 21
ALCUNE PROPRIETÀ DEL MODELLORELAZIONALE
Relazioni normalizzate (1aforma normale)Gli elementi dei domini che compongono la relazionesono valoro atomici (non divisibili ulteriormente incomponenti) ==> Struttura “piatta” della relazione
(Eccezione: tipo Data, composto da Giorno, Mese,Anno, che però può essere visto come una stringa)
Record omogeneiTutti i record di una relazione hanno la medesimastruttura
Non duplicazioneCiascun record è unico all’interno di una relazione
Indipendenza dall’ordineL’ordine con cui compaiono i record in una relazionenon ha importanza
DBMS - 22
FORME NORMALI
1aforma normale: gli elementi di ciascun recordsono atomici.
Altre forme normali sono introdotte per eliminare ledipendenze tra i dati
Ordini
Cod_P Qty N_Ord Cod_CL Ind_CL
X2134 1300 1725 ALFA32 Bologna
F4533 1000 1726 ALFA32 Bologna
23111 2000 1727 BETA Modena
Il campo Ind_CL (indirizzo cliente) dipendefunzionalemente dal campo Cod_CL (codice cliente).È quindi possibile eliminare dalla relazione ordini ilcampo Ind_CL e creare una seconda relazione chedescrive la dipendenza dell'indirizzo dal codice di uncliente.
DBMS - 23
Ordini
Cod_P Qty N_Ord Cod_CL
X2134 1300 1725 ALFA32
F4533 1000 1726 ALFA32
23111 2000 1727 BETA
Clienti
Cod_CL Ind_CL
ALFA32 Bologna
BETA Modena
Eliminazione di dipendenze indesiderate via via piùaccentuata dalla 2a forma normale in poi.
DBMS - 24
INTERROGAZIONE DEL DB
Una interrogazione viene espressa in un linguaggioopportuno di interrogazione (ad esempio SQL) especifica una parte dei dati contenuti in una base didati. Pertanto, una interrogazione è una richiestaper trovare dati nel DB.
LINGUAGGI DI INTERROGAZIONE
- basati sull’algebra relazionale. Le interrogazionisono espresse mediante (combinazione di)operatori applicati a relazioni
SELEZIONE, PROIEZIONE, JOIN
- basati sul calcolo relazionale (base logica). Leinterrogazioni “descrivono” un insieme di recordspecificando una condizione logica (predicato) chequesti record devono soddisfare.
Linguaggio “dichiarativo”
DBMS - 25
SELEZIONE
- La selezione permette di estrarre dal databasealcuni record che soddisfano una determinatacondizione.
In SQL:
SELECT * FROM <Nome-Tabella> <Alias>WHERE <Condizione>
- L’alias è un nome alternativo (generalmente piùcorto) per riferirsi alla tabella <Nome-Tabella>. Èopzionale quando la query coinvolge una solatabella, mentre è obbligatorio quando la querycoinvolge più di una tabella.
SELECT *, SELECT ALL,SELECT DISTINCT <Campo>
DBMS - 26
Prodotti
Codice Descrizione Qty
X2134 Vite destrorsa 1300
F4533 Chiodo legno 10000
C5436 Chiodo muro 1200
Seleziona i prodotti per cui si ha una quantità minoredi 2000
In SQL:
SELECT * FROM Prodotti P
WHERE P.QTY<=2000
X2134 Vite destrorsa 1300
C5436 Chiodo muro 1200
In generale, la selezione consente di estrarre irecord che soddisfano una certa condizione logica F:
DBMS - 27
CONDIZIONI LOGICHE
Le formule logiche in una selezione sono del tipo:
C1 rel C2
dove:
C1 e C2 sono attributi o valori costanti
rel è un operatore relazionale (di confronto),come ad esempio <, >, <=, >=, =, !=
Impiegati
Cognome Nome Stip_Prec Stipendio Data_N
Rossi Mario2.800.000 2.500.000 1958
Bianchi Ivo 2.400.000 2.500.000 1938
Neri Luigi 1.900.000 1.800.000 1962
Seleziona gli impiegati che hanno avuto unariduzione dello stipendio.
SELECT * FROM Impiegati Imp
WHERE Imp.Stip_Prec > Imp.Stipendio
Rossi Mario2.800.000 2.500.000 1958
Neri Luigi 1.900.000 1.800.000 1962
DBMS - 28
CONDIZIONI LOGICHE (Cont)
• <Campo> BETWEEN A AND BStipendio BETWEEN 1000000 AND 2000000
Neri Luigi 1.900.000 1.800.000 1962
• <Campo> IN (a1, a2, ....an)Data_N IN (1938, 1966, 1969)
Bianchi Ivo 2.400.000 2.500.000 1938
• <Campo> LIKE <Stringa> Nome LIKE ‘%ss%’
%: stringa di lunghezza qualunque
Rossi Mario2.800.000 2.500.000 1958
Impiegati
Cognome Nome Stip_Prec Stipendio Data_N
Rossi Mario2.800.000 2.500.000 1958
Bianchi Ivo 2.400.000 2.500.000 1938
Neri Luigi 1.900.000 1.800.000 1962
DBMS - 29
Le formule logiche di una selezione possono essereanche composte attraverso connettivi logici
AND, OR, NOT
Ad esempio, seleziona i prodotti per cui si ha unaquantità minore di 2000 o maggiore di 8000
SELECT * FROM Prodotti P
WHERE (QTY<=2000) OR (QTY>=8000)
X2134 Vite destrorsa 1300
F4533 Chiodo legno 10000
C5436 Chiodo muro 1200
Seleziona gli impiegati giovani (Data_N>=1962) chehanno avuto una riduzione dello stipendio:
SELECT * FROM Impiegati Imp
WHERE (Stip_Prec > Stipendio) AND (Data_N >=1962)
Neri Luigi 1.900.000 1.800.000 1962
DBMS - 30
PROIEZIONE
La proiezione consente di proiettare i record solo sucerti campi (colonne). In pratica si estrae unaporzione verticale della relazione.
SELECT CAMPO1,CAMPO2,...
Ad esempio:
Prodotti
Codice Descrizione Qty
X2134 Vite destrorsa 1300
F4533 Chiodo legno 10000
C5436 Chiodo muro 1200
visualizza il codice di tutti i prodotti
SELECT Codice FROM Prodotti
X2134F4533C5436
DBMS - 31
Selezione e proiezione possono essere combinate
Ad esempio:
Prodotti
Codice Descrizione Qty
X2134 Vite destrorsa 1300
F4533 Chiodo legno 10000
C5436 Chiodo muro 1200
Visualizza il codice e la descrizione dei prodotti percui si ha una quantità minore di 2000:
SELECT P.Codice, P.Descrizione FROM Prodotti P
WHERE P.QTY <= 2000
X2134 Vite destrorsa
C5436 Chiodo muro
DBMS - 32
Un altro esempio:
Agenda
Nome Cognome Numero
Mario Rossi 212347
Ivo Bianchi 355221
Lucia Bianchi 212347
Qual è il numero di telefono di Mario Rossi?
SELECT A.Numero FROM Agenda AWHERE A.Nome = ‘Mario’ AND A.Cognome=‘Rossi’
DBMS - 33
JOIN
Consente di correlare due relazioni sulla base divalori di certi campi: Data una formula di confronto Ftra attributi di relazioni (R e S, ad esempio),indichiamo con:
R jF S
il join di R ed S sulla base di F.
Ordini
Cod_P Qty N_Ord Cod_CL
X2134 1300 1725 ALFA32
F4533 1000 1726 ALFA32
23111 2000 1727 BETA
Clienti
Cod_CL Ind_CL
ALFA32 Bologna
BETA Modena
A partire dalle relazioni Ordini e Clienti, produci unarelazione che contenga il numero d’ordine, il codice el’indirizzo del cliente.
Ordini j(ORDINI.COD_CL=CLIENTI.COD_CL) Clienti
DBMS - 34
Ordini j(ORDINI.COD_CL=CLIENTI.COD_CL) Clienti
Cod_P Qty N_Ord Cod_CL Ind_CL
X2134 1300 1725 ALFA32 Bologna
F4533 1000 1726 ALFA32 Bologna
23111 2000 1727 BETA Modena
Proiezione su numero d’ordine, il codice e l’indirizzodel cliente:
1725 ALFA32 Bologna
1726 ALFA32 Bologna
1727 BETA Modena
DBMS - 35
JOIN (continua)
Occorre utilizzare due database
SELECT * FROM Clienti C, Ordini O
WHERE C.Cod_CL = O. Cod_CL
COD_P QTY N_ORD COD_CL IND_CL
X2134 1300 1725 ALFA32 Bologna
F4533 1000 1726 ALFA32 Bologna
23111 2000 1727 BETA Modena
La colonna Cod_CL non viene duplicata.
DBMS - 36
JOIN : RELAZIONI
DBMS - 37
AUTOCOMPOSIZIONEQUERY SEMPLICE SU UNA RELAZIONE
DBMS - 38
RISULTATO
DBMS - 39
ORDINAMENTO
Un database può essere ordinato su una chiave(composta da uno o più campi):
SELECT * FROM Agenda
ORDER BY Campo1 [ASC|DESC],
Campo2 [ASC|DESC], ......,
Campon [ASC|DESC]
Agenda
Nome Cognome Numero
Mario Rossi 212347
Ivo Bianchi 355221
Lucia Bianchi 212347
SELECT * FROM Agenda
ORDER BY Cognome ASC, Nome ASC
Ivo Bianchi 355221
Lucia Bianchi 212347
Mario Rossi 212347
DBMS - 40
INDICI
Sono “sovrastrutture” (coppie valore-riferimento) checonsentono un accesso ordinato alle informazionicontenute nel database.
Il database non viene modificato, ma viene creato unINDICE.
CREATE INDEX <Nome-Indice>
ON TABLE <Nome-Tabella>
(Campo1, Campo2,...Campon)
Un database può essere ordinato su una sola chiave,ma possono essere creati più indici su chiavi diverse.
Possono essere creati e utilizzati più indicicontemporaneamente per un singolo database.
Il primo indice è l’indice PRIMARIO. Gli altri sonoindici SECONDARI.
DBMS - 41
Agenda
Nome Cognome Numero
Mario Rossi 212347
Ivo Bianchi 355221
Lucia Bianchi 212347
CREATE INDEX Ind_Cogn ON Agenda (Cognome)
CREATE INDEX Num ON Agenda (Numero)
Gli indici vengono usati dall’ottimizzatore cheseleziona l’indice più idoneo per una determinataquery.
• La ricerca sulla base di un valore della chiave èeseguita in modo più efficiente
• A ogni modifica del database (cancellazione oinserimento di un nuovo record, modifica del valoredi un campo per alcuni record) può esserenecessario riordinare l’indice e questa èun’operazione costosa.