Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
ATTRIBUTI COMPOSTI
In questo esempio abbiamo l’esempio dell’entità E che ha come attributo composto B che ha quattro
attributi. Come lo trasformo ?Prendo gli attributi che avevo nell’attributo composto e li metto direttamente
nell’entità
Li trasformo in una relazione , quello che era tributo diventa un’entità
ATTRIBUTO MULTIVALORE
Sono quelli che hanno una cardinalità, con una cardinalità N , o comunque un numero maggiore di 1. Un
esempio tipico è il numero di telefono, una persona può avere tanti numeri. Di solito gli attributi hanno
cardinalità (1,1) ma è sottointeso e per cui non la si scrive .
In questo caso ho un attributo B che è multi valore ( X,N). lo trasformo con una relazione : una relazione in
cui quello che era il mio attributo diventa un’entità, sul ramo vero la nuova entità metto (1,1) come
cardinalità., dall’altra parte metto la cardinalità che era sul mio multivalore.
ESEMPIO :
allora costruiamo una relazione con le entità persona e telefono (che era l’attributo multivalore). Sul primo
lato la cardinalità è SEMPRE 1,1 , mentre dall’altro lato la cardinalità è quella che aveva l’attributo
multivalore .
GERARCHIE
c'è un’entità padre e una o più entità figlie, per eliminare le gerarchie ci sono tre possibilità :
- Eliminare il padre e tenere solo le figlie
- Eliminare le figlie e inserirle nel padre
- Togliere la gerarchia e sostituirla con delle associazioni 1 a 1 + identificazione esterna
Dobbiamo stare attenti perché quando eliminiamo il padre o le figlie dobbiamo gestire anche le
relazioni che il padre o le figlie hanno.
Partiamo da questo schema di partenza :
1. Eliminazione del padre
Tutte le associazioni e gli attributi devono essere aggiunte ai figli , questo metodo lo possiamo usare solo se
la generalizzazione è totale( la generalizzazione è totale solo se l’unione delle figlie da il padre).
Lo schema di arrivo è questo :
i due attributi dell’entità padre sono stati riportati pari pari nelle entità figlie ( A01-A02). Quello che era
identificatore nel padre ora è identificatore nei figli( A01). Poi i figli mantengono i propri attributi.
La nostra entità padre però ha anche una relazione R1 che non devo perdere per cui la faccio ereditare alle
figlie R1-R2 , mentre le relazioni che avevano le figlie rimangono le medesime .
2. Quando eliminiamo i figli
In questo caso bisogna aggiungere al padre un attributo in più che indichi il “tipo” dell'individuo ( cioè se
quello appartiene a un figlio piuttosto che a un altro) questo è utile usando le entità figlie hanno pochi
attributi .
Lo schema di arrivo è questo :
Tutti gli attributi dell’entità figlie , sono stati inseriti all’interno dei padri. La particolarità è la cardinalità che
diventa SEMPRE (0,1).
Ogni volta che gli attributi derivano dalle classi figlie bisogna mettere cardinalità 0,1. Poi vediamo che è
comparso un nuovo attributo ‘’tipo’’ che assume i valori della figlie , ad esempio se il padre era ‘’veicolo’’ e
le figlie automobile e bicicletta, allora tipo è automobile piuttosto che una bicicletta .
La relazione che aveva il padre rimane la medesima, non si cambia, diversa è la questione delle relazioni
che avevano le figlie , in questo caso R2 era una relazione della figlia E2 e non E1, ecco perché devo mettere
come cardinalità minima 0 ( sul ramo del padre ), perché, facciamo un esempio, le occorrenze di veicolo che
erano automobili non sono in relazione con E4, solo le bicilette erano in relazione con E4 quindi possono
esistere dei veicoli che non sono in relazione con E4; invece la cardinalità massima rimane Y, uguale.
3. Eliminazione delle gerarchie
L’ultimo metodo è la sostituzione della generalizzazione con delle associazioni.
Lo schema finale è questo :
La generalizzazione si trasforma in associazione 1 a 1 ( una per ogni tipo). Gli attributi non vengono
trasferiti ma rimangono dove sono. C’è una piccola trasformazione, cioè come si possono identificare le
entità figlie : vediamo che E1 ed E0 rimangono, poi creo una associazione Rg1 che ha verso il padre
→
cardinalità (0,1) e dalla parte della figlia (1,1) questo perché ogni entità che deriva dalla figlia deve aver
associato un entità che deriva dal padre , quindi ho SEMPRE cardinalità 1,1 sul ramo verso le figlie. Invece
ho cardinalità 0,1 sul padre perché , pensando sempre all’esempio veicolo automobile bicicletta, se veicolo
è una bicicletta io non ho nessuna automobile associata .
In questo caso non c’è un problema con le relazioni, in quanto non togliamo né padre né figlie e quindi
ognuno si tiene le proprie relazioni .
La cosa strana è come viene identificata l’entità figlia, cioè con questo segnetto qua questo vuol
dire che l’entità E1 ha come identificatore questa associazione , cioè eredita l’identificatore dall’altra entità
a cui è associata ( si può fare solo se c’è cardinalità 1,1)
ESEMPIO : abbiamo la persona che ha una
generalizzazione totale esclusiva con l’entità figlia uomo donna. L uomo ha una relazione ‘’tifa per ‘’
squadra mentre l entità donna ha una relazione ‘’ guarda’’ abito da sposa. Mentre il padre ha una relazione
‘’svolge’’ con lavoro
SOLUZIONE ELIMINAZIONE PADRE: questa soluzione la posso fare perché è
una generalizzazione TOTALE. Qui abbiamo preso i tre attributi dalla persona e li abbiamo ripetuti
nellefigllie e quello che era identificatore nel padre rimane identificatore nelle figlie. La relazione svolge
lavoro la duplichiamo per le figlie , la prima si chiama ‘’svolge U’’ e la seconda ‘’svolge D’’, bisogna cambiare
il nome ma basta solo una lettera in questo caso U( uomo) e D(donna)
Vediamo un altro esempio :
SOLUZIONE CON ELIMINAZIONE DELLE FIGLIE : per togliere le figlie devo mettere il
‘’tipo’’ , che in questo caso è il sesso , così specifico il dominio cioè quale valore può assumere
quell’attributo (maschi o femmina ),nel padre e tutti gli attributi delle entità delle figlie con cardinalità (0,1)
, perché cognome da nubile ha un valore solo per quelle persone che sono donne, per gli uomini non ha
senso.
ESERCIZIO DISPOSITIVO MOBILE
Eliminazione padre: Mettendo cardinalità (0,N) perdo delle informazioni che avevo nello schema iniziale , lo
schema iniziale mi diceva che ogni produttore doveva produrre almeno un dispositivo mobile , abbiamo
detto che la cardinalità 1 non possiamo tenerla perché se lo tenessimo è come se dicessimo che ogni
produttore produce almeno uno smartphone e almeno un tablet, ma non è l’informazione iniziale ,ma
dobbiamo mettere per forza cardinalità (0,1) , però in qualche modo devo dire che ogni produttore deve
produrre almeno uno dei due e per farlo devo utilizzare quelle che si chiamano REGOLE AZIENDALI.
1. Per ogni x in PRODUTTORE:
esiste y in SMARTPHONE tale che (x,y) appartiene e a AUTORE_S oppure esiste z in TABLET tale che (z,x)
→
appartiene ad AUTORE_T. questo significa che dato il produttore che io chiamo X, questo X è in
relazione o con un tablet che chiamo Z o con uno smartphone che chiamo Y, cioè dato il produttore non
può esistere che non ci sia né un tablet né uno smartphone con cui questo produttore è in relazione.
Questo rispristina l’informazione che avevo all’inizio rappresentato con la cardinalità 1 che affermava che il
produttore doveva produrre almeno un tablet o almeno uno smartphone.
Eliminazione figlie: abbiamo messe un nuovo attributo che può assumere valori solo in smartphone o
tablet.
Quello che cambia è sempre la cardinalità minima, e quindi anche in questo caso dobbiamo inserire le
regole aziendali.
La prima regola aziendale riguarda proprio i valori che TIPO può assumere
1. TIPO può assumere solo valori in {tablet, smartphone}
- Per ogni x in DISPOSITIVO MOBILE, se x.TIPO=smartphone, allora x.DUAL SIM≠NULL e x.SERVIZIO
→
VOCE = NULL Avro valore in servizio voce ma non in dual sim in quanto era attributo di
smartphone
- Per ogni x in DISPOSITIVO MOBILE ,se x.TIPO= tablet, allora x.DUAL SIM = NULL e x.SERVIZIO VOCE≠
NULL
2. Per ogni x in DISPOSITIVO MOBILE , se x.TIPO=tablet, allora esiste y in DISCO tale che (x,y)
appartiene a UTILIZZA
3. Per ogni (x,y) in UTILIZZA ,x.TIPO=tablet
La seconda e terza regola aziendale le vediamo nella lezione successiva 25/10/2017
Per mettere “utilizza” a dispositivo mobile ho dovuto cambiare anche la cardinalità dalla parte di
dispositivo. Però mettere 0 come cardinalità minima è molto imprecisa , quindi devo mantenere
l’informazione secondo cui SOLO E TUTTI i tablet ha una relazione utilizza , questo lo faccio usando due
diverse relazioni aziendali( cioè le uso per quelle informazioni che ho perso inserendo la cardinalità 0 , per
riprendere queste informazioni devo usare delle regole aziendali):
- La prima relazione afferma che se prendo un tablet esiste un disco con cui è in relazione, quindi
tutti i tablet utilizzano un disco
- La seconda relazione devo dire che sono SOLO i tablet a usare il disco
La seconda e la terza ci sono solo quando le figlie hanno degli attributi che sono del padre
Le ultime due delle regole aziendali sono necessarie perché c'è una relazione che coinvolge una delle entità
figlie, questa relazione sul ramo figlia è (1,1), se la cardinalità minima e 0 in origine allora dobbiamo metter
solo l’ultima regola aziendale, se invece c'è 1 allora si seguono le ultime due regole . 02/11/2017
ESEMPIO: questa è la nostra identità che ha identificatore ID e poi ha 4 attributi, la traduco con una tabella
che ha lo stesso nome dell’entità, l’identificatore diventa la chiave ID e poi ho un attributo per ogni
attributo che avevo nell’entità.
Stesso esempio con studente , che come identificatore ha matricola e 3 attributi ,con la traduzione avrò la
tabella studente con matricola sottolineata perché identificatore e i miei 3 attributi
Più complicato si ha con l’entità debole, è quella che viene identificata attraverso una delle relazioni , che
ha con un’altra entità, l’importante è che sul