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

15 . Il modello relazionale Vers . 6.2 – Gennaio 2023
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
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
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 . 40