d2 plogico2
TRANSCRIPT
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