Progettazione
• dei dati: consiste di individuare e descrivere (attraverso un modello) la struttura e l’organizzazione dei dati relativi alla porzione di realtà rappresentata.
• delle applicazioni: consiste di individuare e descrivere le caratteristiche dei programmi applicativi che avranno accesso ai dati.
Modelli e rappresentazione dei dati
Per progettare un database dobbiamo fornire una descrizione della porzione di realtà che si intende rappresentare.
Una tale descrizione prende il nome di modello simbolico.
Un modello simbolico è la rappresentazione formale di idee e conoscenze relative ad un fenomeno finalizzate al
raggiungimento di un obiettivo.
Modelli e rappresentazione dei dati
Una rappresentazione è un procedimento di astrazione per cui ad un oggetto della realtà corrisponde una sua descrizione mediante un linguaggio simbolico.
Una rappresentazione si dice formale se il linguaggio usato per descrivere l’oggetto è formale, cioè un linguaggio in cui esistono regole chiare e rigorose per la definizione di espressioni ben formate
(il linguaggio C è un linguaggio formale, la lingua italiana è un linguaggio semi- formale, un’immagine è una rappresentazione non formale).
Un modello è adeguato per lo scopo che si prefigge se è:
• completo: deve contenere tutte le informazione necessarie allo scopo.
• usabile: deve garantire un reperimento facile e veloce delle informazioni.
Modello dei dati
I due elementi costitutivi di un modello sono:
• lo schema del modello:
– descrive la struttura dei dati.
– rimane invariato nel tempo.
• l’istanza del modello:
– descrive i valori attuali presenti nel database.
– cambia nel tempo.
• Come rappresentarlo? (2)
• Come rappresentarlo? (1)
Metodologia di progettazione
• Che cosa rappresentare?
progettazione concettuale
requisiti
SCHEMA CONCETTUALE
progettazione logica
SCHEMA LOGICO
progettazione fisica
SCHEMA FISICO
Modello logico Modello
concettuale
Progettazione concettuale
• Scopo:
Fornire una rappresentazione delle specifiche informali in termini di una descrizione formale e completa del contenuto informativo del database.
Il modello concettuale è indipendente dalle
modalità di realizzazione.
Progettazione logica
• Scopo:
Tradurre lo schema concettuale in uno schema logico che rappresenti gli stessi dati in modo piu concreto e in funzione di aspetti di ottimizzazione.
Il modello logico è indipendente dalle strutture fisiche.
Progettazione concettuale: modello Entity/Relationship
• Elementi base:
entità Rappresenta un insieme (classe) di oggetti della realtà che hanno proprietà comuni ed esistenza autonoma.
Un oggetto di una entità si dice istanza dell’entità.
Esempio: professori, studenti, corsi, città.
Rappresentazione
grafica:
Progettazione concettuale: modello Entity/Relationship
• Elementi base:
associazione Rappresenta un legame tra entità e stabilisce una correlazione logica tra oggetti appartenenti a diverse entità.
Esempio: relazione tra professori e luogo di nascita, tra studenti e corsi superati.
Rappresentazione grafica:
Progettazione concettuale: modello Entity/Relationship
• Elementi base:
attributo rappresenta una proprietà elementare di entità o associazione.
Esempio: cognome ed età degli studenti, voto e data d’esame.
Rappresentazione
grafica:
Esempio
studente
corso
esame
cognome nome età
data voto
nome
Decidere che cosa è un’entità e cosa sideve rappresentare come attributo, o quando usare associazioni piuttosto che attributi, è una scelta di progetto e dipende dalle finalità dell’applicazione.
Associazioni (relazioni)
Formalmente una relazione è un sottoinsieme del prodotto cartesiano di insiemi.
Le associazioni sono caratterizzate in termini di cardinalità minima e massima.
studente
corso esame
(0,n)
(0,n)
studente
città nato a
(1,1)
(0,n)
• Uno studente può aver sostenuto diversiesami.
• Uno studente è nato in unacittà.
• NOTA: cosa succede se la cardinalità con cui l’entità città partecipa alla associazione nato a è (1,n)?
• L’associazione esame è binaria e si dice molti a molti (m:n).
• L’associazione nato a è binaria e si dice uno a molti (1:n).
• Esistono anche associazioni (1:1).
Esempi?
cardinalità minima cardinalità
massima
Associazioni (relazioni)
Due entità che partecipano ad una associazione possono anche coincidere: in tal caso le istanze di una entità sono in relazione con istanze della stessa entità.
corso
propedeuticità (0,n)
(0,n)
Formalmente questo tipo di associazione si chiama ANELLO.
Definizione
Un anello è una associazione binaria tra una entità e se stessa.
Ogni ruolo dell’entità nell’associazione viene reso esplicito tramite una label.
è propedeutico a deve seguire
Associazioni o relazioni
Una associazione che connette n entità si dice n-aria.
corso
lezione (1,3)
• Un corso si tiene da 1 a 3 volte la settimana.
• In un’aula si tengono fino a 20 lezioni alla settimana.
• In un giorno della settimana ci possono essere più lezioni.
• Dove mettereste l’attributo orario della lezione?
giorno
(0,n) (0,20) aula orario
Attributi
Ogni attributo ha uno o più domini di valori legali per l’attributo:
• attributo semplice: definito su un solo dominio (es: voto esame).
• attributo composto: definito su più domini (es: address).
La cardinalità minimamin_card(A,E) di un attributo A di una entità o associazione E è il minimo numero di valori associabile ad A per ogni istanza di E.
La cardinalità massima max_card(A,E) di un attributo A di una entità o associazione E è il massimo numero di valori associabile ad A per ogni istanza di E.
Attributi semplici
attributo opzionale: min_card(A,E) = 0 esempio: voto d’esame
attributo obbligatorio: min_card(A,E) = 1 esempio: cognome
attributo a valore singolo: max_card(A,E) = 1 esempio: età
attributo a valore multiplo: max_card(A,E) > 1 esempio: telefono
NOTA: se non specificato, di default si assume che un attributo ha cardinalità minima e massima 1, altrimenti indicato con la notazione (1,1) .
Attributi composti
Un attributo composto è fatto di più attributi semplici accomunati dal significato e dall’uso (esempio, l’indirizzo di una persona à dato da via, civico, cap e città).
studente
via civico
cap città
address
(0,n)
studente
civicoviacap città
(0,n) (0,n) (0,n)
(0,n)
Si noti la differenza di espressività rispetto a:
Identificatori o chiavi
Un identificatore (chiave candidata) I per una entità E è un insieme di attributi e/o entità legate in associazione con E che identifica in modo univoco le istanze di E. Non esistono quindi due istanze di E con gli stessi valori per I.
Definizione
I = {A1, …, An, E1, …,Em} è un identificatore per E sse:1) A1, …, Ansono attributi a valore singolo e obbligatori per E.
2) E1, …,Emsono entità diverse da E, connesse ad E tramite associazioni binarie R1, …,Rm, rispettivamente, tali che:
per 1 ≤j ≤ m 3) non esistono due istanze di E con lo stesso valore di I.
4) se si elimina un attributo Aio una entità Ejda I, allora 3) non è più valida: I è il più piccolo insieme che soddisfa 3).
E (1,1) Rj Ej
Identificatori o chiavi
identificatore semplice:n + m = 1 identificatore composto: n + m > 1 identificatore interno: m = 0 identificatore esterno:n = 0 identificatore misto:n > 0 e m > 0
libro
risiede (1,1)
biblioteca
(1,n)
corso nome
semestre crediti
• meglio interni che esterni
• meglio semplici che composti
• attenzione a evitare definizioni circolari in caso di identificatori esterni
studente matricola cognome età …
codice titolo
pagine
…
Gerarchie di generalizzazione
La gerarchia di generalizzazione è un meccanismo che consente di organizzare le entità in una gerarchia mediante la definizione di un ordinamento parziale.
Definizione
Una entità E è una generalizzazione di un insieme di entità E1,…,En (dette specializzazioni di E) se ogni istanza delle entità E1,…,En è anche istanza di E (vincolo sugli insiemi). Ogni entità E1,…,En ha tutti gli attributi di E oltre eventualmente ad altri più specifici (vincolo sulla struttura).
Rappresentazione grafica E
E1
…
EnGerarchie di generalizzazione
studente
laureato erasmus
nome matricola
titolo
tesi durata
• ogni istanza di laureato ha 3 attributi: nome, matricola e titolo tesi.
• ogni istanza di erasmus ha 3 attributi: nome, matricola e durata.
Le entità laureato ed erasmus possono avere istanze in comune (sovrapposizione di ruoli).
Esistono istanze di studente che non sono né istanze di laureato né istanze di erasmus (relazione parziale).
Esistono diverse proprietà di copertura per le gerarchie di generalizzazione a seconda dell’astrazione che viene rappresentata.
Gerarchie di generalizzazione
Proprietà di copertura
Una gerarchia di generalizzazione è:
• totale, se ogni istanza della generalizzazione è istanza anche di almeno una specializzazione (esempio: entità persona, specializzata in uomo e donna).
• parziale, se esistono istanze della generalizzazione che non sono istanze di nessuna specializzazione (esempio: entità studente, specializzata in laureato ed erasmus).
• esclusiva, se diverse specializzazioni non possono avere istanze in comune (esempio: entità persona, specializzata in uomo e donna).
• sovrapposta, se diverse specializzazioni possono avere istanze in comune (esempio: entità studente, specializzata in laureato ed erasmus).
Gerarchie di generalizzazione
Subset
Una gerarchia di generalizzazione è un subset se ha una sola specializzazione.
professore età nome
professore visitatore
durata
La copertura di un subset può essere solo parziale ed esclusiva.
Perché?