D2 Plogico2

Post on 28-May-2015

208 views 0 download

Transcript of 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)

Altretraduzioni

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)3

  Latraduzionestandardèsemprepossibileedèl’unicapossibilitàperleassociazioniNaM

  Altreformeditraduzionedelleassociazionisonopossibiliperaltricasidicardinalità(1a1,1aN)

  LealtreformeditraduzionefondonoinunastessarelazioneenMtàeassociazioni

Altretraduzioni

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)4

  Lealtreformeditraduzione:  dannoorigineaunminornumerodirelazioniegeneranoquindiunoschemapiùsemplice

  richiedonounminornumerodijoinperlanavigazioneaGraversoun’associazione,ovveroperaccederealleistanzedienMtàconnessetramitel’associazione

  penalizzanoleoperazionicheconsultanosoltantogliaGribuMdiunaenMtàcheèstatafusa

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

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

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)7

  equivalea:

E1

K1

K2

E2

A1

B1

A2

B2

K2 BRAR

Associazionebinaria1aN

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

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.

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)10

PROVINCIA(NOME_P,REGIONE,...)

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

Associazionebinaria1aNes.

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.

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.

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)13

traduzioneconduerelazioni:

CLIENTE(P_IVA,NOME,TELEFONO)

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

Associazionebinaria1aNes.

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.

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)15

CLIENTE(P_IVA,NOME,TELEFONO)

ORDINE(NUMERO,DATA)

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

Associazionebinaria1aNes.

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.

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.

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)18

STABILIMENTO(N_STAB,…)

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

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

Associazionebinaria1aNes.

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.

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

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

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)22

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

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

Associazionebinaria1a1

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

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

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)25

  Traduzionecontrerelazioni  lachiavedellarelazionechetraducel’associazionepuòessereindifferentementeK1oK2,noncisonoproblemidivalorinulli

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

Associazionebinaria1a1

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

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

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)28

  ètraducibileconunasolarelazionecheconMeneduevoltel’aGributochiave:unavoltacomechiaveedunacomeriferimentoall’istanzaconnessa,connomediversoperspecificareilruolo

(0,n)

(0,1)

dipendente capo_di

matr nomecapo

subordinato

Autoassociazione1aN

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

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)30

  suentrambiramièbenespecificareilruolo:convienelasoluzioneconduerelazioniperevitareridondanze,vincoliedeccessodivalorinulli.

(0,1)

(0,1)

dipendente sposaM

matr nomemarito

moglie

Autoassociazione1a1

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)31

DIPENDENTE(MATR,NOME)

SPOSATI(MOGLIE,MARITO)FK: MOGLIEREFERENCESDIPENDENTEFK: MARITOREFERENCESDIPENDENTE

Autoassociazione1a1

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

Associazionen‐aria

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)33

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

  Esempio:progek‐parM‐magazzini

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

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

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

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

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

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)39

PROGETTO(PRJ,DESCRIZIONE)

MAGAZZINO(COD_M,NOME,DISTANZA)

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

Associazionen‐aria

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

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

BasidiDaM‐ProgeGoLogicoRelazionale(Parte2)42

  nelcasoprecedenteladipendenzatramagazzinoepartenonerastataespressasullaassociazionen‐aria,abbiamoipoMzzatodiscoprirlanellafasediprogeGologico

  seilprogeGoconceGualeèbenfaGocasidelgenerenonsonofrequenM

  diversoèilcasoincuisivoglionoesprimeredeivincolicherichiederebberounusocomplicatodienMtàdicollegamentoconidenMficazioneesterna

  ilricontrollodellechiavidellerelazionièquindiimportante

Commento