80
1 Prof. Mauro Gaspari [email protected] 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

Tecnologie dell'Informazione e della Comunicazione Sistemi ...gaspari/www/teaching/tic13.pdf · Tecnologie dell'Informazione e della Comunicazione Sistemi per la gestione di basi

  • Upload
    ngonga

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

1

Prof. Mauro Gaspari

[email protected]

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

3

I modelli concettuali dei dati

Progettazione concettuale

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)

14

Il modello Entity Relationship (E/R)

Progettazione concettuale

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}

31

Simboli Grafici del modello E/R

32

Metodologie per il progetto concettuale

Progettazione concettuale

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

•Proviamo a tradurre uno schema

Esempio

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

•Proviamo a tradurre uno schema “complesso”Esempio

Progettazione logica relazionale

Progettazione logica relazionale

Progettazione logica relazionale

Impiegato(Codice, Cognome, Dipartimento, Data)Dipartimento(Nome, Città, Telefono, Direttore)

Esempio: schema finale

Impiegato(Codice, Cognome, Dipartimento, Data)

Dipartimento(Nome, Città, Telefono, Direttore)

Sede(Città, Via, Cap)

Progetto(Nome, Budget)

Partecipazione(Impiegato, Progetto)