5° Anno TEORIA 3. Un modello logico: il modello relazionale | Page 41

15. Il modello relazionale Vers. 7.2 – Dicembre 2025
DEF: Date due relazioni qualsiasi R ed S rispettivamente di grado g1 e g2 e cardinalità c1 e c2 ed un attributo A di R ed un attributo A di S, aventi lo stesso tipo e lo stesso nome, si definisce giunzione naturale o NATURAL-JOIN tra R ed S la relazione di grado( g1 + g2-1) e cardinalità non prevedibile a priori ma minore o uguale a c1 * c2 le cui ennuple si ottengono con il seguente procedimento: 1) prima si effettua il prodotto cartesiano di R ed S( R x S); 2) poi si effettua una restrizione( o selezione) sulla relazione R x S che seleziona le ennuple aventi lo stesso valore degli attributi R. A e S. A( ossia predicato P = ⎨R. A = S. A ⎬). Si ottiene così una relazione una relazione al cui interno sarebbero presenti le colonne R. A e S. A con gli stessi valori e con lo stesso nome; 3) infine si elimina dalla relazione ottenuta, una di queste due colonne perché ridondante. In questo caso si tratta della seguente operazione relazionale composta
ΠK( σP( R X S)) con K che risulta essere l’ insieme di tutti gli attributi della relazione R x S eccetto una tra le due colonne uguali.
N. B. Per quest’ ultimo operatore relazionale non è prevista una notazione ad hoc
Lo scopo della giunzione naturale o NATURAL-JOIN in sintesi è quello di combinare due relazioni aventi uno o più attributi in comune omonimi generando una nuova relazione che contiene:- le colonne della prima e della seconda meno gli attributi in comune;- le righe della prima e della seconda combinate secondo i valori uguali dell’ attributo in comune.
Esempio( equigiunzione o EQUI-JOIN): Siano date le seguenti due relazioni R ed S i cui schemi, dopo il mapping relazionale, siano i seguenti:
R = Cliente( CodCliente, NomeCliente, Indirizzo, CodAg)
con l’ attributo " CodAg " della relazione " Cliente " che risulta chiave esterna( o FK) sull’ attributo " CodAgente " della relazione " Agente "
S = Agente( CodAgente, NomeAgente, Telefono)
Utilizzando la rappresentazione tabellare, supponiamo che tali relazioni contengano, in un certo istante di tempo, le seguenti ennuple:
R
CodCliente
NomeCliente
Indirizzo
CodAg
C001
Neri Mario
Via Po, 5
A001
C002
Bianchi Gianni
Via Lima, 7
A002
C003
Rossi Antonio
Via Riga, 9
A001
C004
Russo Mario
Via Roma, 8 NULL
Grado( R) = 4 Card( R) = 4
S
CodAgente
NomeAgente
Telefono
A001
Verdi Luca
081-123456
A002
Gialli Matteo
081-654321
A003
Vito Andrea
081-456345
Grado( S) = 3 Card( S) = 3
Proviamo adesso a far vedere come si ricava la relazione risultato dell’ operazione relazionale:
Cliente �� Agente
CodAg = CodAgente
che ha come scopo quello di mostrare, in un ' unica tabella, per ogni cliente, anche le informazioni relative agli agenti che li gestiscono.
Autore: Rio Chierego( email: riochierego @ libero. it- sito web: www. riochierego. it) Pag. 41