Sobes.tech
Middle+

Mi történik, ha törlöd az olvasót, akinek könyve van? Hogyan védheted az adatok integritását?

sobes.tech MI

Válasz az MI-től

Ha egy olvasót töröl, akinek van kölcsönzött könyve, adatbázisban vagy adatstruktúrában inkonzisztencia léphet fel: a könyv kölcsönzöttként jelenik meg, de az olvasó már nem létezik. Ez információvesztést okoz arról, hogy ki vette kölcsön a könyvet, és sérti az adatok integritását.

Az adatok integritásának védelme érdekében a következő megközelítéseket lehet alkalmazni:

  • Korlátozások az adatbázis szintjén: konfigurálja a külső kulcsokat ON DELETE RESTRICT vagy ON DELETE CASCADE beállítással. Például tiltsa meg egy olvasó törlését, ha van kölcsönzött könyve.
  • Tranzakciók: az olvasó törlésekor ellenőrizze és frissítse a kapcsolódó rekordokat (pl. könyvek visszaadása vagy átadása más olvasónak) egy tranzakción belül.
  • Alkalmazás logikája: a törlés előtt ellenőrizze, hogy az olvasónak nincsenek aktív kölcsönzései, és ha vannak, tiltsa meg a törlést vagy kezelje a kölcsönzéseket.

Példa Go nyelven tranzakció és ellenőrzés használatával:

func DeleteReader(db *sql.DB, readerID int) error {
    tx, err := db.Begin()
    if err != nil {
        return err
    }
    defer tx.Rollback()

    var count int
    err = tx.QueryRow("SELECT COUNT(*) FROM books WHERE reader_id = ?", readerID).Scan(&count)
    if err != nil {
        return err
    }
    if count > 0 {
        return fmt.Errorf("nem lehet törölni egy olvasót kölcsönzött könyvekkel")
    }

    _, err = tx.Exec("DELETE FROM readers WHERE id = ?", readerID)
    if err != nil {
        return err
    }

    return tx.Commit()
}