Sulla fusione dei record del database, violazione dei vincoli nella tabella intermedia di M2M

0

Se si uniscono due o più record di database dalla tabella X, che hanno una relazione molti-a-molti con la tabella Y, come si dovrebbe risolvere il problema dei record nella tabella intermedia Z che violerebbe uno o più vincoli come risultato della fusione? Li scarti o interrompi la transazione?

    
posta Cochise Ruhulessin 30.10.2012 - 01:16
fonte

3 risposte

1

Dipende dal risultato che ti aspetti. In generale devi anche unire la tabella Z per mantenere l'integrità dei dati.

Non tenere conto dei registri che violano i vincoli. Sarebbe noioso se quei record persi fossero il tuo consiglio mensile per il pagamento degli stipendi.

    
risposta data 30.10.2012 - 11:37
fonte
1

Personalmente abbandonerei le relazioni nella tabella Z, quindi rilasciamo i record pertinenti da X, uniamo i record e poi li riscrivo nel database. Ciò significa che non si rompono i vincoli, non è necessario disabilitare i vincoli e si avranno meno probabilità di commettere errori di fusione lasciando indietro i vecchi dati.

    
risposta data 30.10.2012 - 12:13
fonte
0

Ci sono diversi modi in cui questo problema potrebbe verificarsi:

1-Table Z ha dati errati (non è sicuro del perché o del modo in cui è entrato in primo piano). Diventa quindi una decisione aziendale come cosa fare con i dati cattivi. In genere, è necessario segnalare questi (cattivi) dati alle imprese e lasciarli decidere. Quindi scegli un approccio appropriato per risolvere il problema.

2-Se la tabella X o tabella Y utilizza ID generati automaticamente e la tabella Z dati fa riferimento a tali ID, è possibile che si verifichi questo problema quando si tenta di caricare la tabella Z (supponendo che siano già state caricate tutte le righe in X e Y con successo). In questo caso, si carica la tabella Z senza forzare il vincolo FK (allentare il vincolo prima di caricare Z), caricare Z e quindi ricostruire il vincolo in un passaggio separato.

Come sviluppatore o DBA, non butti via i dati di produzione senza un esplicito accordo con l'utente. Inoltre, consente di conservare i backup.

    
risposta data 30.10.2012 - 13:04
fonte

Leggi altre domande sui tag