• Non ci sono risultati.

3.2 Procedura di traduzione incrementale

3.2.6 Tradurre associazioni binarie e relativi attributi

cardi-nalit`a di A.

In particolare, se la cardinalit`a di A `e N-N, allora la prima fase della tradu-zione in schemi di relatradu-zione estesi genera uno schema di relatradu-zione che traduce A e due altri schemi di relazione per la traduzione di E1ed E2. Lo stesso vale per la seconda fase, che produce tre tabelle: una per A e le rimamenti per E1ed E2. Al contrario, se la cardinalit`a di A `e 1-N, o 1-1, allora n´e la prima, n´e la seconda fase della traduzione generano uno schema di relazione o una tabella che, esplicitamente, siano la traduzione di A: in tali casi, infatti, vedremo che la traduzione di A `e “ospitata” nella traduzione di E1 od E2.

Associazioni N-N

Si consideri la seguente associazione:

della quale lasciamo deliberatamente indefinite le cardinalit`a minime, indican-dole col simbolo ?, siccome, ai fini della traduzione, le cardinalit`a minime sono irrilevanti.

La traduzione di un’associazione N-N `e quella pi`u naturale.

66 CAPITOLO 3. PROGETTAZIONE LOGICA l’associazione sar`a tradotta, durante la prima fase, in uno schema di re-lazione opportuno, che diventer`a una ovvia tabella corrispondente, nella seconda fase.

Prima fase. Per definizione, il risultato della traduzione della associazione N-N A tra E1 ed E2deve essere il seguente insieme di schemi di relazione e vincoli di integrit`a: E1(I1) (3.12) E2(I2) (3.13) A(E1, E2) (3.14) A.E1⊆ E1.I1 (3.15) A.E2⊆ E2.I2 (3.16) in cui:

gli schemi di relazione (3.12) e (3.13), che traducono le due entit`a, hanno la struttura attesa;

lo schema di relazione (3.14), che traduce l’associazione, ha una chiave costituita dalla coppia E1, E2.

L’idea `e che le istanze dei domini E1ed E2di A dovranno rappresentare le istanze delle omonime entit`a.

Tale richiesta `e soddisfatta per mezzo dei vincoli di integrit`a referenzia-le (3.15) e (3.16): A.E1⊆ E1.I1impone che ogni valore usato come istanza della prima componente la chiave di A debba essere anche istanza della chiave I1 di E1, che rappresenta l’identificatore dell’omonima entit`a; un discorso analogo vale per il secondo vincolo.

Scopo dei vincoli `e, quindi, assicurare che ogni istanza dell’associazione metta in relazione istanze effettivamente esistenti delle entit`a.

Seconda fase. Ciascuno schema di relazione (3.12), (3.13) e (3.14), diventa una tabella del DBMS di riferimento, in cui le chiavi degli schemi di relazione sono trasformate in chiavi primarie.

Quindi, la base di dati in via di realizzazione conterr`a (almeno) tre tabelle:

3.2. PROCEDURA DI TRADUZIONE INCREMENTALE 67

`

E ora la volta di imporre i vincoli d’integrit`a referenziale:

I1 di E1:Tabella deve contenere i soli valori legali del campo E1 in A,

I2 di E2:Tabella deve contenere i soli valori legali del campo E2 in A, che, nella terminologia del DBMS di riferimento, equivale a definire le seguenti “relazioni tra tabelle”:

Per la procedura di definizione dei vincoli di integrit`a referenziale col DBMS di riferimento, rifarsi alla conclusione della Sottosezione3.2.3.

Esercizio 29 (Traduzione approssimata di associazioni N-N.) Nel seguen-te schema:

l’entit`a E1 ha occorrenza obbligatoria in A.

La traduzione dello schema EA dato in schemi di relazione o in tabelle do-vrebbe sottostare alla condizione che le istanze della traduzione di E1 occorrano, necessariamente, come istanze della traduzione di A, in accordo con lo schema EA stesso.

`

E vero che i vincoli di integrit`a referenziale permettono di soddisfare la condizione evidenziata?

Associazioni 1-N

Si consideri il seguente schema:

68 CAPITOLO 3. PROGETTAZIONE LOGICA

con un’associazione 1-N della quale lasciamo deliberatamente indefinite le car-dinalit`a minime.

La traduzione che adotteremo per (3.17) non introdurr`a esplicitamente uno schema di relazione o una tabella, corrispondente ad A.

Per comprenderne il motivo procediamo per passi, ovvero, traduciamo l’as-sociazione binaria 1-N A come se fosse di cardinalit`a N-N, ma con un vincolo in pi`u sul numero di occorrenze di E1 in A stessa.

Prima fase — Proposta temporanea di traduzione. Sotto l’ipotesi di lavoro appena descritta, l’insieme di schemi di relazione e di vincoli necessari per la traduzione di A sono i seguenti:

E1(I1) (3.18)

E2(I2) (3.19)

A(E1, E2) (3.20)

A.E1⊆ E1.I1 (3.21)

A.E2⊆ E2.I2 (3.22)

∀(v1, u1), (v2, u2) ∈ A.(E1, E2) (v1, u1) 6= (v2, u2) ⇒ v16= v2 (3.23)

in cui:

gli schemi di relazione (3.18) — (3.22) realizzano la traduzione dello sche-ma (3.17), come se l’associazione A fosse N-N e non 1-N;

il vincolo (3.23) impone un vincolo di unicit`a sulle occorrenze delle istanze della chiave di E1 come primo elemento delle componenti di A.

In particolare, il vincolo (3.23) si legge come segue:

Per ogni paio di istanze (v1, u1) e (v2, u2) di A.(E1, E2), se esse sono diverse, allora lo sono perch´e sono diversi almeno i loro primi elementi.

3.2. PROCEDURA DI TRADUZIONE INCREMENTALE 69

A questo punto, `e utile osservare quali siano le implicazioni del vincolo (3.23), comparando le seguenti istanze di schemi di relazione:

E1 A E2 {v1 , v2 , v3 , v4 , v5} {(v1, u3) , (v2, u2) , (v3, u1) , (v4, u1)} {u1 , u2 , u3} (3.24) E1A E2 {(v1, u3) , (v2, u2) , (v3, u1) , (v4, u1) , (v5, NULL)} {u1 , u2 , u3} (3.25)

(3.24) propone un’istanza degli schemi di relazione (3.18) — (3.20), rispettando i vincoli (3.21) e (3.22). Invece, (3.25) rappresenta la stessa istanza di A, data da (3.24), ma in maniera alternativa:

l’entit`a E1 e l’associazione A di (3.17) sono state accorpate in un unico schema di relazione E1A;

si sfrutta il valore NULL che, per convenzione, `e diverso da tutti i possibili valori del dominio E2.

Ne consegue che i primi quattro elementi di E1A coincidono con quelli di A nella tabella di istanze di schemi (3.24).

L’accorpamento di E1ed A in E1A, preservando le istanze di A, `e possibile proprio perch´e ogni istanza di E1 occorre al pi`u una volta come primo elemento nelle istanze di A.

Prima fase — Traduzione definitiva. Dalle osservazioni precedenti, la con-clusione `e che la traduzione dello schema EA (3.17) dovr`a essere costituita dal seguente insieme di schemi di relazione:

E1A(I1, E2) (3.26)

E2(I2) (3.27)

E1A.E2⊆ E2.I2 (3.28)

in cui:

lo schema E1A traduce contemporaneamente l’entit`a E1 e l’associazione A dello schema (3.17);

In particolare, l’associazione A sar`a rappresentata per mezzo dei domini I1e E2di E1A;

70 CAPITOLO 3. PROGETTAZIONE LOGICA il vincolo di integrit`a referenziale (3.28) assicura che i valori del dominio

E2 di E1A siano proprio quelli usati per il dominio I2 di E2;

l’unicit`a delle occorrenze della chiave I1 di E1A assicura che nessuna sua istanza sia ripetuta nell’associazione con le istanze di E2di E1A, traducendo correttamente l’associazione 1-N.

Seconda fase. Ogni schema di relazione (3.26) e (3.27) diventa una tabella del DBMS di riferimento, in cui le chiavi degli schemi di relazione sono trasformate in chiavi primarie.

Quindi, la base di dati in via di realizzazione conterr`a (almeno) due tabelle:

con il seguente dettaglio sulla loro struttura:

Su tali tabelle occorre imporre il vincolo d’integrit`a referenziale: per assicu-rare che il campo E2 di E1A:Tabella contenga solo valori presenti nel campo I2 di E2:Tabella.

Nella terminologia del DBMS di riferimento, tale vincolo `e equivalente a definire le seguenti “relazioni tra tabelle”:

Per la procedura di definizione del vincolo di integrit`a referenziale nel DBMS di riferimento, rifarsi alla conclusione della Sottosezione 3.2.3.

Esercizio 30 (Traduzione approssimata di associazioni 1-N.) Nel seguen-te schema:

3.2. PROCEDURA DI TRADUZIONE INCREMENTALE 71

l’entit`a E1ha occorrenza obbligatoria in A.

La traduzione di tale schema in schemi di relazione o in tabelle, dovrebbe sottostare alla condizione che le istanze della traduzione di E1 occorrano, neces-sariamente, come istanze della traduzione di A, in accordo con lo schema EA stesso.

`

E possibile che la traduzione permetta di soddisfare la condizione evidenziata? Associazioni 1-1

Si consideri il seguente schema:

(3.29) con un’associazione 1-1 della quale lasciamo deliberatamente indefinite le car-dinalit`a minime.

La traduzione che adotteremo tradurr`a (3.29) come se A fosse 1-N, quindi, aggiunger`a un opportuno vincolo per ottenere il risultato corretto.

Prima fase. Sotto l’ipotesi di lavoro appena descritta, l’insieme di schemi di relazione e di vincoli necessari per la traduzione di A sono i seguenti:

E1A(I1, E2) (3.30)

E2(I2) (3.31)

E1A.E2⊆ E2.I2 (3.32)

∀(v1, u1), (v2, u2) ∈ E1A.(I1, E2) (v1, u1) 6= (v2, u2) ⇒ u16= u2 (3.33)

in cui:

lo schema E1A traduce contemporaneamente l’entit`a E1 e l’associazione A dello schema (3.29).

In particolare, l’associazione A sar`a rappresentata per mezzo dei domini I1ed E2 di E1A;

il vincolo di integrit`a referenziale (3.32) assicura che i valori del dominio E2di E1A siano proprio quelli usati per il dominio I2di E2;

l’unicit`a delle occorrenze della chiave I1 di E1A assicura che nessuna sua istanza sia ripetuta nell’associazione con le istanze di E2in E1A, traducendo correttamente A come se fosse un’associazione 1-N.

il vincolo (3.33) impone un vincolo di unicit`a sulle occorrenze delle istanze del campo E2come secondo elemento di E1A, ottenendo la rappresentazione di una associazione 1-1, quale `e A. (3.33) si legge, quindi, come segue:

72 CAPITOLO 3. PROGETTAZIONE LOGICA

Per ogni paio di istanze (v1, u1) e (v2, u2) in E1A.(I1, E2), se esse sono diverse, allora lo sono almeno nei valori dei loro secondi elementi.

Ad esempio, (3.33) implica che:

E1A E2 {(v1, u3) , (v2, u2) , (v3, u1) , (v5, NULL)} {u1 , u2 , u3} (3.34)

`e una istanza corretta della traduzione di A in schemi di relazione, siccome nessuna istanza di E2 `e ripetuta come secondo elemento delle istanze di E1A.

Seconda fase. Ogni schema di relazione (3.30) e (3.31) diventa una tabella del DBMS di riferimento, in cui le chiavi degli schemi di relazione sono trasformate in chiavi primarie delle rispettive tabelle.

Quindi, la base di dati in via di realizzazione conterr`a (almeno) due tabelle:

con il seguente dettaglio sulla loro struttura:

Su tali tabelle occorre imporre il vincolo d’integrit`a referenziale, assicurando che il campo E2 di E1A:Tabella contenga solo valori presenti nel campo I2 di E2:Tabella.

Nella terminologia del DBMS di riferimento, tale vincolo `e equivalente a definire le seguenti “relazioni tra tabelle”:

3.2. PROCEDURA DI TRADUZIONE INCREMENTALE 73

Per la procedura di definizione del vincolo di integrit`a referenziale nel DBMS di riferimento, rifarsi alla conclusione della Sottosezione 3.2.3.

Infine, occorre imporre il vincolo di unicit`a sui valori del campo E2 di E1A:Tabella. Esso `e definito ponendo a S`ı (Duplicati non ammessi) il va-lore della propriet`a Indicizzato nell’area Propriet`a campo, durante la defini-zione della struttura di E1A:

Esercizio 31 (Verifica del vincolo di unicit`a.) Tradurre il seguente schema:

prima in schemi di relazione e poi in tabelle. Quindi, popolare le tabelle con istanze che violino il vincolo di unicit`a che occorre imporre sulla traduzione dell’attributo con cui si ingloba l’associazione A nella traduzione di E1.

Esercizio 32 (Traduzione di associazioni 1-1 con entit`a opzionali.) Sia dato il seguente schema EA:

in cui entrambe le entit`a siano a partecipazione opzionale nelle istanze dell’associa-zione 1-1 A.

La traduzione, proposta, in schemi relazionali od in tabelle permette di tra-durre correttamente l’opzionalit`a di una, o di entrambe, le entit`a?

In caso di risposta negativa, esiste una traduzione alternativa dello schema dato, in cui le opzionalit`a siano preservate?

74 CAPITOLO 3. PROGETTAZIONE LOGICA

Esercizio 33 (Dove inglobare un’associazione 1-1.) Traducendo lo schema seguente:

prima in schemi di relazione e poi in tabelle, dove `e corretto inglobare l’associazione A? Nella traduzione dell’entit`a E1o in quella dell’entit`a E2?

Esercizio 34 (Traduzione e popolamento di associazioni 1-1.) Nel corso dell’introduzione alla progettazione concettuale, si sono definiti innumerevoli schemi EA. Quando possibile, tradurre le loro associazioni 1-1 in schemi di relazione, indi-viduandone correttamente le chiavi ed i vincoli di integrit`a referenziale, ed, infine, trasformare gli schemi di relazione in tabelle del DBMS di riferimento.

Attributi di associazioni

Sia A l’associazione binaria, di cardinalit`a arbitraria, in un qualsiasi schema EA. Siano A1,. . . ,An gli attributi di A.

La traduzione di A deve avvenire in accordo con la sua cardinalit`a, secondo quanto descritto finora, e deve essere completata come segue:

una volta definito lo schema di relazione che rappresenta la traduzione di A esso deve essere esteso affinch´e contenga i domini, traduzione di ogni Ai;

una volta definita, A:Tabella deve essere estesa affinch´e contenga i campi A1,. . . ,AN, traduzione di ogni Ai.

Esempio 34 (Traduzione di una asssociazione N-N con attributo.) L’as-sociazione del seguente schema EA:

`e tradotta dallo schema di relazione A(E1, E2, A1) da completare, ovviamente, con gli opportuni vincoli di integrit`a referenziale.