41
DBMS - 1 ARCHIVI E BASI DI DATI Un file (archivio) è una raccolta di record logici. La gestione dei file è un servizio reso dal Sistema Operativo. 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 , la modifica e la ricerca dei dati. Un database (base di dati) è una raccolta di dati che vengono organizzati e gestiti da un sistema software specifico detto DBMS (Data Base Management System) che opera al di sopra del Sistema Operativo.

ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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.

Page 2: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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.

Page 3: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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).

Page 4: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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).

Page 5: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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.

Page 6: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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

Page 7: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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)

Page 8: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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

Page 9: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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).

Page 10: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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

Page 11: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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

Page 12: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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

Page 13: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

DBMS - 13

R U S =

Nome Cognome

Mario Rossi

Ivo Bianchi

Mario Neri

Maria Verdi

R - S:

Nome Cognome

Mario Neri

Page 14: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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

Page 15: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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

Page 16: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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

Page 17: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

DBMS - 17

ACCESS: CREAZIONE DI DB E TABELLE

Page 18: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

DBMS - 18

STRUTTURA

Page 19: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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

Page 20: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

DBMS - 20

INSERIMENTO DATI

Page 21: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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

Page 22: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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.

Page 23: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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.

Page 24: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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”

Page 25: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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>

Page 26: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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:

Page 27: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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

Page 28: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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

Page 29: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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

Page 30: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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

Page 31: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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

Page 32: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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’

Page 33: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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

Page 34: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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

Page 35: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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.

Page 36: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

DBMS - 36

JOIN : RELAZIONI

Page 37: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

DBMS - 37

AUTOCOMPOSIZIONEQUERY SEMPLICE SU UNA RELAZIONE

Page 38: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

DBMS - 38

RISULTATO

Page 39: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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

Page 40: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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.

Page 41: ARCHIVI E BASI DI DATI - unibo.it · BASI DI DATI Le basi di dati sono sorte alla fine degli anni ’60. Prima i sistemi informativi si basavano sull’uso di files separati. I programmi

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.