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 RESTRICTvagyON DELETE CASCADEbeá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()
}