[basi di dati] join

_overflow_1
Ciao a tutti!!!

Stavo facendo un po' di esercizi di basi e sono incappato nel seguente:

Date le relazioni $R$(A, B) ed $S$( A, C) (AB è chiave per R e AC è chiave per S) determinare la chiave primaria di $R $ \(\displaystyle \Join \) $ S$

Allora lo schema risultante dal join sarà $(A, B, C)$ ora per trovare la chiave non so come procedere in questo caso, in quanto non ho nessuna dipendenza funzionale data esplicitamente dall'esercizio...

Provando a ragionare mi verrebbe da dire che sicuramente la chiave non può essere $A$ in quanto ad esempio avendo le seguenti istanze di relazione:

$R((a1, b1), (a1, b2))$ ed $S((a1, c1), (a2, c2))$ facendo il join otterrei:

$R $ \(\displaystyle \Join \) $ S((a1, b1, c1), (a1, b2, c2))$
e si vede che l'attributo A possiede stessi valori che determinano valori diversi quindi non può essere chiave, però come faccio a determinare la chiave devo continuare a ragionare in questo modo?...

Voi come procedereste?

Risposte
_overflow_1
nessuno?

apatriarca
Così ad occhio direi che la chiave dovrebbe essere ABC in quanto non mi sembra possa essere possibile determinare A o B o C a partire dagli altri due in quanto le chiavi iniziali sono AB e AC per cui non si possono sicuramente avere \(AB \to C\) o \(AC \to B\) o le chiavi iniziali non sarebbero quelle e non dovrebbe neanche essere possibile avere \(BC \to A\) per le stesse ragioni.

_overflow_1
Prima di tutto grazie per avermi risposto!!!

Quindi se non ho capito male il tuo discorso si basa sulle dipendenze funzionali, in effetti mi sembra la strada più logica da seguire (in effetti ci stavo pensando anche io)...

Quindi per vedere se ho afferrato il concetto se avessi lo stesso esercizio però con le seguenti relazioni
$R($A, B) e $S($A, C) (quindi AB chiave per $R$ e A chiave per $S$) in questo caso la chiave per il join potrebbe essere $AB$ in quanto da $AB$ riesco ad ottenere gli altri, giusto?

apatriarca
Bhe, sì.. è in effetti la definizione di chiave che conosco..

_overflow_1
Ok ok, grazie mille ;)

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.