Cloud informatica V anno La progettazione concettuale Il modello ER La progettazione concettuale La progettazione concettuale consiste nel riorganizzare tutti gli elementi presenti nella documentazione sulle specifiche per rappresentare la realtà di interesse in termini di una descrizione formale e completa, indipendente dai criteri di rappresentazione usati nei DBMS. Da questa fase si ricava lo schema concettuale: documento ufficiale per procedere con la progettazione logica. In questa fase si cerca di attribuire una certa struttura ai dati. Il modello concettuale ER Il modello Entità/Associazioni (in inglese modello ER) è un modello grafico per la descrizione dei dati e delle loro relazioni all’interno della realtà presa in esame. Questo modello restituisce lo schema ER o diagramma ER. La realtà da rappresentare è composta da: Entità caratterizzate da proprietà (o attributi) Entità e attributi Le entità sono connesse attraverso associazioni che evolvono nel tempo. Le entità sono ciò che esiste nella realtà presa in esame. Gli attributi sono i fatti che si intende rappresentare, interessano poiché descrivono caratteristiche di specifiche entità. Il procedimento mentale che permette di evidenziare alcune proprietà significative prende il nome di astrazione. OGNI elemento appartenente a un’entità è detto istanza. Gli attributi Gli attributi descrivono le proprietà delle entità. Per esempio, gli attributi semplici dell’entità Persona possono essere: Nome, Cognome, Età, Sesso Gli attributi si dividono in: - attributi semplici - attributi composti (o aggregati) - attributi multipli Proprietà di un attributo Ogni attributo è specificato da: - un nome - un formato, che indica il tipo di valori che l’attributo può assumere - una dimensione, che indica la quantità massima di caratteri inseribili - un valore, determina le istanze delle entità. L’insieme dei possibili valori assunti da un attributo è detto dominio. - una opzionalità, indica la possibilità di non essere sempre valorizzato: - attributo obbligatorio, non accetta valore nullo - attributo facoltativo, accetta valori nulli Attributi composti e multipli Gli attributi composti (o aggregati) sono costituiti mediante aggregazione di altri attributi, che a loro volta possono essere semplici o frutto di altre aggregazioni di attributi. Attributi composti dell’entità Persona, sono: DataDiNascita (composto da Giorno, Mese, Anno) Indirizzo (composto da Via, NumCivico, Città, Cap) Gli attributi multipli sono inseriti in un elenco di lunghezza variabile di attributi dello stesso tipo. Un attributo multiplo dell’entità Persona, può essere l’attributo Hobby. Chiavi candidate e chiavi primarie Il concetto di chiave è fondamentale quando si parla di database. Una chiave candidata (o superchiave) consente di distinguere un’istanza di entità in modo univoco. Per esempio, se vogliamo distinguere due persone possiamo utilizzare: L’attributo CodiceFiscale oppure Gli attributi Nome, Cognome, DataDiNascita Tra le chiavi candidate occorre scegliere quella con il minor numero di attributi (chiave primaria). Nel nostro esempio la chiave primaria sarà l’attributo CodiceFiscale. Rappresentare entità e attributi Per rappresentare graficamente entità e attributi in un modello ER si utilizza la seguente notazione: È possibile collocare gli attributi in qualsiasi posizione attorno al rettangolo dell’entità. Per convenzione si utilizzano: - nomi al singolare per le entità - iniziali maiuscole per i nomi di entità e attributi - iniziali maiuscole per i nomi di attributi composti da più parole (es. DataNascita) Rappresentare entità e attributi (1) La rappresentazione di entità e attributi in un modello ER segue le regole grafiche riportate in tabella, da tenere costanti per ogni rappresentazione: Volendo rappresentare l’entità Persona, potremmo avere: Le associazioni L’associazione è un legame tra due o più entità L’istanza di un’associazione è una combinazione (aggregazione) di istanze delle entità prese in esame. Per rappresentare graficamente un’associazione in un diagramma ER si utilizza il rombo. Volendo associare l’entità Persona e l’entità Automobile, avremo: Dove possiede rappresenta l’associazione tra le due entità correlate. Il grado delle associazioni Si definisce grado il numero delle entità che partecipano all’associazione. Si posso avere: - associazioni binarie (solo due entità) - associazioni multiple (oltre le due entità) La rappresentazione grafica delle associazioni multiple è la seguente: Ogni associazione multipla può essere trasformata in associazioni binarie: Associazioni dirette e indirette Data un’associazione A tra le entità X e Y, si attribuisce un verso da X a Y che definisce l’associazione diretta. Si definisce, invece, inversa l’associazione da Y a X, indicata con A-1. Tra Persona e Automobile avremo pertanto: - l’associazione diretta guida - l’associazione indiretta èGuidata Proprietà delle associazioni Un’associazione è caratterizzata da due proprietà strutturali: PARTECIPAZIONE e MOLTEPLICITÀ Partecipazione La partecipazione riguarda il numero minimo di elementi dell’entità Y che sono associati a ogni elemento dell’entità X. Il valore minino assume, solitamente, uno dei due valori (0,1), con: - Il valore minimo 0 che indica che la partecipazione è facoltativa - Il valore minimo 1 che indica che la partecipazione è obbligatoria Quando il legame tra le entità è sempre presente l’associazione è totale. Quando il legame tra le entità non è sempre presente l’associazione è parziale. Analizzando la rappresentazione in figura, avremo che l’associazione tra Docente e dirige è parziale e facoltativa, mentre tra Dipartimento e dirige abbiamo un’associazione totale e obbligatoria. Molteplicità La molteplicità di un’associazione fra le entità X e Y indica il numero massimo di istanze dell’entità Y che possono trovarsi in relazione con un’istanza dell’entità X e viceversa. Si dice che l’associazione è univoca da X a Y se ogni istanza di X può trovarsi in relazione con al più un’istanza di Y. Se tale vincolo non esiste, si dice che l’associazione è multivalore (o multipla). Il vincolo di univocità da X a Y è indipendente da quello definito da Y a X; si hanno così quattro possibili combinazioni di presenza e assenza di valori. La cardinalità di un’associazione fra le entità X e Y descrive parallelamente la molteplicità dell’associazione diretta e quella della sua inversa. La cardinalità La cardinalità può essere a uno o a molti. Si hanno pertanto: - associazione 1:1 (biunivoca) quando a un’istanza di X corrisponde una e una sola istanza di Y e viceversa. - associazione 1:N (semplice) quando a un’istanza di X possono corrispondere una o più istanze di Y e a ogni istanza di Y deve corrispondere una sola istanza di X. - associazione N:N (complessa) quando a ogni istanza di X possono corrispondere una o più istanze di Y e viceversa. I vincoli di integrità Esistono numerosi aspetti della realtà difficilmente modellabili attraverso gli strumenti visti finora: i vincoli di integrità. Con vincolo di integrità definiamo una proprietà che deve essere soddisfatta dalle istanze che rappresentano informazioni corrette per l’applicazione che utilizza la base di dati. Per chiarire meglio… L’attributo Età dell’entità Persona può assumere il valore di 250. Il valore 250 è concettualmente valido ma senza alcun contatto con la realtà. Per evitare questi errori, occorre specificare un vincolo di integrità. Nel nostro caso, poniamo come vincolo di integrità riferito a Età il valore 120. Classificazione vincoli di integrità I vincoli di integrità possono essere: - Vincoli impliciti: imposti dalla struttura dei dati e si dividono in: - Vincoli di chiave primaria, istanze di una categoria tutte diverse - Vincoli referenziali, date le entità associate A e B, i vincoli referenziali impongono che non si possa inserire un elemento in A che non sia associato a un elemento in B. - Vincoli espliciti: impongono delle restrizioni sul modo in cui i dati possono cambiare. Per esempio il valore dell’attributo Età non può essere negativo o superiore a 120. Rappresentare i vincoli di integrità I vincoli impliciti si rappresentano con i simboli del diagramma ER: - vincoli di chiave primaria: sottolineandone gli attributi - vincoli referenziali: linee continue delle associazioni tra le entità Per i vincoli espliciti si ricorre alla sintassi particolare di uno pseudolinguaggio: V<NumProgressivo>: (<Espressione>) dove: <NumProgressivo> è un numero progressivo del vincolo V; <Espressione> è una qualsiasi espressione in pseudolinguaggio che serve per specificare il vincolo V. Collezione di entità e gerarchie Quando alcune entità possono avere istanze comuni, o si vuole particolareggiare o generalizzare qualche entità, è utile procedere con un’organizzazione per gerarchie. Una gerarchia ha una struttura ad albero composta da entità padre (caratteristiche comuni) e entità figlie (i vari nodi) con particolarità specifiche. Per creare una gerarchia si attua un processo di specializzazione. Percorrendo la gerarchia dal basso verso l’alto si attua un processo di generalizzazione. Classificazione generalizzazioni Le generalizzazioni possono essere classificate in base a due proprietà: - copertura (totale/parziale) - disgiunzione (esclusiva/sovrapposta) Copertura e disgiunzione sono, tra loro, ortogonali, quindi è possibile avere quattro configurazioni di generalizzazione: - Copertura: totale se ogni istanza della classe padre è una istanza di almeno una delle figlie, altrimenti è parziale. - Disgiunzione: esclusiva se ogni istanza della classe padre è un’istanza di al più una delle classi figlie, altrimenti di dice sovrapposta. Schema generalizzazioni Schematizzando, avremo: