SlideShare a Scribd company logo
1 of 42
Download to read offline
A)
Introduzione

                                            1
    2


     B)
Prog.
ConceGuale
(ER)
                            
                               C)
Modello
Relazionale,

                                                            Algebra
relazionale,
SQL
                                                                                   


     1
   2
    3
    4
    5
    6
   7
                   1
    2
    3
    4
    5
    6
    7


          D)
Prog.
Logica
e
                               E)
Tecnologia
di
un
DBMS

          Normalizzazione  


           1
    2
    3
    4
                              1
    2
    3
    4
    5
    6



                                   F)
Programmazione
DB



                                             1
   2


2
                                                     Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Altre
traduzioni

    La
traduzione
standard
è
sempre
possibile
ed
è

     l’unica
possibilità
per
le
associazioni
N
a
M

    Altre
forme
di
traduzione
delle
associazioni
sono

     possibili
per
altri
casi
di
cardinalità
(1
a
1,
1
a
N)

    Le
altre
forme
di
traduzione
fondono
in
una
stessa

     relazione
enMtà
e
associazioni





3
                                  Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Altre
traduzioni

     Le
altre
forme
di
traduzione:

          danno
origine
a
un
minor
numero
di
relazioni
e

           generano
quindi
uno
schema
più
semplice

          richiedono
un
minor
numero
di
join
per
la

           navigazione
aGraverso
un’associazione,
ovvero
per

           accedere
alle
istanze
di
enMtà
connesse
tramite

           l’associazione

          penalizzano
le
operazioni
che
consultano
soltanto
gli

           aGribuM
di
una
enMtà
che
è
stata
fusa





 4
                                      Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
binaria
1
a
N

                                     traduzione
standard:

     K1

     A1
          E1

     B1

                        (1,1)
         E1
(K1,
A1,
B1)

            AR

                   R
                  E2
(K2,
A2,
B2)

            BR

                        (1,n)
         R
(K1,K2,
AR,
BR)
     K2

     A2
          E2

      B2



5
                                    Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
binaria
1
a
N

    Se
E1
partecipa
con
cardinalità
(1,1)
può
essere
fusa
con

     l’associazione,
oGenendo
una
soluzione
a
due
relazioni:



     
 
E1(K1,
A1,
B1,K2,
AR,
BR)

          
E2(K2,
A2,
B2)


    Se
E1
partecipa
con
cardinalità
(0,1)
la
soluzione
a
due

     relazioni
ha
valori
nulli
in
K2,
AR,
BR
per
le
istanze
di
E1

     che
non
partecipano
all’associazione





6
                                     Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
binaria
1
a
N

         equivale
a:



                                 K1

                                 A1
                   E1

                                B1


            K2
                               K2
 AR
 BR

            A2
          E2

             B2



7
                             Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
binaria
1
a
N

    AGenzione
:
in
questo
caso,
poiché
la
partecipazione
di

     E1
è
0,1
o
1,1,
si
nota
facilmente
che
ad
un
dato
valore

     di
K1
corrisponde
uno
e
un
sol
valore
di
K2
(non
è
vero

     il
contrario),
quindi
si
può
dire
che
K1
implica
K2
o,

     anche,
che
esiste
una
dipendenza
funzionale
da
K1
a
K2


    nella
soluzione
a
3
relazioni
la
chiave
della
relazione
che

     traduce
l’associazione
è
riducibile
a
K1:

     
 
E1(K1,A1,B1)
,



E2(K2,A2,B2)


          
    
R(K1,K2,AR,BR)





8
                                     Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
binaria
1
a
N
es.

                     codice
           codice
              nome_p

     nome_c

                                     nome_c

                  comune

                                                           comune

     abitanM

                        (1,1)
       abitanM

     apparMene

     nome_p
           (1,n)

                                     nome_p

                  provincia

 regione
                                                 provincia

                                     regione


     (senza
aGribuM
sull’associazione)


9
                                   Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
binaria
1
a
N
es.



PROVINCIA
(NOME_P,
REGIONE,
...
)


COMUNE
(CODICE,
NOME_C,
ABITANTI,

NOME_P,
…
)

FK:
 
NOME_P
REFERENCES
PROVINCIA





10
                           Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
binaria
1
a
N
es.


      CREATE TABLE PROVINCIA
        (NOME_P ... NOT NULL,
         REGIONE ...   PRIMARY KEY (NOME_P));

      CREATE TABLE COMUNE
        (CODICE ... NOT NULL, NOME_C    ...
         ABITANTI ..., NOME_P    ... NOT NULL
         PRIMARY KEY (CODICE)
         FOREIGN KEY NOME_P
           REFERENCES PROVINCIA);




11
                            Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
binaria
1
a
N
es.

                  p_iva

                                                               p_iva

       nome

                  cliente
            nome

                                                            cliente

      telefono

                           (0,n)
    telefono

      sconto
     invia

                           (1,1)
                              p_iva

 numero

                  ordine
           numero

       data
                                                ordine

                                      data

  (con
aGribuM
sull’associazione)
                            sconto


12
                                   Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
binaria
1
a
N
es.

 traduzione
con
due
relazioni:


 CLIENTE
(P_IVA,
NOME,
TELEFONO)


 ORDINE
(NUMERO,
DATA,
P_IVA,
SCONTO)

 FK: 
P_IVA
REFERENCES
CLIENTE





13
                               Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
binaria
1
a
N
es.


 CREATE TABLE CLIENTE (P_IVA ... NOT NULL,
 NOME ...,TELEFONO ..., PRIMARY KEY (P_IVA));

 CREATE TABLE ORDINE (NUMERO ... NOT NULL,
    DATA ... P_IVA ... NOT NULL, SCONTO ...,
 PRIMARY KEY (NUMERO)
 FOREIGN KEY P_IVA REFERENCES CLIENTE);

 con
tre
relazioni:





14
                         Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
binaria
1
a
N
es.

      CLIENTE
(P_IVA,
NOME,
TELEFONO)

      ORDINE
(NUMERO,
DATA)


      INVIA
(NUMERO,
P_IVA,
SCONTO)

      FK:
 
P_IVA
REFERENCES
CLIENTE

      FK: 
NUMERO
REFERENCES
ORDINE





15
                              Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
binaria
1
a
N
es.

CREATE TABLE CLIENTE (P_IVA ... NOT NULL,
  NOME ...,TELEFONO ..., PRIMARY KEY (P_IVA));
CREATE TABLE ORDINE (NUMERO ... NOT NULL,
   DATA ...      PRIMARY KEY (NUMERO));
CREATE TABLE INVIA
  (P_IVA ... NOT NULL, NUMERO ... NOT NULL,
   SCONTO ..., PRIMARY KEY (NUMERO)
   FOREIGN KEY P_IVA REFERENCES CLIENTE
   FOREIGN KEY NUMERO REFERENCES
   ORDINE);




16
                         Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
binaria
1
a
N
es.

      Con
idenMficazione
esterna

                                                                   n_stab

           nome

                                                     stabili‐

      reparto
                parte
                 mento

                     (1,1)
            (1,n)

                 (1,n)

                               in
                macchina

                                       (1,1)

                                       num
                         c_inv




17
                                      Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
binaria
1
a
N
es.


 STABILIMENTO
(N_STAB,
…)


 REPARTO
(NOME,
N_STAB,
...)

 FK:
 
N_STAB
REFERENCES
STABILIMENTO


 MACCHINA
(NUM,
NOME,
N_STAB,
…)

 FK:
 
NOME
REFERENCES
REPARTO

 FK: 
N_STAB
REFERENCES
STABILIMENTO





18
                          Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
binaria
1
a
N
es.

 CREATE TABLE STABILIMENTO (N_STAB ... NOT
  NULL, ..., ..., PRIMARY KEY (N_STAB));

 CREATE TABLE REPARTO (NOME ... NOT NULL,
   N_STAB ... NOT NULL...     PRIMARY KEY (NOME,
  N_STAB)   FOREIGN KEY N_STAB REFERENCES
  STABILIMENTO

 CREATE TABLE MACCHINA (NUM ... NOT NULL,
  NOME ... NOT NULL, N_STAB ... NOT NULL, ...,
  PRIMARY KEY (NUM, NOME, N_STAB )
  FOREIGN KEY NOME REFERENCES REPARTO
  FOREIGN KEY N_STAB REFERENCES STABILIMENTO);



19
                         Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
binaria
1
a
1


                                  traduzione
con
una

                                 relazione:



  nome_c
        comune
           E12
(K1,
A1,
B1,

  abitanM
                      









K2,
A2,
B2,


                      (1,1)

       data
                    









AR,
BR)


   amministra
         (1,1)

 nome_s

                 sindaco

      parMto



20
                              Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
binaria
1
a
1

 AMMINISTRAZIONE
(NOME_C,
ABITANTI,
NOME_S,

 


  
    
      




INDIRIZZO,
DATA)

 AK:
 
NOME_S


 CREATE TABLE AMMINISTRAZIONE
   (NOME_C   ... NOT NULL,    ABITANTI ...,
    NOME_S   ... NOT NULL UNIQUE,
    INDIRIZZO ...,    DATA ... ,
    PRIMARY KEY (NOME_C));


 se
le
cardinalità
minime
sono
entrambe
1
la


 chiave
può
essere

indifferentamente
K1
o
K2

 si
sceglierà
quella
più
significaMva


21
                              Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
binaria
1
a
1

• se
la
cardinalità
di
E2
è
0,1
e
quella
di
E1

è
1,1
allora
la

  chiave
sarà
K2
;
E2
è
l’enMtà
con
maggior
numero
di

  istanze
alcune
della
quali
non
si
associano,
ci
saranno

  quindi
valori
nulli
in
corrispondenza
di
K1,
K1
in
questo

  caso
non
potrebbe
essere
scelta


• se
la
cardinalità
è
0,1
da
entrambe
le
parM
allora
le

  relazioni
saranno
due
per

l’impossibilità
di
assegnare
la

  chiave
all’unica
relazione
a
causa
della
presenza
di

  valori
nulli
sia
su
K1
che
su
K2





22
                                   Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
binaria
1
a
1

                               assolto

                            (0,1)
    (1,1)

      cod_f
    ciGadino
                         servizio

                                                                       Mpo

      nome_c
        data_n
          matr
               data



 CITTADINO
(COD_F,
NOME_C,
INDIRIZZO,

 





















DATA_N,
MATR,

DATA,
TIPO)

 CREATE TABLE CITTADINO
   (COD_F   ... NOT NULL, NOME_C   ... NOT NULL,
    INDIRIZZO ..., DATA_N ..., MATR ..., DATA...,
    TIPO ...,   PRIMARY KEY (COD_F));

23
                                    Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
binaria
1
a
1

     Traduzione
con
due
relazioni

          l’associazione
può
essere
compaGata
con
l’enMtà

           che
partecipa
obbligatoriamente
(una
delle
due
se

           la
partecipazione
è
obbligatoria
per
entrambe)
la

           discussione
sulla
chiave
è
analoga
al
caso
di

           traduzione
con
una
relazione


      





E1
(K1,
A1,
B1,...)

             
E2
(K2,
A2,
B2,...
K1,
AR,
BR)





24
                                        Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
binaria
1
a
1

    Traduzione
con
tre
relazioni

         la
chiave
della
relazione
che
traduce
l’associazione

          può
essere
indifferentemente
K1
o
K2,
non
ci
sono

          problemi
di
valori
nulli


            
E1
(K1,
A1,
B1,...)

            
E2
(K2,
A2,
B2,...)

            
R
(K1,
K2,
AR,
BR,...)





 25
                                     Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Auto
associazione
N
a
M

 viene
tradoGa
con:

   una
relazione
per
l’enMtà
ed

   una
per
l’associazione,


      •    quest’ulMma
conMene
due
volte
la
chiave
dell’enMtà,
è

           necessario,
però
modificare
i
nomi
degli
aGribuM,
per

           non
avere
omonimia



      nome

                                     (0,n)
                                         

                    stato
             confina

      area

                                     (0,n)



26
                                     Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Auto
associazione
N
a
M

 STATO(NOME,

AREA)

 CONFINA(STATO_A,
STATO_B)

 FK:

 
STATO_A
REFERENCES
STATO

       
STATO_B
REFERENCES
STATO

 CREATE TABLE STATO
   (NOME ... NOT NULL, AREA …
    PRIMARY KEY (NOME));

 CREATE TABLE CONFINA
    STATO_A ... NOT NULL, STATO_B ... NOT NULL,
    PRIMARY KEY (STATO_A, STATO_B)
    FOREIGN KEY (STATO_A)
    REFERENCES STATO
    FOREIGN KEY (STATO_B)
    REFERENCES STATO);
27
                          Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Auto
associazione
1
a
N

      è
traducibile
con
una
sola
relazione
che

       conMene
due
volte
l’aGributo
chiave:
una

       volta
come
chiave
ed
una
come
riferimento

       all’istanza
connessa,
con
nome
diverso
per

       specificare
il
ruolo

        matr
   nome

                           capo

                                   (0,n)

          dipendente
                 capo_di

                                  (0,1)

                        subordinato

28
                                   Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Auto
associazione
1
a
N

 DIPENDENTE
(MATR,
NOME,
CAPO)

 FK:
 
CAPO
REFERENCES
DIPENDENTE


 CREATE TABLE DIPENDENTE
   (MATR ... NOT NULL, NOME ..., CAPO ...
    PRIMARY KEY (MATR)
    FOREIGN KEY (CAPO)
      REFERENCES DIPENDENTE);



     nel
caso
di
associazione
1
ad
1
il
conceGo
di

      ruolo
assume
maggiore
importanza:



29
                              Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Auto
associazione
1
a
1

      matr
   nome

                      marito

                             (0,1)

       dipendente
              sposaM

                             (0,1)

                      moglie

      su
entrambi
rami
è
bene
specificare
il
ruolo:

       conviene

la
soluzione
con
due
relazioni
per

       evitare
ridondanze,
vincoli
ed
eccesso
di
valori

       nulli.



30
                                   Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Auto
associazione
1
a
1


  DIPENDENTE
(MATR,
NOME)


  SPOSATI

(MOGLIE,
MARITO)

  FK:
 
MOGLIE
REFERENCES
DIPENDENTE

  FK:
 
MARITO
REFERENCES
DIPENDENTE





31
                          Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Auto
associazione
1
a
1


CREATE TABLE DIPENDENTE (MATR ... NOT
NULL, NOME ..., PRIMARY KEY (MATR)

CREATE TABLE SPOSATI
  (MOGLIE ... NOT NULL, MARITO ... NOT NULL
   PRIMARY KEY (MOGLIE)
   FOREIGN KEY (MOGLIE) REFERENCES DIPENDENTE
   FOREIGN KEY (MARITO) REFERENCES DIPENDENTE);




32
                        Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
n‐aria

     segue
la
traduzione
standard

     talvolta,
nella
relazione
che
traduce
l’associazione,

      la
chiave
oGenuta
componendo
le
chiavi
di
tuGe
le

      enMtà
partecipanM
è
una
superchiave,
cioè
una

      chiave
composta
il
cui
set
di
componenM
non
è

      minimale
(la
chiave
vera
è
un
soGoinsieme)

     Esempio:
progek‐parM‐magazzini





33
                                 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
n‐aria


                     prj

                                  progeGo

              descrizione

         cod_p
              qta
          (1,n)

                                           consegna

      nome
                   (1,n)

      Mpo
         parte
                                 data

                                            (1,n)

                                (1,n)

                cod_m

                 nome
         magazzino

               distanza



34
                                      Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
n‐aria

PROGETTO
(PRJ,
DESCRIZIONE)

PARTE
(COD_P,
NOME,
TIPO)

MAGAZZINO
(COD_M,
NOME,
DISTANZA)

CREATE TABLE PROGETTO (PRJ... NOT NULL,
   DESCRIZIONE... , PRIMARY KEY (PRJ));
CREATE TABLE PARTE (COD_P ... NOT NULL,
   NOME…, TIPO…, PRIMARY KEY (COD_P));
CREATE TABLE MAGAZZINO (COD_M…. NOT NULL,
 NOME ..., DISTANZA…, PRIMARY KEY (COD_M));

non
c’è
una
relazione
per
la
data



la
data
era
un’enMtà
fikzia
messa
nello
schema
per

   garanMre
l’unicità
delle
consegne,
comparirà
infak
nella

   definizione
della
chiave

35
                               Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
n‐aria

  l’associazione
diventa:

  CONSEGNA
(PRJ,
COD_P,
COD_M,
DATA,
QTA)

  FK: 
PRJ
REFERENCES
PROGETTO

  FK: 
COD_M
REFERENCES
MAGAZZINO

  FK:
 
COD_P
REFERENCES
PARTE

  CREATE TABLE CONSEGNA (PRJ ... NOT NULL,
     COD_P... NOT NULL, COD_M... NOT NULL,
     DATA... NOT NULL, QTA ...
     PRIMARY KEY (PRJ, COD_P, COD_M, DATA)
     FOREIGN KEY (PRJ) REFERENCES PROGETTO
     FOREIGN KEY (COD_M) REFERENCES MAGAZZINO
     FOREIGN KEY (COD_P) REFERENCES PARTE);
  ipoMzziamo
che
(PRJ,
COD_P,
COD_M,
DATA)

  sia
una
superchiave:

36
                            Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
n‐aria

    una
parte
esiste
in
un
solo
magazzino,
quindi
COD_P
è

     associato
ad
un
solo
COD_M,
cioè
determina
COD_M,

     allora
la
presenza
di
COD_M
nella
chiave
è
ridondante:


     CONSEGNA
(PRJ,
COD_P,
COD_M,
DATA,

QTA)

     FK: 
PRJ
REFERENCES
PROGETTO

     FK: 
COD_M
REFERENCES
MAGAZZINO

     FK:
 
COD_P
REFERENCES
PARTE



     • 
COD_M
è
ridondante
anche
nella
relazione




 37
                                 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
n‐aria

    infak,
se
una
parte
esiste
in
un
solo
magazzino:


                            prj

                     descrizione
             progeGo


                 cod_p
               qta
          (1,n)

            nome
                                   consegna

                                       (1,n)

            Mpo
           parte
                                   data

                                                      (1,n)

                            (1,1)

       cod_m

       nome
        magazzino
                         sta

     distanza
                       (1,n)



 38
                                    Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
n‐aria


 PROGETTO
(PRJ,
DESCRIZIONE)


 MAGAZZINO
(COD_M,
NOME,
DISTANZA)


 PARTE
(COD_P,
NOME,
TIPO,
COD_M)


 FK:
 
COD_M

REFERENCES
MAGAZZINO





39
                             Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
n‐aria


CREATE TABLE PROGETTO (PRJ... NOT NULL,
   DESCRIZIONE... , PRIMARY KEY (PRJ));

CREATE TABLE MAGAZZINO (COD_M... NOT NULL,
 NOME ..., DISTANZA ..., PRIMARY KEY (COD_M));

CREATE TABLE PARTE (COD_P ... NOT NULL,
 NOME..., TIPO..., COD_M... NOT NULL,
 PRIMARY KEY (COD_P), FOREIGN KEY (COD_M)
 REFERENCES MAGAZZINO);




40
                        Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Associazione
n‐aria

• la
chiave
foresMera
nella
relazione

PARTE
traduce

  l’associazione
STA
(1
a
N)
ed
elimina
le
ripeMzioni
nella

  relazione

CONSEGNA

• l’associazione
diventa:


 CONSEGNA
(PRJ,
COD_P,
DATA,

QTA)

 FK:
 
PRJ
REFERENCES
PROGETTO

 FK:
 
COD_P
REFERENCES
PARTE


 CREATE TABLE CONSEGNA (PRJ ... NOT NULL,
    COD_P... NOT NULL, DATA... NOT NULL, QTA
  PRIMARY KEY (PRJ, COD_P, DATA)
   FOREIGN KEY (PRJ) REFERENCES PROGETTO
   FOREIGN KEY (COD_P) REFERENCES PARTE);

41
                                Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

Commento

     nel
caso
precedente
la
dipendenza
tra
magazzino
e

      parte
non
era
stata
espressa
sulla
associazione
n‐aria,

      abbiamo
ipoMzzato
di
scoprirla
nella
fase
di
progeGo

      logico

     se
il
progeGo
conceGuale
è
ben
faGo
casi
del
genere

      non
sono
frequenM

     diverso
è
il
caso
in
cui
si
vogliono
esprimere
dei
vincoli

      che

richiederebbero
un
uso
complicato
di
enMtà
di

      collegamento
con
idenMficazione
esterna

     il
ricontrollo
delle
chiavi
delle
relazioni
è
quindi

      importante




42
                                    Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)


More Related Content

Viewers also liked

Traffic Shaping Su Linux
Traffic Shaping Su LinuxTraffic Shaping Su Linux
Traffic Shaping Su LinuxMajong DevJfu
 
esercizio sigda n 11
esercizio sigda n 11esercizio sigda n 11
esercizio sigda n 11Majong DevJfu
 
5 sistemi informativi d'azienda
5 sistemi informativi d'azienda5 sistemi informativi d'azienda
5 sistemi informativi d'aziendaMajong DevJfu
 
Calcolo Numerico - 2 - Numeri Di Macchina
Calcolo Numerico - 2 - Numeri Di MacchinaCalcolo Numerico - 2 - Numeri Di Macchina
Calcolo Numerico - 2 - Numeri Di MacchinaMajong DevJfu
 
6 sistemi informativi d'azienda
6 sistemi informativi d'azienda6 sistemi informativi d'azienda
6 sistemi informativi d'aziendaMajong DevJfu
 
F1 Vincoli Procedure Trigger
F1 Vincoli Procedure TriggerF1 Vincoli Procedure Trigger
F1 Vincoli Procedure TriggerMajong DevJfu
 
Laboratorio Programmazione: Visibilita' e tipi di dato
Laboratorio Programmazione: Visibilita' e tipi di datoLaboratorio Programmazione: Visibilita' e tipi di dato
Laboratorio Programmazione: Visibilita' e tipi di datoMajong DevJfu
 
01 - Programmazione: Dai Problemi ai Programmi
01 - Programmazione: Dai Problemi ai Programmi01 - Programmazione: Dai Problemi ai Programmi
01 - Programmazione: Dai Problemi ai ProgrammiMajong DevJfu
 
Linguaggi Formali Compilazione: Grammatiche
Linguaggi Formali Compilazione: GrammaticheLinguaggi Formali Compilazione: Grammatiche
Linguaggi Formali Compilazione: GrammaticheMajong DevJfu
 
Introduzione a Linguaggi formali e compilazione
Introduzione a Linguaggi formali e compilazioneIntroduzione a Linguaggi formali e compilazione
Introduzione a Linguaggi formali e compilazioneMajong DevJfu
 
Sistemi Operativi: Struttura - Lezione 04
Sistemi Operativi: Struttura - Lezione 04Sistemi Operativi: Struttura - Lezione 04
Sistemi Operativi: Struttura - Lezione 04Majong DevJfu
 
Basi di Dati - C1 - Il modello relazionale dei dati
Basi di Dati - C1 - Il modello relazionale dei datiBasi di Dati - C1 - Il modello relazionale dei dati
Basi di Dati - C1 - Il modello relazionale dei datiMajong DevJfu
 

Viewers also liked (16)

Traffic Shaping Su Linux
Traffic Shaping Su LinuxTraffic Shaping Su Linux
Traffic Shaping Su Linux
 
esercizio sigda n 11
esercizio sigda n 11esercizio sigda n 11
esercizio sigda n 11
 
2 Sigda
2 Sigda2 Sigda
2 Sigda
 
C4es
C4esC4es
C4es
 
C6 Sql2
C6 Sql2C6 Sql2
C6 Sql2
 
E1 Memorie
E1 MemorieE1 Memorie
E1 Memorie
 
5 sistemi informativi d'azienda
5 sistemi informativi d'azienda5 sistemi informativi d'azienda
5 sistemi informativi d'azienda
 
Calcolo Numerico - 2 - Numeri Di Macchina
Calcolo Numerico - 2 - Numeri Di MacchinaCalcolo Numerico - 2 - Numeri Di Macchina
Calcolo Numerico - 2 - Numeri Di Macchina
 
6 sistemi informativi d'azienda
6 sistemi informativi d'azienda6 sistemi informativi d'azienda
6 sistemi informativi d'azienda
 
F1 Vincoli Procedure Trigger
F1 Vincoli Procedure TriggerF1 Vincoli Procedure Trigger
F1 Vincoli Procedure Trigger
 
Laboratorio Programmazione: Visibilita' e tipi di dato
Laboratorio Programmazione: Visibilita' e tipi di datoLaboratorio Programmazione: Visibilita' e tipi di dato
Laboratorio Programmazione: Visibilita' e tipi di dato
 
01 - Programmazione: Dai Problemi ai Programmi
01 - Programmazione: Dai Problemi ai Programmi01 - Programmazione: Dai Problemi ai Programmi
01 - Programmazione: Dai Problemi ai Programmi
 
Linguaggi Formali Compilazione: Grammatiche
Linguaggi Formali Compilazione: GrammaticheLinguaggi Formali Compilazione: Grammatiche
Linguaggi Formali Compilazione: Grammatiche
 
Introduzione a Linguaggi formali e compilazione
Introduzione a Linguaggi formali e compilazioneIntroduzione a Linguaggi formali e compilazione
Introduzione a Linguaggi formali e compilazione
 
Sistemi Operativi: Struttura - Lezione 04
Sistemi Operativi: Struttura - Lezione 04Sistemi Operativi: Struttura - Lezione 04
Sistemi Operativi: Struttura - Lezione 04
 
Basi di Dati - C1 - Il modello relazionale dei dati
Basi di Dati - C1 - Il modello relazionale dei datiBasi di Dati - C1 - Il modello relazionale dei dati
Basi di Dati - C1 - Il modello relazionale dei dati
 

Similar to D2 Plogico2

Similar to D2 Plogico2 (6)

D4 Dderivati
D4 DderivatiD4 Dderivati
D4 Dderivati
 
05 - Programmazione: Funzioni
05 - Programmazione: Funzioni05 - Programmazione: Funzioni
05 - Programmazione: Funzioni
 
Codici di Reed-Solomon
Codici di Reed-SolomonCodici di Reed-Solomon
Codici di Reed-Solomon
 
R sim rank
R sim rank  R sim rank
R sim rank
 
E6 Concorre
E6 ConcorreE6 Concorre
E6 Concorre
 
Ecdl modulo 1 -Fondamenti
Ecdl modulo 1 -FondamentiEcdl modulo 1 -Fondamenti
Ecdl modulo 1 -Fondamenti
 

More from Majong DevJfu

9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA CloudMajong DevJfu
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processesMajong DevJfu
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product lineMajong DevJfu
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformationMajong DevJfu
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven ArchitectureMajong DevJfu
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture PortfolioMajong DevJfu
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural stylesMajong DevJfu
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architectureMajong DevJfu
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a productMajong DevJfu
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural stylesMajong DevJfu
 

More from Majong DevJfu (20)

9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product line
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles
 
Uml3
Uml3Uml3
Uml3
 
Uml2
Uml2Uml2
Uml2
 
6
66
6
 
5
55
5
 
4 (uml basic)
4 (uml basic)4 (uml basic)
4 (uml basic)
 
3
33
3
 
2
22
2
 
1
11
1
 
Tmd template-sand
Tmd template-sandTmd template-sand
Tmd template-sand
 
26 standards
26 standards26 standards
26 standards
 

D2 Plogico2

  • 1.
  • 2. A)
Introduzione
 1
 2
 B)
Prog.
ConceGuale
(ER) 
 C)
Modello
Relazionale,
 Algebra
relazionale,
SQL 
 1
 2
 3
 4
 5
 6
 7
 1
 2
 3
 4
 5
 6
 7
 D)
Prog.
Logica
e
 E)
Tecnologia
di
un
DBMS
 Normalizzazione 
 1
 2
 3
 4
 1
 2
 3
 4
 5
 6
 F)
Programmazione
DB
 1
 2
 2
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 3. Altre
traduzioni
   La
traduzione
standard
è
sempre
possibile
ed
è
 l’unica
possibilità
per
le
associazioni
N
a
M
   Altre
forme
di
traduzione
delle
associazioni
sono
 possibili
per
altri
casi
di
cardinalità
(1
a
1,
1
a
N)
   Le
altre
forme
di
traduzione
fondono
in
una
stessa
 relazione
enMtà
e
associazioni
 3
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 4. Altre
traduzioni
   Le
altre
forme
di
traduzione:
   danno
origine
a
un
minor
numero
di
relazioni
e
 generano
quindi
uno
schema
più
semplice
   richiedono
un
minor
numero
di
join
per
la
 navigazione
aGraverso
un’associazione,
ovvero
per
 accedere
alle
istanze
di
enMtà
connesse
tramite
 l’associazione
   penalizzano
le
operazioni
che
consultano
soltanto
gli
 aGribuM
di
una
enMtà
che
è
stata
fusa
 4
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 5. Associazione
binaria
1
a
N
   traduzione
standard:
 K1
 A1
 E1
 B1
 (1,1)
 E1
(K1,
A1,
B1)
 AR
 R
 E2
(K2,
A2,
B2)
 BR
 (1,n)
 R
(K1,K2,
AR,
BR) K2
 A2
 E2
 B2
 5
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 6. Associazione
binaria
1
a
N
   Se
E1
partecipa
con
cardinalità
(1,1)
può
essere
fusa
con
 l’associazione,
oGenendo
una
soluzione
a
due
relazioni:
 
 
E1(K1,
A1,
B1,K2,
AR,
BR)
 
E2(K2,
A2,
B2)
   Se
E1
partecipa
con
cardinalità
(0,1)
la
soluzione
a
due
 relazioni
ha
valori
nulli
in
K2,
AR,
BR
per
le
istanze
di
E1
 che
non
partecipano
all’associazione
 6
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 7. Associazione
binaria
1
a
N
   equivale
a:
 K1
 A1
 E1
 B1
 K2
 K2
 AR
 BR
 A2
 E2
 B2
 7
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 8. Associazione
binaria
1
a
N
   AGenzione
:
in
questo
caso,
poiché
la
partecipazione
di
 E1
è
0,1
o
1,1,
si
nota
facilmente
che
ad
un
dato
valore
 di
K1
corrisponde
uno
e
un
sol
valore
di
K2
(non
è
vero
 il
contrario),
quindi
si
può
dire
che
K1
implica
K2
o,
 anche,
che
esiste
una
dipendenza
funzionale
da
K1
a
K2

   nella
soluzione
a
3
relazioni
la
chiave
della
relazione
che
 traduce
l’associazione
è
riducibile
a
K1:
 
 
E1(K1,A1,B1)
,



E2(K2,A2,B2)

 
 
R(K1,K2,AR,BR)
 8
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 9. Associazione
binaria
1
a
N
es.
 codice
 codice
 nome_p
 nome_c
 nome_c
 comune
 comune
 abitanM
 (1,1)
 abitanM
 apparMene
 nome_p
 (1,n)
 nome_p
 provincia
 regione
 provincia
 regione
 (senza
aGribuM
sull’associazione)
 9
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 11. Associazione
binaria
1
a
N
es.
 CREATE TABLE PROVINCIA (NOME_P ... NOT NULL, REGIONE ... PRIMARY KEY (NOME_P)); CREATE TABLE COMUNE (CODICE ... NOT NULL, NOME_C ... ABITANTI ..., NOME_P ... NOT NULL PRIMARY KEY (CODICE) FOREIGN KEY NOME_P REFERENCES PROVINCIA); 11
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 12. Associazione
binaria
1
a
N
es.
 p_iva
 p_iva
 nome
 cliente
 nome
 cliente
 telefono
 (0,n)
 telefono
 sconto
 invia
 (1,1)
 p_iva
 numero
 ordine
 numero
 data
 ordine
 data
 (con
aGribuM
sull’associazione)
 sconto
 12
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 13. Associazione
binaria
1
a
N
es.
 traduzione
con
due
relazioni:
 CLIENTE
(P_IVA,
NOME,
TELEFONO)
 ORDINE
(NUMERO,
DATA,
P_IVA,
SCONTO)
 FK: 
P_IVA
REFERENCES
CLIENTE
 13
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 14. Associazione
binaria
1
a
N
es.
 CREATE TABLE CLIENTE (P_IVA ... NOT NULL, NOME ...,TELEFONO ..., PRIMARY KEY (P_IVA)); CREATE TABLE ORDINE (NUMERO ... NOT NULL, DATA ... P_IVA ... NOT NULL, SCONTO ..., PRIMARY KEY (NUMERO) FOREIGN KEY P_IVA REFERENCES CLIENTE); con
tre
relazioni:
 14
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 15. Associazione
binaria
1
a
N
es.
 CLIENTE
(P_IVA,
NOME,
TELEFONO)
 ORDINE
(NUMERO,
DATA)
 INVIA
(NUMERO,
P_IVA,
SCONTO)
 FK:
 
P_IVA
REFERENCES
CLIENTE
 FK: 
NUMERO
REFERENCES
ORDINE
 15
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 16. Associazione
binaria
1
a
N
es.
 CREATE TABLE CLIENTE (P_IVA ... NOT NULL, NOME ...,TELEFONO ..., PRIMARY KEY (P_IVA)); CREATE TABLE ORDINE (NUMERO ... NOT NULL, DATA ... PRIMARY KEY (NUMERO)); CREATE TABLE INVIA (P_IVA ... NOT NULL, NUMERO ... NOT NULL, SCONTO ..., PRIMARY KEY (NUMERO) FOREIGN KEY P_IVA REFERENCES CLIENTE FOREIGN KEY NUMERO REFERENCES ORDINE); 16
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 17. Associazione
binaria
1
a
N
es.
 Con
idenMficazione
esterna
 n_stab
 nome
 stabili‐
 reparto
 parte
 mento
 (1,1)
 (1,n)
 (1,n)
 in
 macchina
 (1,1)
 num
 c_inv
 17
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 18. Associazione
binaria
1
a
N
es.
 STABILIMENTO
(N_STAB,
…)
 REPARTO
(NOME,
N_STAB,
...)
 FK:
 
N_STAB
REFERENCES
STABILIMENTO
 MACCHINA
(NUM,
NOME,
N_STAB,
…)
 FK:
 
NOME
REFERENCES
REPARTO
 FK: 
N_STAB
REFERENCES
STABILIMENTO
 18
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 19. Associazione
binaria
1
a
N
es.
 CREATE TABLE STABILIMENTO (N_STAB ... NOT NULL, ..., ..., PRIMARY KEY (N_STAB)); CREATE TABLE REPARTO (NOME ... NOT NULL, N_STAB ... NOT NULL... PRIMARY KEY (NOME, N_STAB) FOREIGN KEY N_STAB REFERENCES STABILIMENTO CREATE TABLE MACCHINA (NUM ... NOT NULL, NOME ... NOT NULL, N_STAB ... NOT NULL, ..., PRIMARY KEY (NUM, NOME, N_STAB ) FOREIGN KEY NOME REFERENCES REPARTO FOREIGN KEY N_STAB REFERENCES STABILIMENTO); 19
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 20. Associazione
binaria
1
a
1
   traduzione
con
una
 relazione:

 nome_c
 comune
 E12
(K1,
A1,
B1,
 abitanM
 









K2,
A2,
B2,

 (1,1)
 data
 









AR,
BR)

 amministra
 (1,1)
 nome_s
 sindaco
 parMto
 20
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 21. Associazione
binaria
1
a
1
 AMMINISTRAZIONE
(NOME_C,
ABITANTI,
NOME_S,
 


 
 
 




INDIRIZZO,
DATA)
 AK:
 
NOME_S
 CREATE TABLE AMMINISTRAZIONE (NOME_C ... NOT NULL, ABITANTI ..., NOME_S ... NOT NULL UNIQUE, INDIRIZZO ..., DATA ... , PRIMARY KEY (NOME_C)); se
le
cardinalità
minime
sono
entrambe
1
la

 chiave
può
essere

indifferentamente
K1
o
K2
 si
sceglierà
quella
più
significaMva
 21
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 22. Associazione
binaria
1
a
1
 • se
la
cardinalità
di
E2
è
0,1
e
quella
di
E1

è
1,1
allora
la
 chiave
sarà
K2
;
E2
è
l’enMtà
con
maggior
numero
di
 istanze
alcune
della
quali
non
si
associano,
ci
saranno
 quindi
valori
nulli
in
corrispondenza
di
K1,
K1
in
questo
 caso
non
potrebbe
essere
scelta
 • se
la
cardinalità
è
0,1
da
entrambe
le
parM
allora
le
 relazioni
saranno
due
per

l’impossibilità
di
assegnare
la
 chiave
all’unica
relazione
a
causa
della
presenza
di
 valori
nulli
sia
su
K1
che
su
K2
 22
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 23. Associazione
binaria
1
a
1
 assolto
 (0,1)
 (1,1)
 cod_f
 ciGadino
 servizio
 Mpo
 nome_c
 data_n
 matr
 data
 CITTADINO
(COD_F,
NOME_C,
INDIRIZZO,
 





















DATA_N,
MATR,

DATA,
TIPO)
 CREATE TABLE CITTADINO (COD_F ... NOT NULL, NOME_C ... NOT NULL, INDIRIZZO ..., DATA_N ..., MATR ..., DATA..., TIPO ..., PRIMARY KEY (COD_F)); 23
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 24. Associazione
binaria
1
a
1
   Traduzione
con
due
relazioni
   l’associazione
può
essere
compaGata
con
l’enMtà
 che
partecipa
obbligatoriamente
(una
delle
due
se
 la
partecipazione
è
obbligatoria
per
entrambe)
la
 discussione
sulla
chiave
è
analoga
al
caso
di
 traduzione
con
una
relazione
 





E1
(K1,
A1,
B1,...)
 
E2
(K2,
A2,
B2,...
K1,
AR,
BR)
 24
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 25. Associazione
binaria
1
a
1
   Traduzione
con
tre
relazioni
   la
chiave
della
relazione
che
traduce
l’associazione
 può
essere
indifferentemente
K1
o
K2,
non
ci
sono
 problemi
di
valori
nulli
 
E1
(K1,
A1,
B1,...)
 
E2
(K2,
A2,
B2,...)
 
R
(K1,
K2,
AR,
BR,...)
 25
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 26. Auto
associazione
N
a
M
 viene
tradoGa
con:
   una
relazione
per
l’enMtà
ed
   una
per
l’associazione,

 •  quest’ulMma
conMene
due
volte
la
chiave
dell’enMtà,
è
 necessario,
però
modificare
i
nomi
degli
aGribuM,
per
 non
avere
omonimia
 nome
 (0,n) 
 stato
 confina
 area
 (0,n)
 26
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 27. Auto
associazione
N
a
M
 STATO(NOME,

AREA)
 CONFINA(STATO_A,
STATO_B)
 FK:

 
STATO_A
REFERENCES
STATO
 
STATO_B
REFERENCES
STATO
 CREATE TABLE STATO (NOME ... NOT NULL, AREA … PRIMARY KEY (NOME)); CREATE TABLE CONFINA STATO_A ... NOT NULL, STATO_B ... NOT NULL, PRIMARY KEY (STATO_A, STATO_B) FOREIGN KEY (STATO_A) REFERENCES STATO FOREIGN KEY (STATO_B) REFERENCES STATO); 27
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 28. Auto
associazione
1
a
N
   è
traducibile
con
una
sola
relazione
che
 conMene
due
volte
l’aGributo
chiave:
una
 volta
come
chiave
ed
una
come
riferimento
 all’istanza
connessa,
con
nome
diverso
per
 specificare
il
ruolo
 matr
 nome
 capo
 (0,n)
 dipendente
 capo_di
 (0,1)
 subordinato
 28
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 29. Auto
associazione
1
a
N
 DIPENDENTE
(MATR,
NOME,
CAPO)
 FK:
 
CAPO
REFERENCES
DIPENDENTE
 CREATE TABLE DIPENDENTE (MATR ... NOT NULL, NOME ..., CAPO ... PRIMARY KEY (MATR) FOREIGN KEY (CAPO) REFERENCES DIPENDENTE);   nel
caso
di
associazione
1
ad
1
il
conceGo
di
 ruolo
assume
maggiore
importanza:
 29
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 30. Auto
associazione
1
a
1
 matr
 nome
 marito
 (0,1)
 dipendente
 sposaM
 (0,1)
 moglie
   su
entrambi
rami
è
bene
specificare
il
ruolo:
 conviene

la
soluzione
con
due
relazioni
per
 evitare
ridondanze,
vincoli
ed
eccesso
di
valori
 nulli.
 30
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 31. Auto
associazione
1
a
1
 DIPENDENTE
(MATR,
NOME)
 SPOSATI

(MOGLIE,
MARITO)
 FK:
 
MOGLIE
REFERENCES
DIPENDENTE
 FK:
 
MARITO
REFERENCES
DIPENDENTE
 31
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 32. Auto
associazione
1
a
1
 CREATE TABLE DIPENDENTE (MATR ... NOT NULL, NOME ..., PRIMARY KEY (MATR) CREATE TABLE SPOSATI (MOGLIE ... NOT NULL, MARITO ... NOT NULL PRIMARY KEY (MOGLIE) FOREIGN KEY (MOGLIE) REFERENCES DIPENDENTE FOREIGN KEY (MARITO) REFERENCES DIPENDENTE); 32
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 33. Associazione
n‐aria
   segue
la
traduzione
standard
   talvolta,
nella
relazione
che
traduce
l’associazione,
 la
chiave
oGenuta
componendo
le
chiavi
di
tuGe
le
 enMtà
partecipanM
è
una
superchiave,
cioè
una
 chiave
composta
il
cui
set
di
componenM
non
è
 minimale
(la
chiave
vera
è
un
soGoinsieme)
   Esempio:
progek‐parM‐magazzini
 33
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 34. Associazione
n‐aria
 prj
 progeGo
 descrizione
 cod_p
 qta
 (1,n)
 consegna
 nome
 (1,n)
 Mpo
 parte
 data
 (1,n)
 (1,n)
 cod_m
 nome
 magazzino
 distanza
 34
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 35. Associazione
n‐aria
 PROGETTO
(PRJ,
DESCRIZIONE)
 PARTE
(COD_P,
NOME,
TIPO)
 MAGAZZINO
(COD_M,
NOME,
DISTANZA)
 CREATE TABLE PROGETTO (PRJ... NOT NULL, DESCRIZIONE... , PRIMARY KEY (PRJ)); CREATE TABLE PARTE (COD_P ... NOT NULL, NOME…, TIPO…, PRIMARY KEY (COD_P)); CREATE TABLE MAGAZZINO (COD_M…. NOT NULL, NOME ..., DISTANZA…, PRIMARY KEY (COD_M)); 
non
c’è
una
relazione
per
la
data
 

la
data
era
un’enMtà
fikzia
messa
nello
schema
per
 garanMre
l’unicità
delle
consegne,
comparirà
infak
nella
 definizione
della
chiave
 35
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 36. Associazione
n‐aria
 l’associazione
diventa:
 CONSEGNA
(PRJ,
COD_P,
COD_M,
DATA,
QTA)
 FK: 
PRJ
REFERENCES
PROGETTO
 FK: 
COD_M
REFERENCES
MAGAZZINO
 FK:
 
COD_P
REFERENCES
PARTE
 CREATE TABLE CONSEGNA (PRJ ... NOT NULL, COD_P... NOT NULL, COD_M... NOT NULL, DATA... NOT NULL, QTA ... PRIMARY KEY (PRJ, COD_P, COD_M, DATA) FOREIGN KEY (PRJ) REFERENCES PROGETTO FOREIGN KEY (COD_M) REFERENCES MAGAZZINO FOREIGN KEY (COD_P) REFERENCES PARTE); ipoMzziamo
che
(PRJ,
COD_P,
COD_M,
DATA)
 sia
una
superchiave:
 36
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 37. Associazione
n‐aria
   una
parte
esiste
in
un
solo
magazzino,
quindi
COD_P
è
 associato
ad
un
solo
COD_M,
cioè
determina
COD_M,
 allora
la
presenza
di
COD_M
nella
chiave
è
ridondante:
 CONSEGNA
(PRJ,
COD_P,
COD_M,
DATA,

QTA)
 FK: 
PRJ
REFERENCES
PROGETTO
 FK: 
COD_M
REFERENCES
MAGAZZINO
 FK:
 
COD_P
REFERENCES
PARTE
 • 
COD_M
è
ridondante
anche
nella
relazione
 37
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 38. Associazione
n‐aria
   infak,
se
una
parte
esiste
in
un
solo
magazzino:
 prj
 descrizione
 progeGo
 cod_p
 qta
 (1,n)
 nome
 consegna
 (1,n)
 Mpo
 parte
 data
 (1,n)
 (1,1)
 cod_m
 nome
 magazzino
 sta
 distanza
 (1,n)
 38
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 39. Associazione
n‐aria
 PROGETTO
(PRJ,
DESCRIZIONE)
 MAGAZZINO
(COD_M,
NOME,
DISTANZA)
 PARTE
(COD_P,
NOME,
TIPO,
COD_M)

 FK:
 
COD_M

REFERENCES
MAGAZZINO
 39
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 40. Associazione
n‐aria
 CREATE TABLE PROGETTO (PRJ... NOT NULL, DESCRIZIONE... , PRIMARY KEY (PRJ)); CREATE TABLE MAGAZZINO (COD_M... NOT NULL, NOME ..., DISTANZA ..., PRIMARY KEY (COD_M)); CREATE TABLE PARTE (COD_P ... NOT NULL, NOME..., TIPO..., COD_M... NOT NULL, PRIMARY KEY (COD_P), FOREIGN KEY (COD_M) REFERENCES MAGAZZINO); 40
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 41. Associazione
n‐aria
 • la
chiave
foresMera
nella
relazione

PARTE
traduce
 l’associazione
STA
(1
a
N)
ed
elimina
le
ripeMzioni
nella
 relazione

CONSEGNA
 • l’associazione
diventa:
 CONSEGNA
(PRJ,
COD_P,
DATA,

QTA)
 FK:
 
PRJ
REFERENCES
PROGETTO
 FK:
 
COD_P
REFERENCES
PARTE
 CREATE TABLE CONSEGNA (PRJ ... NOT NULL, COD_P... NOT NULL, DATA... NOT NULL, QTA PRIMARY KEY (PRJ, COD_P, DATA) FOREIGN KEY (PRJ) REFERENCES PROGETTO FOREIGN KEY (COD_P) REFERENCES PARTE); 41
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)

  • 42. Commento
   nel
caso
precedente
la
dipendenza
tra
magazzino
e
 parte
non
era
stata
espressa
sulla
associazione
n‐aria,
 abbiamo
ipoMzzato
di
scoprirla
nella
fase
di
progeGo
 logico
   se
il
progeGo
conceGuale
è
ben
faGo
casi
del
genere
 non
sono
frequenM
   diverso
è
il
caso
in
cui
si
vogliono
esprimere
dei
vincoli
 che

richiederebbero
un
uso
complicato
di
enMtà
di
 collegamento
con
idenMficazione
esterna
   il
ricontrollo
delle
chiavi
delle
relazioni
è
quindi
 importante
 42
 Basi
di
DaM
‐
ProgeGo
Logico
Relazionale
(Parte
2)