mini corso di data base - cs.unibo.itgaspari/www/teaching/inf_imp_db1.pdf · mini corso di data...

44
Mini Corso di Data Base Dott. Nicola Dragoni [email protected]

Upload: vuongdang

Post on 04-Oct-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Mini Corso di Data BaseDott. Nicola [email protected]

Programma del corso

• (Cenni di) Progettazione Concettuale

• (Cenni di) Progettazione Logica

• Interrogare un DB: il linguaggio SQL

• Tool Software: OpenOffice Base (e forse MS Access)

2

Progettazione concettualeL’obiettivo della progettazione concettuale è quello di rappresentare la realtà di interesse ad un alto livello di astrazione.

Corso di Basi di Dati

Il modello Entity Relationship (E/R)

Progettazione concettuale

Il modello E/R

5

Elementi di base• Entità: rappresenta un insieme di oggetti della realtà di cui si

individuano proprietà comuni

• Associazione: rappresenta un legame logico tra due o più entità

• Attributo: rappresenta proprietà elementari di entità o associazioni

Rappresentazione grafica:

Rappresentazione grafica:

Rappresentazione grafica:

Il modello E/R

6

Esempio

• STUDENTE e CORSO sono entità

• ESAME è un’associazione tra STUDENTE e CORSO

• N_MATRICOLA e NOME sono attributi di STUDENTE

• DATA e VOTO sono attributi di ESAME

• N_CORSO e TITOLO sono attributi di CORSO

STUDENTEN_MATRICOLA

NOMECORSO

N_CORSO

TITOLO

VOTO

ESAME

DATA

Il modello E/R

7

Associazioni• Le associazioni sono caratterizzate in termini di cardinalità

STUDENTEN_MATRICOLA

NOMECORSO

N_CORSO

TITOLO

VOTO

ESAME

DATA

(0, n) (0, n)

• Uno studente può aver sostenuto zero, uno o più esami.

• Con cardinalità minima 0 si afferma che uno studente esiste anche se non ha sostenuto esami:

min-card(STUDENTE, ESAME) = 0max-card(STUDENTE, ESAME) = n

card(STUDENTE, ESAME) = (0, n)

• Un corso può esistere indipendentemente dal fatto che vi siano o meno studenti che abbiano già sostenuto esami relativi a quel corso:

min-card(CORSO, ESAME) = 0max-card(CORSO, ESAME) = n

card(CORSO, ESAME) = (0, n)

Il modello E/R

8

Anelli• Un anello è un’associazione binaria tra un’entità e se stessa

• Il ruolo di un’entità è indicato tramite una label

DIPENDENTE

DIRIGE(0,1)

SUBORDINATO_A

CAPO_DI (0,n)

• Ogni capo può dirigere (CAPO_DI) più dipendenti

• Ogni dipendente è direttamente SUBORDINATO_A un solo capo

Esempio

Il modello E/R

9

Associazioni n-arie• Un’associazione n-aria connette più di due entità

• SI_TIENE è un’associazione ternaria che connette le entità CORSO, GIORNO e AULA, con le seguenti cardinalità:_

Esempio

CORSO

GIORNO

AULASI_TIENE

(1,3)

(0,n)

(0,40)card(CORSO, SI_TIENE) = (1,3)card(GIORNO, SI_TIENE) = (0,n)card(AULA, SI_TIENE) = (0,40)

Il modello E/R

10

Attributi• Dominio dell’attributo: insieme di valori legali per l’attributo

• Un attributo è detto semplice se è definito su un solo dominio

• Sie E un’entità o un’associazione e A un attributo di E:

• Cardinalità minima: min-card(A,E)è il minimo numero di valori dell’attributo associati a ogni istanza dell’entità o associazione E

• Cardinalità massima: max-card(A,E)è il massimo numero di valori dell’attributo associati a ogni istanza dell’entità o associazione E

Esempio

Il modello E/R

11

Attributi• Opzionale: min-card(A,E) = 0

può essere non specificato il nome dell’attributo

• Obbligatorio: min-card(A,E) = 1almeno un valore dell’attributo deve essere specificato

• Valore-singolo: max-card(A,E) = 1

• Valore-multiplo: max-card(A,E) > 1

• Una persona ha esattamente un nome• Una persona può avere al massimo

un indirizzo• Una persona può avere più lauree

PERSONA

NOME

INDIRIZZO (0,1)

LAUREA (0,N)

Esempio

Il modello E/R

11

Attributi• Opzionale: min-card(A,E) = 0

può essere non specificato il nome dell’attributo

• Obbligatorio: min-card(A,E) = 1almeno un valore dell’attributo deve essere specificato

• Valore-singolo: max-card(A,E) = 1

• Valore-multiplo: max-card(A,E) > 1

• Una persona ha esattamente un nome• Una persona può avere al massimo

un indirizzo• Una persona può avere più lauree

PERSONA

NOME

INDIRIZZO (0,1)

LAUREA (0,N)

Se non specifico è sottointeso (1,1)

Il modello E/R

12

Attributi composti• Un attributo composto è costituito da un

gruppo di attributi che hanno affinità nel significato e nell’uso.

Esempio: INDIRIZZO denota il gruppo di attributi VIA, CITTA’, REGIONE, NAZIONE e CAP.

• Con la cardinalità dell’attributo composto INDIRIZZO si dice che una persona può avere più indirizzi, ciascuno dei quali composto da via, città, regione, nazione e cap (opzionale)

INDIRIZZO

VIA

CITTA'

REGIONE

NAZIONE

CAP (0,1)

PERSONA(0,N)

• Se invece si fossero usati 5 attributi semplici si poteva solo stabilire la cardinalità di ciascuno di essi indipendentemente da quella degli altri.

Rappresentazione grafica:

Il modello E/R

13

Gerarchie di generalizzazione• Un’entità E è una generalizzazione di un gruppo di entità E1,

E2, ... , En se ogni oggetto delle classi E1, E2, ... , En è anche un oggetto della classe E

E1 E2 En. . .

E

• Proprietà di copertura della generalizzazione:• totale ed esclusiva: (t, e)• parziale ed esclusiva: (p, e)• parziale e sovrapposta: (p, o)• totale e sovrapposta: (t, o)

Il modello E/R

14

Gerarchie di generalizzazione - Esempio• La generalizzazione delle persone basate sul sesso è (t, e)• Vi sono persone che non sono nè impiegati, nè segretari e nè manager: la

generalizzazione basata sul’impiego è (p, e)• Gli impiegati possono avere più di un lavoro, anche diverso da quelli rappresentati

in figura: tale generalizzazione è (p, o)• Tutti i manager ricoprono il ruolo tecnico e/o amministrativo: la generalizzazione

basata sul ruolo manageriale è (t, o)

SEGRETARIA

(p, e)

MANAGER TECNICO

MANAGER AMMINISTRATIVO

MANAGER

PERSONA

UOMO DONNA

(t, e)

(t, o)

PROGRAMMATORE COMMERCIALE PUBBLICITARIO

IMPIEGATO

(p, o)

Il modello E/R

15

Ereditarietà delle proprietà• Nell’astrazione di generalizzazione tutte le proprietà dell’entità

generica sono ereditate dalle entità generalizzate.• Nel modello E/R ogni attributo, associazione e generalizzazione

definita per l’entità generica E è ereditata automaticamente da tutte le entità generalizzate E1, E2, ..., En

PERSONA

NOMESTUDENTE PROFESSORE

NOME

DIPARTIMENTO

NOME

MATRICOLA

PERSONA

STUDENTE PROFESSORE

NOME

DIPARTIMENTOMATRICOLA

L’attributo NOME della classe PERSONA è anche attributo delle classe STUDENTE e PROFESSORE, pertanto essi possono essere eliminati da tali classi ottenendo il secondo schema semplificato.

Il modello E/R

16

Subset• Un subset è una gerarchia di generalizzzazione con una sola entità

generalizzata.• La copertura di un subset è parziale.

STUDENTE ha, oltra agli attributi ereditati da PERSONA, l’attributo addizionale MATRICOLA

PERSONANOME

ETA'

STUDENTE MATRICOLA

ESEMPIO

Il modello E/R

17

Identificatori• Un identificatore (chiave) di un’entità E è una collezione di attributi o

di entità in associazione con E che individua in modo univoco tutte le istanze di E

• Sia E un’entità

• A1, ..., An: attributi a valore singolo ed obbligatori per E

• E1, .., Em: entità diverse da E e connesse ad E tramite associazioni binarie R1, ..., Rm obbligatorie (min-card(E, Ri) = 1) e uno-a-uno o molti-a-uno (max-card(E, Ri) = 1)

• Possibili identificatori I = {A1, ..., An, E1, ..., Em}, n≥0, m≥0, n+m≥1

• Valore dell’identificatore di un’istanza di E: l’insieme di tutti i valori degli attributi Ai, i = 1, ..., n e di tutte le istanze Ej, j= 1, ..., m

Il modello E/R

18

...continua...

• I è un identificatore di E se:(a) non ci sono due istanze di E con lo stesso valore

dell’identificatore(b)eliminando un attributo Ai oppure un’entità Ej da I, la proprietà

(a) non è più valida

Classificazione degli identificatori• semplice se n+m = 1 • composto se n+m > 1

• interno se m = 0 • esterno se n = 0

• mixed se n > 0 e m > 0

• Ogni entità deve avere almeno un identificatore

• Gli identificatori interni sono preferibili rispetto a quelli esterni

• Gli identificatori semnplici sono preferibili rispetto a quelli composti

Il modello E/R

19

Esempi di identificatori

• IDENTIFICATORE SEMPLICE ED INTERNO

PERSONANOME

ETA'

• IDENTIFICATORE COMPOSTO ED INTERNO

I = {NOME}

PERSONA

NOME

DATA_DI_NASCITA

NOME_GENITORE

RESIDENZA

ID_PERSONA

I = {NOME, DATA_DI_NASCITA, NOME_GENITORE, RESIDENZA}(il nome dell’identificatore ID_PERSONA è opzionale)

Il modello E/R

20

Esempi di identificatori

• IDENTIFICATORE COMPOSTO E MIXED

I = {NUM_IMPIEGATO_NEL_DIPARTIMENTO, DIPARTIMENTO}

IMPIEGATO DIPARTIMENTOLAVORA_IN(1,1) (1,N)

NUM_IMPIEGATO_NEL_DIPARTIMENTO

Il modello E/R

21

EntitàGerarchia di

generalizzazione

Associazione Subset

Attributo Identificatore

Attributo composto

Identificatore esterno/mixed

A

B

SIMBOLI GRAFICI DEL MODELLO E/R

Progettazione logica relazionaleCon il termine progettazione logica relazionale si intende la traduzione di uno schema disegnato tramite un modello concettuale (es. schema E/R) in uno schema disegnato tramite un modello relazionale (tabelle).

Corso di Basi di Dati

Progettazione logica relazionale

23

Generazione dello schema relazionale

1. Eliminazione degli identificatori esterni

2. Eliminazione di attributi composti e/o ripetuti

3. Traduzione delle entità

4. Traduzione delle associazioni

(1,n)

NOME

CONTINENTE

LUOGO

PAESE_STRANIERO

CITTA'_NAZIONALE

NOME

POPOLAZIONE

(t,e)

STATO

IN

(1,1)

Schema E/R Relazioni (tabelle)

. . .

Progettazione logica relazionale

24

Eliminazione degli identificatori esterni• Se la chiave primaria di un’entità E1 è data (completamente o

parzialmente) dalla chiave primaria di E2, questa viene importata in E1. L’associazione tra E1 e E2 viene così automaticamente tradotta e può essere eliminata.

STUDENTE ISCRITTO(1,1) (1,N)

Matricola CodFac CodUni

FACOLTA' PARTE_DI UNIVERSITA'(1,N)(1,1)

UNIVERSITA'

CodUni

CodUni

FACOLTA'

CodFac

CodFac

STUDENTE

Matricola

CodUni

Esempio

Progettazione logica relazionale

25

Eliminazione degli attributi composti• Si hanno due alternative:

1. Eliminare l’attributo composto e considerare i suoi componenti come attributi semplici

2. Eliminare i componenti e considerare l’attributo come semplice

Esempio

PERSONA

VIA

CITTA'

NAZIONE

INDIRIZZO

NOME

VIA

CITTA'

NAZIONE

NOME

PERSONA INDIRIZZO

NOME

PERSONA

Progettazione logica relazionale

26

Traduzione standard: entità• Ogni entità è tradotta con una relazione con gli stessi attributi• La chiave primaria della relazione è quella dell’entità stessa

Esempio

VIA

CITTA'

NAZIONE

NOME

PERSONA

PERSONA(NOME, VIA, CITTA’, NAZIONE)

Progettazione logica relazionale

27

Traduzione standard: associazioni• Ogni associazione R tra le entità E1, E2, ..., En è tradotta con una

relazione con gli stessi attributi, cui si aggiungono le chiavi primarie di tutte le entità che essa collega

• ogni chiave primaria di un’entità Ei tale che max-card(Ei, R) = 1 è una chiave (candidata) della relazione R

• altrimenti la chiave della relazione è composta dall’insieme di tutte le chiavi primarie delle entità collegate

• le chiavi primarie delle entità collegate sono chiavi esterne (FK) riferite alle corrispondenti entità

Progettazione logica relazionale

27

Traduzione standard: associazioni• Ogni associazione R tra le entità E1, E2, ..., En è tradotta con una

relazione con gli stessi attributi, cui si aggiungono le chiavi primarie di tutte le entità che essa collega

• ogni chiave primaria di un’entità Ei tale che max-card(Ei, R) = 1 è una chiave (candidata) della relazione R

• altrimenti la chiave della relazione è composta dall’insieme di tutte le chiavi primarie delle entità collegate

• le chiavi primarie delle entità collegate sono chiavi esterne (FK) riferite alle corrispondenti entità

• N.B.: La traduzione standard è praticamente l’unica possibilità per le associazioni in cui tutte le entità partecipano con molteplicità maggiore di 1, ovvero max-card(Ei, R) > 1, per ogni i

Progettazione logica relazionale

28

Traduzione standard: esempio

ESAME(0,N) (1,N)

STUDENTEMatricola

Nome CORSOCodice

Denominazione

ANNO VOTO

Studente(Matricola, Nome)

Corso(Codice, Denominazione)

Esame(Matricola, Codice, Anno, Voto)

FK: Matricola REFERENZIA StudenteFK: Codice REFERENZIA Corso

Progettazione logica relazionale

29

Associazione binaria uno a uno tradotta con due relazioni

E1(K1, A1, A2, ..., K2, C1, C2, ...)

• L’associazione si può compattare in una delle entità, diciamo E1, includendo in E1 gli attributi di R e la chiava primaria di E2 come chiave esterna (foreign key)

FK: K2 REFERENZIA E2

R(-,1) (-,1)

E1K1

A1 E2K2

B1

C1

E2(K2, B1, B2, ...)

Progettazione logica relazionale

30

Associazione binaria uno a uno tradotta con due relazioni

Uomo(CF, Nome)

FK: CF REFERENZIA Uomo

Servizio_Militare(Matricola, Corpo, CF, Data)

ASSOLTO(1,1) (0,1)SERVIZIO_

MILITARE

Matricola

Corpo UOMOCF

Nome

DATA

Esempio

Progettazione logica relazionale

31

Associazione binaria uno a uno tradotta con tre relazioni

Tastiera(CodTas, Tipo)

• E’ preferibile se l’associazione è parziale per entrambe le entità. Praticamente forzata se, oltre alla parzialità, le due chiavi primarie delle entità hanno domini distinti

FK: CodPC REFERENZIA PC

PC(CodPC, Descrizione)

COLLEGA(0,1) (0,1)

TASTIERACodTas

Tipo PCCodPC

Descrizione

CAVO

Collega(CodPC, CodTas, Cavo)

FK: CodTas REFERENZIA Tastiera

Progettazione logica relazionale

31

Associazione binaria uno a uno tradotta con tre relazioni

Tastiera(CodTas, Tipo)

• E’ preferibile se l’associazione è parziale per entrambe le entità. Praticamente forzata se, oltre alla parzialità, le due chiavi primarie delle entità hanno domini distinti

FK: CodPC REFERENZIA PC

PC(CodPC, Descrizione)

COLLEGA(0,1) (0,1)

TASTIERACodTas

Tipo PCCodPC

Descrizione

CAVO

Collega(CodPC, CodTas, Cavo)

FK: CodTas REFERENZIA Tastiera

Collega(CodTas, CodPC, Cavo)oppure

Progettazione logica relazionale

32

Associazione binaria uno a molti: traduzione con due relazioni• L’associazione può essere compattata nell’entità che partecipa con

molteplicità unitaria, diciamo E1, includendo in E1 gli attributi di R e la chiave primaria di E2 come chiave esterna

Provincia(Nome-P, Regione)Persona(CF, Nome, Nome-p, Dal)

FK: Nome-P REFERENZIA Provincia

E2(K2, B1, B2, ...)E1(K1, A1, A2, ..., K2, C1, C2, ...)

RISIEDE(1,N) (1,1)

PROVINCIANome-P

Regione PERSONACF

Nome

DAL

Progettazione logica relazionale

33

Associazione binaria uno a molti: traduzione con tre relazioni• Se la partecipazione di E1 è parziale, per evitare i valori nulli si

può optare per la traduzione standard con tre relazioni

Venditore(Nome, Telefono)

Scrive(Numero, Nome, Sconto)

FK: Numero REFERENZIA Ordine

SCRIVE(1,N) (0,1)

VENDITORENome

Telefono ORDINENumero

Data

Sconto

Ordine(Numero, Data)

FK: Nome REFERENZIA Venditore

Progettazione logica relazionale

34

Associazione unarie

• Un’associazione unaria può dar luogo ad una o due relazioni, dipendentemente dalle molteplicità in gioco

• Anello molti a molti

• Anello uno a molti

Progettazione logica relazionale

35

Associazione unarie: anello molti a molti

Confina(Sigla, Sigla-Confinante, Lung-Conf)

FK: Sigla REFERENZIA Stato

Stato(Sigla, Nome)

FK: Sigla-Confinante REFERENZIA Stato

• E’ tradotto con due relazioni, una per l’entità e una per l’associazione

• La chiave della relazione che modella l’associazione è composta da due attributi, i cui nomi riflettono il diverso ruolo dell’entità

• Ognuno di questi due attributi è anche foreign key

(0,N)STATO

Sigla

NomeStato

CONFINA

(0,N) Confinante

Lung-Conf

Progettazione logica relazionale

36

Associazione unarie: anello uno a molti

FK: Responsabile REFERENZIA ImpiegatoImpiegato(Codice, Nome, Responsabile)

• E’ possibile tradurlo con 1 o 2 relazioni

(0,N)IMPIEGATO

Codice

NomeResponsabile

DIPENDENZA

(0,1) Dipendente

Impiegato(Codice, Nome)Dipendenza(Dipendente, Responsabile)

FK: Dipendente REFERENZIA Impiegato

FK: Responsabile REFERENZIA Impiegato

Una relazione

Due relazioni

Progettazione logica relazionale

37

Associazione n-aria• Segue la traduzione standard

Prodotto(CodProd, Nome)Fornitore(CodForn, Telefono)

FK: CodPart REFERENZIA Parte

FORNITURA(1,N) (1,N)

FORNITORECodForn

Telefono PRODOTTOCodProd

Nome

Quantità

PARTECodPart

Descrizione

(1,N)

Parte(CodPart, Descrizione)Fornitura(CodPart, CodProd, CodForn, Quantità)

FK: CodProd REFERENZIA ProdottoFK: CodForn REFERENZIA Fornitore

Progettazione logica relazionale

• Proviamo a tradurre uno schema

Esempio

TITOLARE(1,N)

Codice

NomeCORSO

Id

Nome

Cognome

DOCENTE

(1,N)Matricola

Nome

Cognome

STUDENTE FREQUENTA(1,N)

(1,1)

Dipartimento

Progettazione logica relazionale

TITOLARE(1,N)

Codice

NomeCORSO

Id

Nome

Cognome

DOCENTE

(1,N)Matricola

Nome

Cognome

STUDENTE FREQUENTA(1,N)

(1,1)

Dipartimento

Studente(Matricola, Nome, Cognome)

Corso(Codice, Nome)

Frequenta(Matricola, Codice)

Progettazione logica relazionale

Docente(Id, Nome, Cognome, Dipartimento)

Corso(Codice, Nome, Docente)

TITOLARE(1,N)

Codice

NomeCORSO

Id

Nome

Cognome

DOCENTE

(1,N)Matricola

Nome

Cognome

STUDENTE FREQUENTA(1,N)

(1,1)

Dipartimento

Progettazione logica relazionale

Esempio: schema finale

Studente(Matricola, Nome, Cognome)

Frequenta(Matricola, Codice)

Docente(Id, Nome, Cognome, Dipartimento)

Corso(Codice, Nome, Docente)

TITOLARE(1,N)

Codice

NomeCORSO

Id

Nome

Cognome

DOCENTE

(1,N)Matricola

Nome

Cognome

STUDENTE FREQUENTA(1,N)

(1,1)

Dipartimento