Junior — Middle
Quali metodi vengono utilizzati per mantenere la coerenza dei dati nei database relazionali?
sobes.tech AI
Risposta dell'AI
Per mantenere la coerenza dei dati nei database relazionali, vengono applicati i seguenti metodi:
-
Transazioni — consentono di eseguire un insieme di operazioni come un'unica unità. Se una operazione fallisce, tutte le modifiche vengono annullate, garantendo l'integrità dei dati.
-
Principi ACID:
- Atomicità — le operazioni all'interno di una transazione vengono completate completamente o non vengono eseguite affatto.
- Consistenza — il database passa da uno stato corretto a un altro.
- Isolamento — le transazioni parallele non influenzano le une le altre.
- Durabilità — una volta confermata, la transazione persiste anche in caso di guasti.
-
Vincoli di integrità: chiavi primarie, chiavi esterne, restrizioni uniche, controlli (CHECK), che impediscono dati errati.
-
Blocchi e livelli di isolamento — gestiscono l'accesso concorrente, prevenendo conflitti e garantendo la coerenza.
Esempio in Go con transazioni:
trx, err := db.Begin()
if err != nil {
// gestione errore
}
_, err = trx.Exec("UPDATE accounts SET balance = balance - 100 WHERE id = ?", fromID)
if err != nil {
trx.Rollback()
// gestione errore
}
_, err = trx.Exec("UPDATE accounts SET balance = balance + 100 WHERE id = ?", toID)
if err != nil {
trx.Rollback()
// gestione errore
}
err = trx.Commit()
if err != nil {
// gestione errore
}
In questo esempio, il trasferimento di denaro tra conti avviene all'interno di una singola transazione, garantendo la coerenza dei dati.