Ciao a tutti! Non capisco perchè ho un inserimento non controllato, creando valori duplicati. Mi spiego:
partendo dallo schema er le relazioni A e B sono figlie di C. Nella ristrutturazione ho tenuto C applicando la sostituzione della generalizzazione con le associazioni verso le figlie A e B.
In pgsql, ho le tabelle C(cod_c), A(cod_a, cod_c), B(cod_b, cod_c).
Nelle tabelle del dbms cod_C è settato come chiave esterna rispettivamente per A e B. Invece cod_c per C è settato come chiave primaria per C.

L'obiettivo è: quando eseguo le insert su A e B il valore della chiave esterna cod_c del padre deve comparire una sola volta in una delle due tabella A o B.
Per cui, quando faccio le insert dei valori su A e B teoricamente dovrei avere una situazione del genere:
INSERT A(cod_a,cod_c)VALUES
(a1,c1)
(a2,c2)
(a3,c3)

INSERT B(cod_b,cod_c)VALUES
(b1,c4)
(b2,c5)
(b3,c6)

Giusto? Invece facendo (riporto solo i valori per cod_c)
inserisci c1, c2, c3 su A
inserisci c1, c2, c3 su B
il dbms mi permette di aggiungerli, creando dei duplicati in due tabelle che condividono la stessa chiave esterna! Perchè?
Ho letto che forse dovrei definire dei controlli (assertion e check); sbaglio?