Elementi di Informatica 21
Prof. G. A. Di Lucca - Univ. del Sannio
Basi di dati / Data Base (DB)
Organizzazione di dati memorizzati su più archivi (file) fra loro collegati opportunamente
DBMS: Data Base Management System (Sistema di Gestione di Basi di Dati)
Consentono di:
definire e manipolare il contenuto della BD tramite opportune operazioni Mantenere i dati indefinitivamente
Permettere il reperimento dei dati in maniera efficiente Gestire la sicurezza e l’accesso ai dati
Diverse tipologie di DBMS: gerarchici, relazionali, oggetti, … Diversi sistemi di DBMS commerciali e open-source:
ad es. DBMS relazionali
Oracle, DB2, Informix, MS- Access, MySQL, PostgreSQL, …
Elementi di Informatica 22
Relazioni e basi di dati relazionali
Una relazione matematica R è un sottinsieme del prodotto cartesiano Dati due insiemi D1 e D2, il prodotto cartesiano tra essi è l’insieme delle possibili coppie ordinate (v1, v2) con v1 D1 e v2 D2 Esempio:
D1={1, 2, 4} D2={a,b}
D1 x D2 = {(1,a), (1,b), (2,a), (2,b), (4, a), (4, b)}
R = {(1,b), (4, a), (4, b)} (D1 x D2) R è un insieme
• non ci possono essere elementi duplicati
• non è definito un ordinamento fra gli elementi di R
Basi di dati Relazionali
Elementi di Informatica 23
Prof. G. A. Di Lucca - Univ. del Sannio
Relazioni e basi di dati relazionali
Relazione corrispondenza tra dati Una relazione è una n-pla ordinata di dati
Esempio:
Generalità : (nome, cognome, data nascita, residenza)
Generalità ={ (Gennaro, Esposito, 1/1/70, Napoli), (Ambrogio, Rossi, 1/2/73, Milano), (Romolo, Romano, 25/12/67, Roma), …}
Basi di dati Relazionali
Elementi di Informatica 24
Una relazione è tipicamente rappresentata con una tabella:
Basi di dati Relazionali
NOME COGNOME DATA nascita RESIDENZA
Gennaro Esposito 1/1/1970 Napoli
Ambrogio Rossi 1/2/1973 Milano
Romolo Romano 25/12/67 Roma
... ... ... ...
Schema della relazione:
l’insieme degli attributi (le colonne della tabella) che la caratterizzano Istanza di relazione:
l’insieme delle ennuple di valori che definiscono una particolare relazione fra tutte quelle possibili aventi il medesimo schema (l’insieme delle righe della tabella che rappresenta la relazione
Una base di dati relazionale è un insieme di relazioni (cioè di tabelle)
Elementi di Informatica 25
Prof. G. A. Di Lucca - Univ. del Sannio
Esempio:
base di dati “Casa_Editrice”
costituita dalle relazioni:
- AUTORI (Cognome, Nome, Data Nascita, Indirizzo, Telefono, Codice Fiscale);
- LIBRI (codice libro, titolo, prezzo, genere, nro contratto con autore) - AUTORI-LIBRI (Codice fiscale, codice libro)
corrispondenza ciascun autore con i libri che egli ha scritto;
- GENERE (genere, collocazione, responsabile)
tipologia (es. giallo, avventura, romanzo, saggistica,… ) del libro usata per la classificazione editoriale; ciascun genere ha un proprio responsabile editoriale
Basi di dati Relazionali
Elementi di Informatica 26
AUTORI Cognome Nome Data
nascita
Indirizzo Telefono Codice Fiscale
CG2 N14 D13 I1 T32 F1
CG4 N21 D22 I2 T44 F2
CG11 N36 D43 I3 T11 F3
CG6 N14 D54 I4 T72 F4
CG7 N52 D25 I5 T33 F5
CG11 N36 D16 I6 T22 F6
LIBRI Codice
libro
Titolo Prezzo Genere Nro Copie Vendute
Nro Contrato
C1 T31 LC1 G1 CV11 CT1
C2 T12 LC2 G2 CV23 CT2
C3 T43 LC1 G1 CV11 CT3
C4 T21 LC4 G3 CV14 CT4
C5 T56 LC2 G2 CV23 CT5
AUTORI - LIBRI Cod.fisc
.
Cod. libro
F1 C1
F1 C2
F1 C4
F2 C2
F2 C3
F3 C4
F4 C4
F5 C5
GENERE
Genere Collocazione Responsabile
G1 L1 R1
G2 L2 R2
G3 L3 R3
G4 L4 R4
Basi di dati Relazionali
Elementi di Informatica 27
Prof. G. A. Di Lucca - Univ. del Sannio
Chiave di una relazione:
Un insieme di attributi è detto chiave di una relazione (tabella) se identifica univocamente una riga della tabella
Con riferimento all’esempio si hanno le seguenti chiavi (in grassetto corsivo):
- AUTORI (Cognome, Nome, Data Nascita, Indirizzo, Telefono, Codice Fiscale);
- LIBRI (codice libro, titolo, prezzo, genere, nro contratto con autore) - AUTORI-LIBRI (Codice fiscale, codice libro) chiave multipla - GENERE (genere, collocazione, responsabile)
… ma anche collocazione o responsabile
Quando esiste più di una chiave possibile (come nel caso di GENERE), allora ne deve essere scelta una sola, che viene detta chiave primaria
Chiave Primaria:
Ogni tabella è caratterizzata da una ed una sola chiave primaria
Basi di dati Relazionali
Elementi di Informatica 28
Relazioni fra le tabelle
Le tabelle di un DB sono tipicamente interconnesse tra di loro per rappresentare informazioni più “ampie”
Per il DB “Casa Editrice
gli Autori hanno scritto dei Libri in base ad un contratto;
ciascuno Libro ha una collocazione nella biblioteca in base al Genere;
ciascun Libro ha una responsabile editoriale in base al Genere di ciascun Autore si sono vendute un numero totale di copie
Basi di dati Relazionali
AUTORI Nome D-nasc.
Indir.
C.F.
AUT-LIB Cod.f isc.
Cod.libro
LIBRI Cod.libro Titolo Costo Genere Contrat to 1
m
m 1
GENERE Genere Colloc.
Resp.
1 m
Le relazioni sono realizzate mediante l’uso di chiavi esterne
Le linee rappresentano le relazioni del database Editrice
Elementi di Informatica 29
Prof. G. A. Di Lucca - Univ. del Sannio
Basi di dati Relazionali
Realizzazione fisica di una tabella:
A livello di fisica realizzazione una tabella può essere vista come un file ad accesso random, del quale le righe sono i record
I record sono memorizzati sequenzialmente in posizioni distinte ciascuna identificata da un Indirizzo; ciascun record è individuato dal valore della chiave
FILE TABELLA Indirizzo Chiave. Resto del record
101 Carli ……..
102 Bianchi ……..
103 Zurlo ……..
104 Abate ……..
105 Drago ……..
106 Esposito ……..
…..
INDICE
Indirizzo Chiave.
104 Abate 102 Bianchi 101 Carli 105 Drago 106 Esposito
….. ……
103 Zurlo
Per accedere ad un record viene utilizzato un Indice: un file che associa a ciascun valore della chiave l’indirizzo del record corrispondente; tale file è ordinato sulla chiave
L’accesso ad un record avviene tramite la sua chiave: si cerca nell’indice il record con il valore della chiave e si ottiene il valore dell’indirizzo con cui si accede al File Tabella
possibile avere più file indice indice primario:
file indice relativo alla chiave primaria
Elementi di Informatica 30
Basi di dati Relazionali
Operazioni su un DB
• Definizione dello schema delle relazioni che la costituiscono Per ciascuna relazione definire:
attributi, e per ciascun attributo il tipo di dati la chiave primaria
eventuali chiavi esterne
La definizione di DB viene fatta mediante l’uso di DDL (Data Definition Language)
• Creazione di una tabetta (create)
• Inserimento di nuove righe nelle tabelle
• Cancellazione di righe (delete)
• Aggiornamento di valori nelle righe (update)
• Interrogazioni (query) Selezione
Proiezione Join
Elementi di Informatica 31
Prof. G. A. Di Lucca - Univ. del Sannio
Basi di dati Relazionali
Operazioni su un DB
• Creazione di una tabella (create)
CREATE TABLE <nome_tabella>
(nome_attributo1 tipo [vincolo], … , nome_attributoN tipo [vincolo]) Es.:
CREATE TABLE Studenti
(Matricola VARCHAR(6) NOT NULL, Cognome VARCHAR(40) NOT NULL, Nome VARCHAR(40) NOT NULL, DataNascita VARCHAR (8),
PRIMARY KEY (Matricola) )
Crea una nuova Tabella, vuota, di nome Studenti con lo schema indicato e con Matricola come chiave:
Matricola Cognome Nome DataNascita
Elementi di Informatica 32
Basi di dati Relazionali
Operazioni su un DB
•Inserimento di nuove righe nelle tabelle
INSERT INTO <nome_tabella> (attrbuto1, …., attributoN) VALUES (valore1, …, valoreN)
Es.:
INSERT INTO Studenti (Matricola, Cognome, Nome, DataNascita) VALUES (863123, ‘Rossi’, ‘Mario’, ‘25111994’)
Inserisce nella tabella Studenti una nuova riga con i valori indicati nei rispettivi attributi
Matricola Cognome Nome DataNascita
863123 Rossi Mario 25111994
Elementi di Informatica 33
Prof. G. A. Di Lucca - Univ. del Sannio
Basi di dati Relazionali
Operazioni su un DB
• Cancellazione di righe (delete)
DELETE FROM <nome_tabella> WHERE <condizione>
Es.:
DELETE FROM Studenti WHERE Matricola = “863445”
Cancella nella tabella Studenti la riga corrispondente alla Matricola= “863445”:
Prima di DELETE:
Matricola Cognome Nome DataNascita
863123 Rossi Mario 25111994
863445 Verdi Antonio 27101994
863234 Bianco Maria 12011999
Matricola Cognome Nome DataNascita
863123 Rossi Mario 25111994
863234 Bianco Maria 12011999
Dopo DELETE:
Elementi di Informatica 34
Basi di dati Relazionali
Operazioni su un DB
• Aggiornamento di valori nelle righe (update)
UPDATE <nome_tabella> SET Attributo1 = <espressione>, …, AttibutoN=<espressione>
WHERE <condiziione>
UPDATE Studenti SET Nome = “Anna” WHERE Matricola = “863234”
Modifica nella tabella Studenti il campo Nome nella riga con Matricola = “863234” ponendolo uguale ad “Anna”.
Prima di UPDATE :
Matricola Cognome Nome DataNascita
863123 Rossi Mario 25111994
863234 Bianco Maria 12011999
Matricola Cognome Nome DataNascita
863123 Rossi Mario 25111994
863234 Bianco Anna 12011999
Dopo UPDATE :
Elementi di Informatica 35
Prof. G. A. Di Lucca - Univ. del Sannio
Selezione
La selezione effettua la selezione delle righe di una tabella che soddisfano specificate condizioni:
SELECT * FROM <nome_tabella> WHERE <condizioni>
Esempio: usando la tabella Generalità
Basi di dati Relazionali
COGNOME NOME DATA nascita RESIDENZA
Esposito Gennaro 1/1/1970 Napoli
Rossi Ambrogio 1/2/1973 Milano
Romano Romolo 25/12/67 Roma
Esposito Carlo 11/11/11 Torino
Verde Gennaro 9/9/55 Milano
Rossi Antonio 4/4/33 Napoli
Bianco Gennaro 21/9/45 Roma
COGNOME NOME DATA nascita RESIDENZA
Esposito Gennaro 1/1/1970 Napoli
Verde Gennaro 9/9/55 Milano
Bianco Gennaro 21/9/45 Roma
SELECT * FROM Generalità WHERE NOME = “Gennaro”
Elementi di Informatica 36
Proiezione
La proiezione seleziona alcune colonne (attributi) di una tabella opportunamente specificate SELECT <lista_attributi> FROM <nome_tabella>
Esempio: usando la tabella Generalità
Basi di dati Relazionali
COGNOME NOME DATA nascita RESIDENZA
Esposito Gennaro 1/1/1970 Napoli
Rossi Ambrogio 1/2/1973 Milano
Romano Romolo 25/12/67 Roma
Esposito Carlo 11/11/11 Torino
Verde Gennaro 9/9/55 Milano
Rossi Antonio 4/4/33 Napoli
Bianco Gennaro 21/9/45 Roma
SELECT COGNOME, DATA nascita FROM Generalità COGNOME DATA nascita Esposito 1/1/1970
Rossi 1/2/1973 Romano 25/12/67 Esposito 11/11/11
Verde 9/9/55
Rossi 4/4/33
Bianco 21/9/45
Elementi di Informatica 37
Prof. G. A. Di Lucca - Univ. del Sannio
Selezione con Proiezione
Selezione e Proiezione possono essere usate insieme per selezionare solo alcune colonne (attributi) di righe di una tabella che soddisfano condizioni opportunamente specificate
SELECT <lista_attributi> FROM <nome_tabella> WHERE <condizioni>
Esempio: usando la tabella Generalità
Basi di dati Relazionali
COGNOME NOME DATA nascita RESIDENZA
Esposito Gennaro 1/1/1970 Napoli
Rossi Ambrogio 1/2/1973 Milano
Romano Romolo 25/12/67 Roma
Esposito Carlo 11/11/11 Torino
Verde Gennaro 9/9/55 Milano
Rossi Antonio 4/4/33 Napoli
Bianco Gennaro 21/9/45 Roma
SELECT COGNOME, DATA nascita FROM Generalità WHERE NOME = “Gennaro”
COGNOME DATA nascita Esposito 1/1/1970
Verde 9/9/55
Bianco 21/9/45
Elementi di Informatica 38
Join
L’operazione congiunge due, o più, tabelle che hanno qualche attributo in comune:
Dette R ed S due tabelle si ha:
SELECT <lista_attributi> FROM R, S WHERE <R.attributo_R1=S.attributo_S1>
Esempio:
Basi di dati Relazionali
SELECT * FROM LIBRI, GENERE WHERE LIBRI.Genere= GENERE.Genere LIBRI
Codice libro
Titolo Prezzo Genere Nro Copie Vendute
Nro Contrato
C1 T31 LC1 G1 CV11 CT1
C2 T12 LC2 G2 CV23 CT2
C3 T43 LC1 G1 CV11 CT3
C4 T21 LC4 G3 CV14 CT4
C5 T56 LC2 G2 CV23 CT5
GENERE
Genere Collocazione Responsabile
G1 L1 R1
G2 L2 R2
G3 L3 R3
G4 L4 R4
LIBRI Codice
libro
Titolo Prezzo Genere Nro Copie Vendute
Nro Contrato
Collocazione Responsabile
C1 T31 LC1 G1 CV11 CT1 L1 R1
C2 T12 LC2 G2 CV23 CT2 L2 R2
C3 T43 LC1 G1 CV11 CT3 L1 R1
C4 T21 LC4 G3 CV14 CT4 L3 R3
C5 T56 LC2 G2 CV23 CT5 L2 R2
Elementi di Informatica 39
Prof. G. A. Di Lucca - Univ. del Sannio
Elementi di Informatica 40
Definizione di una tabella: si assegna il nome (es. Autori)
Elementi di Informatica 41
Prof. G. A. Di Lucca - Univ. del Sannio
Definizione dei campi della tabella Autori
(modalità Visualizzazione struttura)Elementi di Informatica 42
‘Riempimento’ della tabella Autori
(modalità Visualizzazione foglio dati)
Elementi di Informatica 43
Prof. G. A. Di Lucca - Univ. del Sannio
Definizione di una query di Selezione
SELECT Autore.Nome, Autore.Cognome, Autore.CodiceFiscale, Autore.DataNascita, Autore.Indirizzo, Autore.Telefono FROM Autore WHERE (((Autore.Nome)='pollo'));
Elementi di Informatica 44
Esecuzione della query di Selezione
Elementi di Informatica 45
Prof. G. A. Di Lucca - Univ. del Sannio
Elementi di Informatica 46
Es. Join: tabelle interessate
Elementi di Informatica 47
Prof. G. A. Di Lucca - Univ. del Sannio
Esecuzione del Join
Elementi di Informatica 48
Basi di dati Relazionali
SELECT (LIBRI.Titolo, LIBRI.NroCopieVendute, AUTORI.Cognome) FROM AUTORI, LIBRI, AUTORI-LIBRI WHERE ((LIBRI.Codicelibro= AUTORI-LIBRI.Cod.libro)) and (AUTORI-LIBRI.Cod.fisc = AUTORI.CodiceFiscale))
LIBRI Codice
libro
Titolo Prezzo Genere Nro Copie Vendute
Nro Contrato
C1 T31 LC1 G1 CV11 CT1
C2 T12 LC2 G2 CV23 CT2
C3 T43 LC1 G1 CV11 CT3
C4 T21 LC4 G3 CV14 CT4
C5 T56 LC2 G2 CV23 CT5
AUTORI Cognome Nome Data
nascita Indirizzo Telefono Codice Fiscale
CG2 N14 D13 I1 T32 F1
CG4 N21 D22 I2 T44 F2
CG11 N36 D43 I3 T11 F3
CG6 N14 D54 I4 T72 F4
CG7 N52 D25 I5 T33 F5
CG11 N36 D16 I6 T22 F6
AUTORI - LIBRI Cod.fisc. Cod. libro
F1 C1
F1 C2
F1 C4
F2 C2
F2 C3
F3 C4
F4 C4
F5 C5
Titolo Nro Copie
Vendute Cognome
T31 CV11 CG2
T12 CV23 CG2
T12 CV23 CG4
T43 CV11 CG4
T21 CV14 CG2
T21 CV14 CG11
T21 CV14 CG6
T56 CV23 CG7
Elementi di Informatica 49
Prof. G. A. Di Lucca - Univ. del Sannio
Basi di dati Relazionali
SELECT (LIBRI.Titolo, LIBRI.NroCopieVendute, AUTORI.Cognome) FROM AUTORI, LIBRI, AUTORI-LIBRI WHERE ((LIBRI.Codicelibro= AUTORI-LIBRI.Cod.libro)) and (AUTORI-LIBRI.Cod.fisc = AUTORI.CodiceFiscale))
AUTORI Cognome Nome Data
nascita
Indirizzo Telefono Codice Fiscale
CG2 N14 D13 I1 T32 F1
CG4 N21 D22 I2 T44 F2
CG11 N36 D43 I3 T11 F3
CG6 N14 D54 I4 T72 F4
CG7 N52 D25 I5 T33 F5
CG11 N36 D16 I6 T22 F6
AUTORI - LIBRI Cod.fisc. Cod. libro
F1 C1
F1 C2
F1 C4
F2 C2
F2 C3
F3 C4
F4 C4
F5 C5
AUTORI x AUTORI-LIBRI Cognome Nome Data
nascita
Indirizzo Telefono Codice Fiscale
Cod.libro
CG2 N14 D13 I1 T32 F1 C1
CG2 N14 D13 I1 T32 F1 C2
CG2 N14 D13 I1 T32 F1 C4
CG4 N21 D22 I2 T44 F2 C2
CG4 N21 D22 I2 T44 F2 C3
CG11 N36 D43 I3 T11 F3 C4
CG6 N14 D54 I4 T72 F4 C4
CG7 N52 D25 I5 T33 F5 C5
Elementi di Informatica 50
Basi di dati Relazionali
SELECT (LIBRI.Titolo, LIBRI.NroCopieVendute, AUTORI.Cognome) FROM AUTORI, LIBRI, AUTORI-LIBRI WHERE ((LIBRI.Codicelibro= AUTORI-LIBRI.Cod.libro)) and (AUTORI-LIBRI.Cod.fisc = AUTORI.CodiceFiscale))
LIBRI x AUTORI-LIBRI Codice
libro
Titolo Prezzo Genere Nro Copie Vendute
Nro Contrato
Cod.Fisc
C1 T31 LC1 G1 CV11 CT1 F1
C2 T12 LC2 G2 CV23 CT2 F1
C2 T12 LC2 G2 CV23 CT2 F2
C3 T43 LC1 G1 CV11 CT3 F2
C4 T21 LC4 G3 CV14 CT4 F1
C4 T21 LC4 G3 CV14 CT4 F3
C4 T21 LC4 G3 CV14 CT4 F4
C5 T56 LC2 G2 CV23 CT5 F5
AUTORI - LIBRI Cod.fisc. Cod. libro
F1 C1
F1 C2
F1 C4
F2 C2
F2 C3
F3 C4
F4 C4
F5 C5
LIBRI Codice
libro Titolo Prezzo Genere Nro Copie Vendute
Nro Contrato
C1 T31 LC1 G1 CV11 CT1
C2 T12 LC2 G2 CV23 CT2
C3 T43 LC1 G1 CV11 CT3
C4 T21 LC4 G3 CV14 CT4
C5 T56 LC2 G2 CV23 CT5
Elementi di Informatica 51
Prof. G. A. Di Lucca - Univ. del Sannio
AUTORI x AUTORI-LIBRI Cognome Nome Data
nascita
Indirizzo Telefono Codice Fiscale
Cod.libro
CG2 N14 D13 I1 T32 F1 C1
CG2 N14 D13 I1 T32 F1 C2
CG2 N14 D13 I1 T32 F1 C4
CG4 N21 D22 I2 T44 F2 C2
CG4 N21 D22 I2 T44 F2 C3
CG11 N36 D43 I3 T11 F3 C4
CG6 N14 D54 I4 T72 F4 C4
CG7 N52 D25 I5 T33 F5 C5
Titolo Nro Copie Vendute
Cognome
T31 CV11 CG2
T12 CV23 CG2
T12 CV23 CG4
T43 CV11 CG4
T21 CV14 CG2
T21 CV14 CG11
T21 CV14 CG6
T56 CV23 CG7
LIBRI x AUTORI-LIBRI Codice
libro
Titolo Prezzo Genere Nro Copie Vendute
Nro Contrato
Cod.Fisc
C1 T31 LC1 G1 CV11 CT1 F1
C2 T12 LC2 G2 CV23 CT2 F1
C2 T12 LC2 G2 CV23 CT2 F2
C3 T43 LC1 G1 CV11 CT3 F2
C4 T21 LC4 G3 CV14 CT4 F1
C4 T21 LC4 G3 CV14 CT4 F3
C4 T21 LC4 G3 CV14 CT4 F4
C5 T56 LC2 G2 CV23 CT5 F5