Resúmenes

Apuntes universitarios en formato Markdown desde Obsidian.

Progettazione concettuale

download Descargar MD

Modello concettuale

Offre una serie di costrutti per descrivere la realtà di interesse in modo facile da comprendere (rappresentazione grafica: schema E-R) e indipendente dal DBMS.

Il modello concettuale si basa su un livello di astrazione molto elevato. L'astrazione è un procedimento mentale che si adotta quando si concentra l'attenzione su alcune caratteristiche di un insieme di entità, trascurando le altre giudicate non rilevanti. I quattro tipi di astrazione sono:

  • astrazione di classificazione;
  • astrazione di aggregazione;
  • astrazione di generalizzazione;
  • astrazione di associazione.

Astrazione di classificazione

L’astrazione di classificazione consente la definizione di una classe a partire da un insieme di oggetti aventi proprietà comuni.

Facciamo un esempio:

astrazioneClassificazione
astrazioneClassificazione

In questo esempio, F500 è un'istanza della classe Automobile e si ha una relazione di instance_of.

Astrazione di aggregazione

L’astrazione di aggregazione consente la definizione di una classe a partire da un insieme di classi che costituiscono le sue componenti.

Facciamo un esempio:

astrazioneAggregazione
astrazioneAggregazione

In questo esempio, il telaio è una parte dell'automobile e si ha una relazione di part_of.

Astrazione di generalizzazione

L’astrazione di generalizzazione consente la definizione di una classe (superclasse) a partire da un insieme di classi aventi proprietà comuni (sottoclassi).

Facciamo un esempio:

astrazioneGeneralizzazione
astrazioneGeneralizzazione

In questo esempio, si ha una relazione di subset_of o is_a. Si nota che:

  • le istanze di Automobile sono un sottoinsieme delle istanze di Veicolo;
  • equivalentemente, ogni automobile è un veicolo;
  • le sottoclassi possono possedere caratteristiche proprie.

Astrazione di associazione

L’astrazione di associazione consente la definizione di un collegamento fra due o più classi.

astrazioneAssociazione
astrazioneAssociazione

Le associazioni possono avere proprietà. Per esempio, data (in cui si è presa la residenza) può essere una proprietà dell'associazione Risiede.

Modello ER

Uno dei modelli più utilizzati nell'ambito della progettazione concettuale. La rappresentazione grafica può essere fatta tramite diagramma ER. I concetti fondamentali sono:

  • entità (istanze di entità);
  • associazioni (istanze di associazione);
  • attributi

Entità

L'entità è un insieme di oggetti della realtà che possiedono caratteristiche comuni (es. persone, automobili, ...). Le istanze di entità sono oggetti appartenenti a una certa entità (es. io, la mia auto, ...). Graficamente:

entita
entita

Associazione

Le associazioni rappresentano un legame logico tra entità. Le istanze di associazione sono combinazioni delle istanze delle entità che prendono parte ad una associazione. Graficamente:

astrazioneAssociazione
astrazioneAssociazione

In questo esempio, p istanza di Persona, c istanza di Città e (p, c) istanza di Risiede.

Il grado è il numero di classi che partecipano ad un'associazione.

L'associazione unaria ha grado 1.

grado1
grado1

L'associazione binaria ha grado 2.

grado2
grado2

Il ruolo è una funzione che un'istanza di entità esercita nell'ambito di un'associazione.

ruolo
ruolo

Nel caso di associazione unaria, il ruolo è obbligatorio.

Attributi

L'attributo è una proprietà elementare possedute da un'entità o da un'associazione. Graficamente:

attributi
attributi

In questo esempio, nome, cognome, cod_fiscale sono attributi di Persona.

Il dominio di un attributo è un insieme dei valori legali per l'attributo. I domini possibili sono:

  • interi, reali, booleani, caratteri;
  • intervalli di interi e di caratteri;
  • stringhe di caratteri;
  • domini definiti dall'utente.

La notazione si può descrivere:

  • vi, vj intervallo compreso fra vi e vj;
  • (vi, ..., vj) insieme di valori possibili vi, ..., vj.

Attributi sulle associazioni

Anche le associazioni possono avere attributi. Per esempio:

attrAssociazioni
attrAssociazioni

In questo esempio, data e voto non sono proprietà né di uno Studente né di un Corso, ma del legame Studente-Corso che si crea in occasione di un Esame.

Gli attributi possono essere visti come funzioni che associano un valore ad un'istanza di entità o associazione.

Attributi compositi

Un attributo è composito quando possiede dei sotto-attributi. Per esempio, data_nascita con sotto-attributi giorno, mese, anno.

\includegraphics{img/sezione10/attributiCompositi.png}

I domini si possono distinguere in:

  • semplici: domini degli attributi non compositi;
  • compositi: domini degli attributi compositi ovvero prodotto cartesiano degli insiemi di valori associati ai domini componenti;

Vincoli di integrità

Sono di due tipi:

  • impliciti: automaticamente verificati dal sistema. Ogni occorrenza di una base di dati relativa ad uno schema ER li deve verificare;
    • vincoli di cardinalità (per associazioni e attributi);
    • vincoli di identificazione. Anche i domini degli attributi sono dei vincoli di integrità.

Vincoli di integrità impliciti

Ogni istanza di associazione deve riferirsi ad istanze di entità presenti nell'occorrenza della base di dati.

Istanze diverse della stessa associazione devono riferirsi a differenti combinazioni di istanze delle entità partecipanti all'associazione.

Vincoli di integrità espliciti (associazioni)

È il numero minimo e massimo di istanze dell'associazione a cui un'istanza dell'entità può partecipare. I valori più comuni sono:

  • cardinalità minima (c_min): 0, 1

  • cardinalità massima (c_max): n, ovvero qualunque intero $>$ 1 Data una classe C e un'associazione A:

  • c_min = 0 =$>$ esistono istanze di C che non partecipano ad alcuna istanza di A;

  • c_min = 1 =$>$ ogni istanza di C partecipa almeno ad una istanza di A. Data un'entità E e un'associazione A:

  • c_max = 1 =$>$ ogni istanza di E può partecipare al più ad una istanza di A;

  • c_max = n =$>$ non esiste limite al numero massimo di istanze di A a cui ogni istanza di E può partecipare;

  • c_max = c_min = 1 =$>$ ogni istanza di E partecipa ad una ed una sola istanza di A;

  • c_min = 0, c_max = n =$>$ ogni istanza di E può partecipare ad un numero qualsiasi di istanze di A. Facciamo un esempio:

esempioVincoli
esempioVincoli

  • c_min di Automobile rispetto a Proprietario è 0: esistono automobili non possedute da alcuna persona;

  • c_min di Persona rispetto a Proprietario è 0: esistono persone che non posseggono alcuna automobile;

  • c_max di Persona rispetto a Proprietario è n: ogni persona può essere proprietaria di un numero arbitrario di automobili;

  • c_max di Automobile rispetto a Proprietario è 1: ogni automobile può avere al più un proprietario. Data un’associazione A tra due entità E1 ed E2:

  • A è un’associazione uno a uno se c_max di E1 ed E2 rispetto ad A è 1;

  • A è un’associazione uno a molti se c_max di E1 rispetto ad A è n e c_max di E2 rispetto ad A è 1;

  • A è un’associazione molti a uno se c_max di E1 rispetto ad A è 1 e c_max di E2 rispetto ad A è n;

  • A è un’associazione molti a molti se c_max di E1 ed E2 rispetto ad A è n. Inoltre, un'associazione è detta opzionale se c_min è 0, è detta obbligatoria se c_min è 1.

Vincoli di integrità espliciti (attributi)

È il numero minimo e massimo di valori dell'attributo che possono essere associati ad un'istanza della corrispondente associazione od entità. Nei diagrammi si può indicare la coppia (c_min, c_max) sulla linea che congiunge l'attributo all'associazione/entità. Se non si indica niente il valore di default è (1,1).

Si parla di attributi:

  • opzionali: se la cardinalità minima è 0 (es. cognome_da_nubile);
  • monovalore: se la cardinalità massima è 1 (es. cod_fiscale);
  • multivalore: se la cardinalità massima è n (es. telefono). Un esempio di diagramma con vincoli di cardinalità sarebbe:

esempioAttrOMM
esempioAttrOMM

Vincoli espliciti di identificazione

Gli identificatori (o chiavi) sono un insieme di attributi che identificano univocamente le istanze dell'entità e devono essere minimali cioè qualsiasi sottoinsieme proprio non è un identificatore.

Si noti che gli identificatori hanno senso solo per le entità e non per le associazioni. Nell'insieme di istanze di un'associazione si hanno tutte tuple distinte quindi non c'è bisogno di identificatori.

A volte non è possibile identificare un'istanza di entità solo sulla base dei suoi attributi, cioè due istanze diverse possono coincidere su tutti gli attributi. Si utilizza allora il fatto che tale istanza partecipi ad una particolare istanza di associazione con una data istanza di un'altra entità: l'entità viene detta debole.

Abbiamo vari tipi di identificatori:

  • interni: uno o più attributi dell'entità;
  • esterni: uno o più associazioni collegate all'entità a cui si riferiscono (identificazione esterna da tale entità attraverso tale associazione);
  • misti: attributi o associazioni;
  • semplici: un elemento;
  • compositi: più di un elemento.

Gerarchie di classe

Una entità E è una generalizzazione delle entità E1, ..., En se ogni istanza delle entità E1, ..., En è anche un'istanza di E. E è l'entità padre mentre E1, ..., En sono entità figlie. Vediamo un esempio:

gerarchie
gerarchie

Ogni generalizzazione può essere:

  • totale: ogni istanza di E è istanza di almeno un'entità Ei (es. Persona - Uomo, Donna);
  • parziale: esiste almeno un'istanza di E che non è istanza di alcuna entità Ei (es. Persona - Studente, Impiegato);

Ogni generalizzazione può essere inoltre:

  • esclusiva: ogni istanza di E è istanza di al più un'entità Ei (es. Persona - Uomo, Donna);
  • sovrapposta: esiste almeno un'istanza di E che è istanza di più di un'entità Ei (es. Persona - Studente, Impiegato); Tali caratteristiche possono essere indicate come vincoli espliciti della gerarchia di generalizzazione.

Rappresentazione grafica componenti modello ER

componenti
componenti