Sobes.tech
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:

  1. 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.

  2. 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.
  3. Vincoli di integrità: chiavi primarie, chiavi esterne, restrizioni uniche, controlli (CHECK), che impediscono dati errati.

  4. 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.