MODULO LAB1 --> Introduzione alle basi di dati

38
Insegnamento di Informatica – a.a. 2015-16 Introduzione alle basi di dati INSEGNAMENTO DI INFORMATICA – A.A. 2015-16 Francesco Ciclosi Macerata, 27 ottobre 2015

Transcript of MODULO LAB1 --> Introduzione alle basi di dati

Page 1: MODULO LAB1 --> Introduzione alle basi di dati

Insegnamento di Informatica – a.a. 2015-16

Introduzione alle basi di dati

INSEGNAMENTO DI INFORMATICA – A.A. 2015-16

Francesco Ciclosi

Macerata, 27 ottobre 2015

Page 2: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Modelli di databse

Esistono vari tipi di modelli per le basi di dati,

tra i quali i più noti sono:

• Gerarchico

• Reticolare

• Relazionale

Page 3: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Modello gerarchico: schema

Page 4: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Modello gerarchico: considerazioni (1/2)

È adatto a rappresentare situazioni dove è

possibile fornire all’insieme dei dati una struttura

con entità che stanno in alto ed entità che stanno

in basso, secondo uno schema ad albero

Page 5: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Modello gerarchico: considerazioni (2/2)

In esso i nodi rappresentano le entità e gli archi

rappresentano le associazioni

Presenta dei limiti:

• La rigidità della struttura di dati creata

• La possibile ridondanza dei dati

Page 6: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Modello reticolare: schema

Page 7: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Modello reticolare: considerazioni (1/2)

Le entità rappresentano i nodi e le associazioni rappresentano gli archi di uno schema a grafo orientato

È un’estensione del modello gerarchico

• Consente anche associazioni tra entità che stanno in basso, e non solo dall’alto verso il basso

Page 8: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Modello reticolare: considerazioni (2/2)

Si differenzia dal modello gerarchico perché un record figlio può avere un numero qualsiasi di padri

• Ciò consente di evitate situazioni di ripetizione di dati uguali

Page 9: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Modello relazionale: schema

Page 10: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Il requisito di indipendenza dei dati (1/2)

Il modello relazionale si basa sui concetti di

relazione e di tabella

Risponde al requisito di indipendenza dei dati

distinguendo tra:

• Livello fisico (come i dati sono fisicamente

memorizzati nel calcolatore)

• Livello logico (relativo all’organizzazione dei dati e

al modo in cui vi si accede)

Page 11: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Il requisito di indipendenza dei dati (2/2)

Gli utenti e i programmatori fanno riferimento

al solo livello logico

Le strutture fisiche di memorizzazione dei dati

sono di esclusiva pertinenza del DBMS, che si

occupa anche dell’esposizione del livello logico

Page 12: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Modello relazionale: considerazioni (1/2)

Nasce nel 1970 e si basa su alcuni concetti

fondamentali tipicamente matematici

Rappresenta il database come un insieme di

tabelle

Si adatta in modo naturale alla classificazione e

alla strutturazione dei dati

Page 13: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Modello relazionale: considerazioni (2/2)

Assegna grande importanza all’uso rigoroso del

linguaggio matematico, con due obiettivi

importanti:

• Utilizzare un linguaggio conosciuto a livello

universale (quello matematico)

• Eliminare i problemi di ambiguità nella terminologia

e nella simbologia

Page 14: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Modello relazionale: definizione (1)

Si basa sul concetto matematico di relazione tra insiemi di oggetti

Page 15: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Modello relazionale: definizione (2)

Dati n insiemi A1, A2, A3, …, An, si dice relazione un

sottoinsieme dell’insieme di tutte le n-uple a1, a2, a3,

…, an che si possono costruire prendendo nell’ordine

un elemento a1 dal primo insieme A1, a2 dal secondo

insieme A2, e così via

• Il numero n si chiama grado della relazione

• Gli insiemi Ai si chiamano domini della relazione

• Il numero delle n-uple (indicate anche con il termine

tuple) si chiama cardinalità della relazione

Page 16: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Modello relazionale: definizione (3)

La relazione viene rappresentata mediante una tabella, con

• tante colonne quante sono i domini (grado della relazione)

• tante righe quante sono le n-uple (cardinalità della relazione)

Page 17: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Modello relazionale: definizione (4)

La relazione rappresenta un’entità

• ogni n-upla rappresenta un’istanza dell’entità

• le colonne rappresentano gli attributi dell’entità

• il dominio è l’insieme degli valori che possono essere assunti da un attributo

La chiave della relazione è un attributo o una combinazione di attributi che identificano univocamente le n-uple all’interno della relazione

• ovvero ogni riga della tabella possiede valori diversi per l’attributo (o gli attributi) chiave

Page 18: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Modello relazionale: regole di derivazione

Le tabelle vengono ricavate dal modello E/R

applicando le regole di derivazione del modello

logico:

1. Ogni entità diventa una relazione

2. Ogni attributo di un’entità diventa un attributo della

relazione, cioè il nome di una colonna della tabella

3. Ogni attributo della relazione eredita le caratteristiche

dell’attributo dell’entità da cui deriva

4. L’identificatore univoco di un’entità diventa la chiave

primaria della relazione derivata

Page 19: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Le operazioni relazionali: selezione (select)

Genera una nuova relazione costituita solo dalle n-uple della

relazione di partenza che soddisfano una determinata condizione

• Le righe con i valori degli attributi corrispondenti alla condizione

prefissata

La relazione ottenuta possiede tutte le colonne della relazione di

partenza, (stesso grado) ma ne ha cardinalità minore o uguale

Page 20: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Le operazioni relazionali: proiezione (project)

Genera una nuova relazione estraendo dalla tabella iniziale due o più colonne corrispondenti agli attributi prefissati

La relazione risultante ha: • grado minore o uguale al grado

della relazione di partenza

• cardinalità di norma uguale a quella di partenza

Page 21: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Le operazioni relazionali: congiunzione (join)

Combina due relazioni aventi uno o più attributi in

comune, generando una nuova relazione che contiene

le righe della prima e della seconda tabella

Questo tipo di congiunzione viene detta join naturale

(natural join)

Page 22: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Tipi di Join (1/3) Equi-join

• la relazione viene realizzata facendo corrispondere valori

uguali per attributi comuni nelle due tabelle

Join-esterno

• restituisce le righe dell’una e dell’altra tabella anche se

non sono presenti valori uguali per l’attributo comune

• di tutte queste vengono combinate solo le righe per le

quali il valore dell’attributo comune nella prima tabella

trova un valore uguale nella colonna dell’attributo

comune nella seconda tabella

Page 23: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Tipi di Join (2/3)

Left join

• elenca comunque tutte le righe della prima tabella

congiungendo tra le righe della seconda solo quelle

per le quali si trovano valori corrispondenti per

l’attributo comune

Right join

• elenca comunque tutte le righe della seconda tabella

congiungendo tra le righe della prima solo quelle per

le quali si trovano valori corrispondenti per

l’attributo comune

Page 24: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Tipi di Join (3/3)

Self-join

• combina le righe di una tabella con le righe della

stessa tabella quando sono presenti valori

corrispondenti per attributi, cioè due attributi con lo

stesso dominio

Page 25: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

B C D

2 3 4

2 3 5

2 4 12

7 8 10

A B C

1 2 3

6 7 8

9 7 8

5 7 9

R S

A B C D

1 2 3 4

1 2 3 5

6 7 8 10

9 7 8 10

R JOIN S

Page 26: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

A B C

1 2 3

6 7 8

9 7 8

5 7 9

B C D

2 3 4

2 3 5

2 4 12

7 8 10

A B C D

1 2 3 4

1 2 3 5

6 7 8 10

9 7 8 10

5 7 9

A B C D

1 2 3 4

1 2 3 5

2 4 12

6 7 8 10

9 7 8 10

R S

R Left Join S R Right Join S

Page 27: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Le operazioni relazionali: l’unione

In casi particolari consente di ottenere una nuova

tabella, che contiene le righe della prima e della

seconda tabella con riduzione a una di quelle ripetute

Page 28: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Le operazioni relazionali: l’intersezione

In casi particolari genera, a partire da due tabelle

omogenee, una nuova tabella che contiene soltanto

le righe comuni

Page 29: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Le operazioni relazionali: la differenza

In casi particolari genera una nuova tabella che

contiene soltanto le righe della prima tabella che

non sono contenute nella seconda tabella

Page 30: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Database life cycle (1/2)

È composto dalle seguenti fasi sequenziali:

• Progettazione

o Si definiscono l’organizzazione dei dati, le applicazioni che utilizzeranno il db e l’architettura del sistema

• Creazione del database

o Si creano le tabelle che costituiranno il db

• Introduzione dei dati

o Si popolano le tabelle

Page 31: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Database life cycle (2/2)

• Manutenzione dei dati

o Si ricercano nel db difetti tipici, quali record vuoti, duplicati, ecc…

• Ricerca delle informazioni

o Si ricercano informazioni mediante query SQL

Page 32: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

SQL – Structured Query Language

È un linguaggio di programmazione per

database relazionali

Consente di operare sui dati mediante:

• Interrogazione

• Modifica

• Cancellazione

Utilizza le query: strumenti di programmazione

Consente di amministrare il sistema di database

Page 33: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

SQL: uno e trino

Il linguaggio SQL è diviso in tre sezioni:

• Data Definition Language

o Raggruppa le operazioni attraverso le quali è possibile

creare, modificare e cancellare i database

• Data Manipulation Language

o Raggruppa le operazioni attraverso le quali è possibile

inserire, leggere e cancellare i dati

• Data Control Language

o Raggruppa le operazioni attraverso le quali è possibile

amministrare gli utenti e i permessi

Page 34: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Gli operatori SQL

Il linguaggio SQL utilizza una serie di operatori:

• Operatori di confronto

o Come ad esempio l’operatore EXISTS

• Operatori aritmetici

• Operatori condizionali

o Quale l’operatore WHERE

• Operatori logici

Page 35: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Alcuni esempi di query (1/3)

SELECT Cognome, Nome, Residenza

FROM Impiegati

WHERE Dipartimento='Prod';

_________________________________________________

SELECT Impiegati.Cognome, Impiegati.Nome,

Dipartimenti.Descrizione

FROM Impiegati, Dipartimenti

WHERE Impiegati.Dipartimento = Dipartimenti.Codice AND

Dipartimenti.Sede = 'Roma';

Page 36: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Alcuni esempi di query (2/3)

SELECT I.Cognome, I.Nome, D.Descrizione

FROM Impiegati AS I INNER JOIN Dipartimenti AS D ON I.Dipartimento = D.Codice

WHERE D.Sede = 'Roma';

____________________________________

SELECT I.Cognome, I.Nome, D.Descrizione

FROM Impiegati AS I LEFT JOIN Dipartimenti AS D ON I.Dipartimento = D.Codice;

Page 37: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

Alcuni esempi di query (3/3)

SELECT DISTINCT Impiegati.Residenza

FROM Impiegati;

______________________________________ SELECT ID AS Matricola, Cognome, Nome

FROM Impiegati;

______________________________________ SELECT Cognome, Nome, Stipendio AS [Stipendio Attuale],

Stipendio*1.05 AS [Stipendio Nuovo Contratto]

FROM Impiegati;

Page 38: MODULO LAB1 --> Introduzione alle basi di dati

Unimc - Dipartimento di Economia e Diritto - Corso di Laurea in Economia: banche, aziende e mercati

© Francesco Ciclosi – Settembre 2015 CC-BY-SA 4.0 – Common Deed – Legal Code

Insegnamento di Informatica – a.a. 2015-16

I miei contatti linkedin

http://it.linkedin.com/pub/francesco-ciclosi/62/680/a06/

facebook

https://www.facebook.com/francesco.ciclosi

twitter

@francyciclosi

www

http://www.francescociclosi.it