D2 Plogico2

42

Transcript of D2 Plogico2

Page 1: D2 Plogico2
Page 2: D2 Plogico2

C)ModelloRelazionale,Algebrarelazionale,SQL

1 2 3 4 5 6 7

E)TecnologiadiunDBMS

1 2 3 4 5 6

A)Introduzione

1 2

B)Prog.ConceGuale(ER)

1 2 3 4 5 6 7

D)Prog.LogicaeNormalizzazione

1 2 3 4

F)ProgrammazioneDB

1 2

2 BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)

Page 3: D2 Plogico2

Altretraduzioni

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)3

  Latraduzionestandardèsemprepossibileedèl’unicapossibilitàperleassociazioniNaM

  Altreformeditraduzionedelleassociazionisonopossibiliperaltricasidicardinalità(1a1,1aN)

  LealtreformeditraduzionefondonoinunastessarelazioneenMtàeassociazioni

Page 4: D2 Plogico2

Altretraduzioni

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)4

  Lealtreformeditraduzione:  dannoorigineaunminornumerodirelazioniegeneranoquindiunoschemapiùsemplice

  richiedonounminornumerodijoinperlanavigazioneaGraversoun’associazione,ovveroperaccederealleistanzedienMtàconnessetramitel’associazione

  penalizzanoleoperazionicheconsultanosoltantogliaGribuMdiunaenMtàcheèstatafusa

Page 5: D2 Plogico2

Associazionebinaria1aN

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)5

  traduzionestandard:

E1(K1,A1,B1)

E2(K2,A2,B2)

R(K1,K2,AR,BR)

E1

K1

(1,n)

(1,1)

K2

E2

A1

R

B1

A2

B2

AR

BR

Page 6: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)6

  SeE1partecipaconcardinalità(1,1)puòesserefusaconl’associazione,oGenendounasoluzioneaduerelazioni:

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

E2(K2,A2,B2)

  SeE1partecipaconcardinalità(0,1)lasoluzioneaduerelazionihavalorinulliinK2,AR,BRperleistanzediE1chenonpartecipanoall’associazione

Associazionebinaria1aN

Page 7: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)7

  equivalea:

E1

K1

K2

E2

A1

B1

A2

B2

K2 BRAR

Associazionebinaria1aN

Page 8: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)8

  AGenzione:inquestocaso,poichélapartecipazionediE1è0,1o1,1,sinotafacilmentecheadundatovalorediK1corrispondeunoeunsolvalorediK2(nonèveroilcontrario),quindisipuòdirecheK1implicaK2o,anche,cheesisteunadipendenzafunzionaledaK1aK2

  nellasoluzionea3relazionilachiavedellarelazionechetraducel’associazioneèriducibileaK1:

E1(K1,A1,B1),E2(K2,A2,B2)

R(K1,K2,AR,BR)

Associazionebinaria1aN

Page 9: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)9

comune

nome_c

nome_p

provincia

(1,1)

(1,n)

abitanM

apparMene

regione

codice

comunenome_c

nome_p

provincia

abitanM

regione

codice nome_p

(senzaaGribuMsull’associazione)

Associazionebinaria1aNes.

Page 10: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)10

PROVINCIA(NOME_P,REGIONE,...)

COMUNE(CODICE,NOME_C,ABITANTI,NOME_P,…)FK: NOME_PREFERENCESPROVINCIA

Associazionebinaria1aNes.

Page 11: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)11

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);

Associazionebinaria1aNes.

Page 12: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)12

clientenome

numeroordine

(0,n)

(1,1)

telefono

invia

data

sconto

p_iva

clientenome

numeroordine

telefono

data

sconto

p_iva

p_iva

(conaGribuMsull’associazione)

Associazionebinaria1aNes.

Page 13: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)13

traduzioneconduerelazioni:

CLIENTE(P_IVA,NOME,TELEFONO)

ORDINE(NUMERO,DATA,P_IVA,SCONTO)FK: P_IVAREFERENCESCLIENTE

Associazionebinaria1aNes.

Page 14: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)14

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);

contrerelazioni:

Associazionebinaria1aNes.

Page 15: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)15

CLIENTE(P_IVA,NOME,TELEFONO)

ORDINE(NUMERO,DATA)

INVIA(NUMERO,P_IVA,SCONTO)FK: P_IVAREFERENCESCLIENTEFK: NUMEROREFERENCESORDINE

Associazionebinaria1aNes.

Page 16: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)16

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);

Associazionebinaria1aNes.

Page 17: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)17

nome

reparto

stabili‐mento

(1,n)(1,n)

(1,1)parte

in macchina

num

(1,1)

n_stab

ConidenMficazioneesterna

c_inv

Associazionebinaria1aNes.

Page 18: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)18

STABILIMENTO(N_STAB,…)

REPARTO(NOME,N_STAB,...)FK: N_STABREFERENCESSTABILIMENTO

MACCHINA(NUM,NOME,N_STAB,…)FK: NOMEREFERENCESREPARTOFK: N_STABREFERENCESSTABILIMENTO

Associazionebinaria1aNes.

Page 19: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)19

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);

Associazionebinaria1aNes.

Page 20: D2 Plogico2

Associazionebinaria1a1

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)20

 traduzioneconunarelazione:

E12(K1,A1,B1,K2,A2,B2,AR,BR)

comunenome_c

nome_ssindaco

(1,1)

(1,1)abitanM

amministra

parMto

data

Page 21: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)21

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

selecardinalitàminimesonoentrambe1lachiavepuòessereindifferentamenteK1oK2sisceglieràquellapiùsignificaMva

AMMINISTRAZIONE(NOME_C,ABITANTI,NOME_S, INDIRIZZO,DATA)AK: NOME_S

Associazionebinaria1a1

Page 22: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)22

• selacardinalitàdiE2è0,1equelladiE1è1,1alloralachiavesaràK2;E2èl’enMtàconmaggiornumerodiistanzealcunedellaqualinonsiassociano,cisarannoquindivalorinulliincorrispondenzadiK1,K1inquestocasononpotrebbeesserescelta

• selacardinalitàè0,1daentrambeleparMalloralerelazionisarannodueperl’impossibilitàdiassegnarelachiaveall’unicarelazioneacausadellapresenzadivalorinullisiasuK1chesuK2

Associazionebinaria1a1

Page 23: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)23

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

ciGadino

nome_c matr

servizio(0,1) (1,1)

data_n

assolto

cod_f

data

Mpo

CITTADINO(COD_F,NOME_C,INDIRIZZO,DATA_N,MATR,DATA,TIPO)

Associazionebinaria1a1

Page 24: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)24

  Traduzioneconduerelazioni  l’associazionepuòesserecompaGataconl’enMtàchepartecipaobbligatoriamente(unadelledueselapartecipazioneèobbligatoriaperentrambe)ladiscussionesullachiaveèanalogaalcasoditraduzioneconunarelazione

E1(K1,A1,B1,...)E2(K2,A2,B2,...K1,AR,BR)

Associazionebinaria1a1

Page 25: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)25

  Traduzionecontrerelazioni  lachiavedellarelazionechetraducel’associazionepuòessereindifferentementeK1oK2,noncisonoproblemidivalorinulli

E1(K1,A1,B1,...)E2(K2,A2,B2,...)R(K1,K2,AR,BR,...)

Associazionebinaria1a1

Page 26: D2 Plogico2

AutoassociazioneNaM

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)26

vienetradoGacon: unarelazioneperl’enMtàed unaperl’associazione,

•  quest’ulMmaconMeneduevoltelachiavedell’enMtà,ènecessario,peròmodificareinomidegliaGribuM,pernonavereomonimia

(0,n)

(0,n)

stato confinaarea

nome

Page 27: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)27

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);

STATO(NOME,AREA)CONFINA(STATO_A,STATO_B)FK: STATO_AREFERENCESSTATO

STATO_BREFERENCESSTATO

AutoassociazioneNaM

Page 28: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)28

  ètraducibileconunasolarelazionecheconMeneduevoltel’aGributochiave:unavoltacomechiaveedunacomeriferimentoall’istanzaconnessa,connomediversoperspecificareilruolo

(0,n)

(0,1)

dipendente capo_di

matr nomecapo

subordinato

Autoassociazione1aN

Page 29: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)29

  nelcasodiassociazione1ad1ilconceGodiruoloassumemaggioreimportanza:

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

DIPENDENTE(MATR,NOME,CAPO)FK: CAPOREFERENCESDIPENDENTE

Autoassociazione1aN

Page 30: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)30

  suentrambiramièbenespecificareilruolo:convienelasoluzioneconduerelazioniperevitareridondanze,vincoliedeccessodivalorinulli.

(0,1)

(0,1)

dipendente sposaM

matr nomemarito

moglie

Autoassociazione1a1

Page 31: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)31

DIPENDENTE(MATR,NOME)

SPOSATI(MOGLIE,MARITO)FK: MOGLIEREFERENCESDIPENDENTEFK: MARITOREFERENCESDIPENDENTE

Autoassociazione1a1

Page 32: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)32

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);

Autoassociazione1a1

Page 33: D2 Plogico2

Associazionen‐aria

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)33

  seguelatraduzionestandard  talvolta,nellarelazionechetraducel’associazione,lachiaveoGenutacomponendolechiavidituGeleenMtàpartecipanMèunasuperchiave,cioèunachiavecompostailcuisetdicomponenMnonèminimale(lachiaveveraèunsoGoinsieme)

  Esempio:progek‐parM‐magazzini

Page 34: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)34

progeGo

parte

magazzino

data

cod_p

nome

qtaconsegna

(1,n)(1,n)

(1,n)

(1,n)

nome

prj

Mpo

cod_m

distanza

descrizione

Associazionen‐aria

Page 35: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)35

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));

nonc’èunarelazioneperladataladataeraun’enMtàfikziamessanelloschemapergaranMrel’unicitàdelleconsegne,compariràinfaknelladefinizionedellachiave

PROGETTO(PRJ,DESCRIZIONE)PARTE(COD_P,NOME,TIPO)MAGAZZINO(COD_M,NOME,DISTANZA)

Associazionen‐aria

Page 36: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)36

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);

ipoMzziamoche(PRJ,COD_P,COD_M,DATA)siaunasuperchiave:

l’associazionediventa:

CONSEGNA(PRJ,COD_P,COD_M,DATA,QTA)FK: PRJREFERENCESPROGETTOFK: COD_MREFERENCESMAGAZZINOFK: COD_PREFERENCESPARTE

Associazionen‐aria

Page 37: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)37

  unaparteesisteinunsolomagazzino,quindiCOD_PèassociatoadunsoloCOD_M,cioèdeterminaCOD_M,alloralapresenzadiCOD_Mnellachiaveèridondante:

CONSEGNA(PRJ,COD_P,COD_M,DATA,QTA)FK: PRJREFERENCESPROGETTOFK: COD_MREFERENCESMAGAZZINOFK: COD_PREFERENCESPARTE

• COD_Mèridondanteanchenellarelazione

Associazionen‐aria

Page 38: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)38

  infak,seunaparteesisteinunsolomagazzino:

progeGo

parte

magazzino

data

cod_p

nome

qtaconsegna

(1,n)

(1,n)

(1,n)

(1,n)

nome

prj

Mpo

cod_m

distanza

descrizione

(1,1)

sta

Associazionen‐aria

Page 39: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)39

PROGETTO(PRJ,DESCRIZIONE)

MAGAZZINO(COD_M,NOME,DISTANZA)

PARTE(COD_P,NOME,TIPO,COD_M)FK: COD_MREFERENCESMAGAZZINO

Associazionen‐aria

Page 40: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)40

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);

Associazionen‐aria

Page 41: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)41

• lachiaveforesMeranellarelazionePARTEtraducel’associazioneSTA(1aN)edeliminaleripeMzioninellarelazioneCONSEGNA

• l’associazionediventa:

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);

CONSEGNA(PRJ,COD_P,DATA,QTA)FK: PRJREFERENCESPROGETTOFK: COD_PREFERENCESPARTE

Associazionen‐aria

Page 42: D2 Plogico2

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)42

  nelcasoprecedenteladipendenzatramagazzinoepartenonerastataespressasullaassociazionen‐aria,abbiamoipoMzzatodiscoprirlanellafasediprogeGologico

  seilprogeGoconceGualeèbenfaGocasidelgenerenonsonofrequenM

  diversoèilcasoincuisivoglionoesprimeredeivincolicherichiederebberounusocomplicatodienMtàdicollegamentoconidenMficazioneesterna

  ilricontrollodellechiavidellerelazionièquindiimportante

Commento