Upload
ngonga
View
216
Download
0
Embed Size (px)
Citation preview
1
Prof. Mauro Gaspari
Tecnologie dell'Informazione e della Comunicazione
Sistemi per la gestione di basi di Dati
1
Rielaborazione delle slide del Dott. Matteo Magnani e dell Dott. Nicola Dragoni
2
Progettazione concettuale
L’obiettivo della progettazione concettuale è quello di rappresentare la realtà di interesse ad un alto livello di astrazione.
Basi di Dati
4
I modelli concettuali dei dati
• Modello: l’insieme delle regole e strutture che permettono la rappresentazione della realtà di interesse
• Schema: la rappresentazione di una specifica realtà secondo un determinato modello
Modello
Rappresentazione(schema)Realtà percepita
Regole di costruzione e di descrizione
•Il modello fornisce le regole per la costruzione della rappresentazione
•La rappresentazione è data da un insieme di simboli posti in corrispondenza con la realtà di interesse
•La realtà di interesse è una porzione di mondo reale così come è percepita da chi costruisce la rappresentazione
5
I modelli concettuali dei dati
• Astrazione: è un procedimento mentale che si adotta quando si evidenziano alcune proprietà e caratteristiche di un insieme di oggetti
• altre proprietà, giudicate non rilevanti, vengono trascurate
•Primitive di astrazione comuni a tutti i modelli:
•classificazione
•generalizzazione
•aggregazione
6
I modelli concettuali dei dati
• Classificazione: astrazione che conduce alla definizione di una classe a partire da un insieme di oggetti caratterizzati da proprietà comuni
• Esempio: i membri della classe SETTIMANA sono Lunedì, ... Giovedì, ..., Domenica
• Relazione IS_MEMBER_OF: esiste tra un elemento della classe e la classe stessa (esempio: Giovedì IS_MEMBER_OF SETTIMANA)
• gli stessi oggetti possono essere classificati in modi diversi
TAVOLO SEDIA MOBILE NERO MOBILE BIANCO
sedia nera x
sedia bianca y
tavolo bianco k
tavolo nero w
7
I modelli concettuali dei dati
• Generalizzazione: astrazione che definisce una relazione di sottoinsieme tra una classe (superclasse) e altre classi (sottoclassi)
• Esempio: la classe PERSONA è una generalizzazione delle classi UOMO e DONNA
•La generalizzazione stabilisce una corrispondenza (mapping) tra gli elementi di una classe (superclasse) e gli elementi delle classi generalizzate (sottoclassi)
PERSONA
UOMO DONNA
•Per tale mapping si definiscono delle proprietà di copertura
8
I modelli concettuali dei dati
• Copertura totale o parziale
• totale (t): ogni elemento della classe generica è in relazione con almeno un elemento delle classi generalizzate
• parziale (p): esistono alcuni elementi della classe generica che non sono in relazione con alcun elemento delle classi generalizate
•Copertura esclusiva o sovrapposta
•esclusiva (e): ogni elemento della classe generica è in relazione con al massimo un elemento delle classi generalizzate
•sovrapposta (o): esistono alcuni elementi della classe generica che sono in relazione con elementi di due o più classi generalizzate
Maschio Femmina
Animali
totale, esclusiva
Auto Moto
Veicoli
parziale, esclusiva
Maschio
Impiegato
Persone
parziale, sovrapposta
Tennisti
Calciatori
Giocatori
totale, sovrapposta
9
I modelli concettuali dei dati• Aggregazione: astrazione mediante la quale si giunge alla definizione di un
concetto a partire da altri concetti che ne rappresentano le parti componenti
• Esempio: il concetto BICICLETTA è la classe i cui componenti sono RUOTA, PEDALE e MANUBRIO
• Relazione IS_PART_OF: esiste tra un concetto componente e il concetto composto (es: PEDALE IS_PART_OF BICICLETTA)
• L’aggregazione stabilisce una corrispondenza (mapping) tra gli elementi di una classe componente e gli elementi della classe composta
•Un associazione binaria tra classi (e' un tipo di aggregazione): corrispondenza stabilita fra 2 classi
•Esempio: USA è un'associazione binaria delle classi PERSONA e CASA, che stabilisce un mapping tra gli elementi delle due classi
p1
p2
p3
c1
c2
c3c4USA
PERSONA CASA
10
Cardinalità delle associazioni
•Cardinalità minima di C1 in A (min-card(C1, A)): è il minimonumero di corrispondenze nell'associazione A alle quali ogni membro di C1 deve partecipare
Sia A una relazione tra C1 e C2
•Cardinalità massima di C1 in A (max-card(C1, A)): è il massimonumero di corrispondenze nell'associazione A alle quali ogni membro di C1 può partecipare
•Partecipazione opzionale (min-card(C1, A) = 0): alcuni elementi di C1 possono non essere aggregati tramite l'associazione A a elementi di C2
•Partecipazione obbligatoria (min-card(C1, A) > 0): ad ogni elemento di C1 deve essere aggregato, tramite A, almeno un elemento di C2
•Se min-card(C1, A) = m1 e max-card(C1, A) = M1, allora la cardinalità di C1 in A è (m1, M1), ovvero card(C1, A) = (m1, M1)
11
Cardinalità delle associazioni
•Uno a uno (one-to-one)max-card(C1, A) = 1max-card(C2, A) = 1C1 C2
•Molti a uno (many-to-one)max-card(C1, A) = 1max-card(C2, A) = nC1 C2
•Uno a molti (one-to-many)max-card(C1, A) = nmax-card(C2, A) = 1C1 C2
•Molti a molti (many-to-many)max-card(C1, A) = nmax-card(C2, A) = nC1 C2
12
Esempio di associazione binaria
•Ogni persona usa almeno una casa: min-card(PERSONA, USA) = 1
•Ogni persona può usare un generico numero di case: max-card(PERSONA, USA) = n
•Alcuni case non sono abitate: min-card(CASA, USA) = 0
•Ogni casa può ospitare molte persone: max-card(CASA, USA) = n
p1
p2
p3
c1
c2
c3c4
USAPERSONA CASA
•Cardinalità di PERSONA in USA: card(PERSONA, USA)= (1,n)
•Cardinalità di CASA in USA: card(CASA, USA)= (0,n)
13
Altri esempi di associazioni binarie
•Alcune persone non possiedono una casa: min-card(PERSONA, POSSIEDE) = 0
•Ogni persona può possedere un generico numero di case: max-card(PERSONA, POSSIEDE) = n
•Ogni casa deve essere posseduta da una e una sola persona: min-card(CASA, POSSIEDE) = 1max-card(CASA, POSSIEDE) = 1
p1
p2
p3
c1
c2
c3c4
POSSIEDEPERSONA CASA
•Cardinalità di PERSONA in POSSIEDE: card(PERSONA, POSSIEDE)= (0,n)
•Cardinalità di CASA in POSSIEDE: card(CASA, POSSIEDE)= (1,1)
15
Elementi 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:
16
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
17
Associazioni
•Le associazioni sono caratterizzate in termini di cardinalità
•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)
18
Anelli
•Un anello è un'associazione binaria tra un’entità e se stessa
•Il ruolo di un’entità è indicato tramite una label
•Ogni capo può dirigere (CAPO_DI) più dipendenti
•Ogni dipendente è direttamente SUBORDINATO_A un solo capo
Esempio
19
Associazioni n-arie
•Un'associazione n-aria connette più di due entità
•SI_TIENE è una relazione ternaria che connette le entità CORSO, GIORNO e AULA, con le seguenti cardinalità:_
Esempio
card(CORSO, SI_TIENE) = (1,3)card(GIORNO, SI_TIENE) = (0,n)card(AULA, SI_TIENE) = (0,40)
20
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 una relazione 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 relazione E
•Cardinalità massima: max-card(A,E)è il massimo numero di valori dell’attributo associati a ogni istanza dell’entità o relazione E
21
Attributi
•Opzionale: min-card(A,E) = 0può 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ù laure
NB. Se non è specificato si sottointende
(1,1)
22
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)
•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:
23
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)
24
Esempio di generalizzazione
•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 sull’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)
25
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
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.
26
Subset
•Un subset è una gerarchia di generalizzazione con una sola entità generalizzata.•La copertura di un subset è parziale.
STUDENTE ha, oltre agli attributi ereditati da PERSONA, l’attributo addizionale MATRICOLA
ESEMPIO
27
Identificatori (chiave)
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}, ν ≥ 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
28
...continua
I è un identificatore di E se:● non ci sono due istanze di E con lo stesso valore dell’identificatore● 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 semplici sono preferibili rispetto a quelli composti
29
Esempi di Identificatori
Esempi di identificatori
•IDENTIFICATORE SEMPLICE ED INTERNO
•IDENTIFICATORE COMPOSTO ED INTERNO
I = {NOME}
I = {NOME, DATA_DI_NASCITA, NOME_GENITORE, RESIDENZA}
(il nome dell’identificatore ID_PERSONA è opzionale)
30
Esempi di Identificatori
•IDENTIFICATORE COMPOSTO E MIXED
I = {NUM_IMPIEGATO_NEL_DIPARTIMENTO, DIPARTIMENTO}
33
Metodologie per il progetto concettuale
•La costruzione di uno schema E/R è un processo incrementale: la nostra percezione della realtà è progressivamente raffinata e arricchita e lo schema concettuale è gradualmente sviluppato
•Primitive di raffinamento: trasformazioni che applicate allo schema iniziale producono lo schema finale
Strategie di progetto:•top-down•bottom-up•mixed
Primitive di raffinamento+
Strategie di progetto=Metodologie di progetto
34
Primitive per il progetto concettuale
•Il progetto di uno schema concettuale è un processo iterativodurante il quale, partendo da uno schema iniziale, si effettuano delle trasformazioni di schema per produrre lo schema finale
Esempio
Schema iniziale
Schema finale Trasformazione
35
Caratteristiche delle trasformazionidello schema
Ogni trasformazione si applica ad uno schema iniziale e produce uno schema finale. Nell’esempio lo schema iniziale è un’entità (LUOGO) e lo schema finale è uno coppia di entità (CITTA’ e STATO) connesse da una relazione (VIVE_IN).
Ogni trasformazione mappa nomi di concetti dello schema iniziale in nomi di concetti dello schema finale. Nell’esempio al nome iniziale LUOGO corrisponde l’insieme di nomi CITTA’, IN, STATO.
I concetti dello schema finale devono ereditare tutte le connessioni logiche definite per i concetti dello schema iniziale. Nell’esempio l’associazione VIVE_IN tra PERSONA e LUOGO è ereditata dall’entità CITTA’.
Trasformazione
36
Trasformazioni Primitive
•Le trasformazioni primitive sono trasformazioni che non possono essere decomposte in altre più semplici
•Primitive top-down
•Primitive bottom-up
•Due tipologie:
37
Primitive top-down
•Hanno una struttura semplice: lo schema iniziale è un concetto semplice e lo schema finale consiste in un piccolo insieme di concetti
•Tutti i nomi sono raffinati in nuovi nomi che descrivono il concetto originale ad un livello di astrazione più basso
•Le connessioni logiche dovrebbero essere ereditate da un singolo concetto dello schema risultante.
38
Elenco delle Primitive Top-Down
Un’entità è trasformata in un'associazione tra due o più entitàEsempioL’entità LUOGO è raffinata nella relazione VIVE_IN tra le entità CITTA’ e STATO
Un’entità è trasformata in una gerarchia di generalizzazione o in un subset
EsempioL’entità PERSONA è trasformata in una generalizzazione che include MASCHIO e FEMMINA
39
Elenco delle Primitive top-down
Un’entità è trasformata in un insieme di entità indipendenti. L’effetto di questa trasformazione è di introdurre nuove entità, non di stabilire associazioni o generalizzazioni tra di esse
Esempio
L’entità PREMIO è divisa in due entità, PREMIO_NOBEL e OSCAR e nessuna associazione è stabilita tra di esse in quanto sono due modi indipendenti e differenti di classificare gli elementi di PREMIO
40
Elenco delle Primitive top-down
Un’associazione è trasformata in una o più associazioni tra le stesse entità
Esempio
L’associazione VIVE_A tra PERSONA e CITTA’ è raffinata in due associazioni, VIVE_A e NATA_A, tra le stesse entità.
41
Elenco delle Primitive top-down
•Un’associazione è trasformata in un cammino di entità e associazioni.Questo corrisponde a riconoscere che un’associazione tra due entità deve essere espressa tramite una terza entità, che era nascosta nella prima rappresentazione.
Esempio
L’associazione LAVORA_IN tra DIPENDENTE e DIPARTIMENTO è raffinata in un’aggregazione più complessa che include l’entità DIRIGENTE e due nuove associazioni.
42
Elenco delle primitive top-down
Un’entità o associazione è trasformata introducendo i suoi attributi
Esempio
Per l’entità PERSONA sono introdotti gli attributi NOME, SESSO e ETA’.
Un’entità o associazione è trasformata introducendo un attributo composto
Esempio
Per l’entità PERSONA è introdotto l’attributo composto INDIRIZZO.
43
Elenco delle primitive top-down
Elenco delle primitive top-downUn attributo semplice è trasformato in un attributo composto o in un gruppo di attributi
Esempio
L’attributo DATA è raffinato in un attributo composto dagli attributi GIORNO, MESE e ANNO.
44
Primitive bottom-up
•Introducono nuovi concetti e proprietà che non comparivano nelle precedenti versioni dello schema oppure modificano alcuni concetti esistenti
•Sono usate quando alcune caratteristiche del dominio di applicazione non sono rappresentate nelle versioni precedenti dello schema
•Sono applicate per integrare schemi differenti in uno schema globale più comprensivo (integrazione di schemi)
45
Elenco delle Primitive bottom-up
Genera una nuova entità.E’ usata per introdurre un concetto nuovo nello schema.
Esempio
La nuova associazione VIVE_IN è stabilita fra le entità PERSONA e LUOGO.
Genera una nuova associazione tra entità precedentemente definite.
46
Esempio
Si forma una gerarchia di generalizzazione introducendo la classe PERSONA.
Elenco delle Primitive bottom-up
Genera una nuova entità come generalizzazione di entità esistenti
Genera un nuovo attributo e lo connette ad un’entità o associazione precedentemente definita
Esempio
Gli attributi CITTA’ e STATO sono connessi a LUOGO.
47
Esempio
L’attributo composto INDIRIZZO è connesso a PERSONA.
Elenco delle Primitive bottom-up
Genera un attributo composto e lo connette ad un’entità o associazione esistente
48
Strategie per il Progetto Concettuale
•Top-downLo schema è ottenuto applicando solo le primitive top-down. Il processo finisce quando tutti i requisiti sono stati rappresentati.•Bottom-upLo schema è ottenuto applicando solo le primitive bottom-up, iniziando da concetti elementari e costruendo concetti più complessi. I concetti vengono progressivamente integrati nello schema finale.•MixedUtilizzo sia delle strategie top-down che di quelle bottom-up. niziando da concetti elementari e costruendo concetti più complessi. I concetti vengono progressivamente integrati nello schema finale.
49
Esercizio
Si vuole costruire una base di dati che rappresenta persone e luoghi.
Requisiti:
•Per le persone sono considerate le seguenti proprietà: nome, cognome, sesso, età, luogo di nascita e di residenza, durata della residenza, posizione militare per gli uomini e il nome da nubile per le donne.
•Un luogo può essere uno stato ester o una città nazionale; ognuno di essi ha un nome e una popolazione. Per uno stato estero deve essere indicato il continente e per una città nazionale il nome della regione.
50
Progettazione logica relazionale
Con 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.
Dipende dal modello dei dati relazionale: basi di dati relazionali.
Un modello dei dati alternativo e' quello ad oggetti.
Esempi di basi di dati relazionali: mysql, access, postgress, openoffice database, etc.....
Tecnologie dell'Informazione
51
Passi progettazione DB
Progettazione concettuale Schema E/R: tecnica generale Progettazione logica.
Specifica per diversi modelli dei dati Necessita ottimizzazioni
Viste Interrogazioni Applicazioni
52
Il modello dei dati relazionale
Una base di dati e' organizzata in relazioni dette anche tabelle. Si tratta del modello attualmente più utilizzato. Buoni meccanismi di ottimizzazione (forme normali). Interrogazioni espresse tramite un algebra relazionale. Linguaggio di interrogazione SQL (Structured Query Language)
Supporto per transazioni: sequenze di operazioni sui dati che devono essere eseguite completamente per avere effetto, se una transazione non viene eseguita completamente l'effetto delle operazioni eseguite viene annullato.
53
Generazione dello Schema Relazionale
1.Eliminazione degli identificatori esterni2.Eliminazione di attributi composti e/o ripetuti3.Traduzione delle entità4.Traduzione delle associazioni
Schema E/R
Relazioni (tabelle)
. . .
54
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.
Esempio
55
Eliminazione degli Attributi Composti
Ci sono due alternative:•Eliminare l’attributo composto e considerare i suoi componenti come attributi semplici•Eliminare i componenti e considerare l’attributo come semplice
Esempio
56
Traduzione Standard: Entità
•Ogni entità è tradotta con una relazione con gli stessi attributi•La chiave primaria della relazione è quella dell’entità stessa
Esempio
PERSONA(NOME, VIA, CITTA’, NAZIONE)
57
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 straniere (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
58
Esempio di traduzione standard
Studente(Matricola, Nome)
Corso(Codice, Denominazione)
Esame(Matricola, Codice, Anno, Voto)
FK: Matricola REFERENZIA StudenteFK: Codice REFERENZIA Corso
59
Associazione binaria uno a uno tradotta con una relazione
E12(K1, A1, ..., K2, B1, ..., C1, ...)
•Vediamo alcuni casi particolari...
60
Associazione binaria uno a uno tradotta con un'associazione
•Se l’associazione è obbligatoria per entrambe le entità la chiave primaria può essere indifferentemente K1 o K2
Direttore(Codice, Nome, Dipartimento, Tel, Data_inizio)
FK: Dipartimento REFERENZIA DIPARTIMENTO
61
Associazione binaria uno a uno tradotta con una relazione
•Se l’associazione è parziale per una entità (E1) e obbligatoria per l’altra (E2) la chiave deve essere K1
Uomo(CF, Nome, Matricola, Corpo, Data)
•Saranno possibili valori nulli per gli attributi di E2 e R
62
Associazione binaria uno a uno tradotta con una relazione
•Se l’associazione è parziale per entrambe, occorre che entrambe le entità abbiano lo stesso identificatore; la chiave può essere indifferentemente K1 o K2
Persona(CF, Nome, CFConsorte)
•Saranno possibili valori nulli per gli attributi di E1, di E2 e di R
FK: CFConsorte REFERENZIA Persona
63
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 foreign key
FK: K2 REFERENZIA E2
E2(K2, B1, B2, ...)
64
Associazione binaria uno a uno tradotta con due relazioni
Uomo(CF, Nome)
•Per evitare i valori nulli, è preferibile compattare l’associazione in un’entità che partecipa obbligatoriamente
FK: CF REFERENZIA Uomo
Servizio_Militare(Matricola, Corpo, CF, Data)
Uomo(CF, Nome, Matricola)
FK: Matricola REFERENZIA Servizio_militare
oppure
65
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(CodPC, CodTas, Cavo)
FK: CodTas REFERENZIA Tastiera
Collega(CodTas, CodPC, Cavo)
oppure
66
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 foreign key
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, ...)
67
Associazione binaria uno a molti:traduzione con tre relazioni
•Se la partecipazione di E1 è parziale, per evitare i valori nulli si pò optare per la traduzione standard con tre relazioni
Venditore(Nome, Telefono)
Scrive(Numero, Nome, Sconto)
FK: Numero REFERENZIA Ordine
Ordine(Numero, Data)
FK: Nome REFERENZIA Venditore
68
Associazioni 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
69
Associazioni 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
70
Associazioni unarie: anello uno a molti
FK: Responsabile REFERENZIA Impiegato Impiegato(Codice, Nome, Responsabile)
•E’ possibile tradurlo con 1 o 2 relazioni
Impiegato(Codice, Nome)
Dipendenza(Dipendente, Responsabile)
FK: Dipendente REFERENZIA Impiegato
FK: Responsabile REFERENZIA Impiegato
Una relazione
Due relazioni
71
Progettazione logica relazionale
Associazione n-aria•Segue la traduzione standard
Prodotto(CodProd, Nome)Fornitore(CodForn, Telefono)
FK: CodPart REFERENZIA Parte
Parte(CodPart, Descrizione)Fornitura(CodPart, CodProd, CodForn, Quantità)
FK: CodProd REFERENZIA ProdottoFK: CodForn REFERENZIA Fornitore
Progettazione logica relazionale
Studente(Matricola, Nome, Cognome)
Corso(Codice, Nome)
Frequenta(Matricola, CodiceCorso)
Progettazione logica relazionale
Docente(Id, Nome, Cognome, Dipartimento)
Corso(Codice, Nome, Docente)
Progettazione logica relazionale
Esempio: schema finale
Studente(Matricola, Nome, Cognome)
Frequenta(Matricola, CodiceCorso)
Docente(Id, Nome, Cognome, Dipartimento)
Corso(Codice, Nome, Docente)
Progettazione logica relazionale
Impiegato(Codice, Cognome, Dipartimento, Data)Dipartimento(Nome, Città, Telefono, Direttore)