Progettazione logica
Il costrutto della generalizzazione è stato usato nello schema due volte:
La seguente figura mostra due delle possibili scelte nell'eliminazione della generalizzazione per NonConformità:
Figura: Eliminazione della generalizzazione NonConformità: (a) Accorpamento delle figlie nel padre (b) Accorpamento del padre nelle figlie
Non si prende in considerazione l'alternativa di sostituzione con associazioni in quanto essa è consigliabile solo quando gli attributi in gioco sono molti. Le operazioni coinvolte sono O11 e O18:
Concetto | Costrutto | Accessi | Tipo |
---|---|---|---|
Lavoro | E | 1 | L |
Problema | R | 2 | L |
NonConformità | E | 2 | L |
(a) Accorpamento delle figlie nel padre
Concetto | Costrutto | Accessi | Tipo |
---|---|---|---|
Lavoro | E | 1 | L |
ProblemaInt | R | 1 | L |
NonConformitàInt | E | 1 | L |
ProblemaEst | R | 1 | L |
NonConformitàEst | E | 1 | L |
(b) Accorpamento del padre nelle figlie
Come si vede abbiamo cinque accessi in lettura in entrambe le ristrutturazioni.
In conclusione la nostra scelta sul tipo di eliminazione da adottare cade
sulla modalità accorpamento del padre nelle figlie in quanto l'accorpamento
delle figlie nel padre spreca più memoria senza permettere una maggiore
velocità.
Su 1500 lavori, 1480 sono lavori terminati (in pratica il 99% del totale), quindi accorpare le figlie nel padre introduce uno spreco di memoria trascurabile e riduce il numero di accessi per le operazioni O6, O7, O8, O10, O15 e O18, rispetto alle altre alternative. Queste tra l'altro richiederebbero la replicazione aggiunta di varie associazioni e vincoli con conseguente aumento della complessità e degli overhead.
SchemaElettrico e TipoDiArticolo sono identificate
esternamente l'una dall'altra. Per entrambe le entità risulta più adatta
la chiave interna Codice. Le altre entità hanno tutte un solo identificatore.