mini corso di data base - cs.unibo.itgaspari/www/teaching/inf_imp_db1.pdf · mini corso di data...
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 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