• Non ci sono risultati.

Basi di dati / Data Base (DB)

N/A
N/A
Protected

Academic year: 2021

Condividi "Basi di dati / Data Base (DB) "

Copied!
16
0
0

Testo completo

(1)

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

(2)

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)

(3)

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

(4)

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

(5)

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

(6)

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

(7)

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 :

(8)

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

(9)

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

(10)

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)

(11)

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)

(12)

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

(13)

Elementi di Informatica 45

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 46

Es. Join: tabelle interessate

(14)

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

(15)

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

(16)

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

Riferimenti

Documenti correlati

Essa ebbe origine dalle apparizioni della Vergine Maria, nel 1830, a un’umile novizia delle Figlie della Carità, la futura santa Caterina Labouré.. La Medaglia, coniata secondo

Shakespeare, W. Racconti Racconti Ed.. Il richiamo della foresta Romanzo avventura Tascabili Bompiani 1987 608. Goethe, J. Il dottor Prottor e la distruzione del mondo.. Socrate

Fuori discussione la rilevanza e l’utilità degli studi che indagano la divi- sione delle mansioni all’interno del nucleo familiare, la struttura e le trasformazioni degli

Condotte volte al danneggiamento e alla distruzione di oggetti di proprietà della vittima oltre che attacchi nei confronti della stessa.. Violenza assistita

 la formazione per disoccupati : più direttamente legata agli aspetti della crisi e delle politiche regionali per l’occupazione e la crescita..  A conclusione riprenderemo

281 VOCI DEL MARE E DELLA TERRA LUIGI UGOLINI 1. 188 LE PICCOLE DONNE CRESCONO LUISA MAY ALCOTT 2

“L’evento – racconta Bruno Barone, segretario provinciale del SAP – sarà focalizzato sul primo momento al quale segue la violenza sulla donna, ed è la

331/A 15 Funzionari Mediatori Culturali Ministero della Giustizia – Manuale per la preparazione alla prova preselettiva, scritta e. orale € 42,00