Sobes.tech
Middle+

Čo sa stane pri odstranitvi čitateľa, ktorý má v rukách knihu? Ako zaščititi celovitost podatkov?

sobes.tech AI

Odpoveď od AI

Ak odstránite čitateľa, ktorý má požičanú knihu, môže dôjsť k nesúladu v databáze alebo v dátovej štruktúre: kniha je označená ako požičaná, ale čitateľ už neexistuje. To vedie k strate informácií o tom, kto si knihu požičal, a narušuje integritu údajov.

Na ochranu integrity údajov je možné použiť nasledujúce prístupy:

  • Obmedzenia na úrovni databázy: nakonfigurujte cudzie kľúče s obmedzením ON DELETE RESTRICT alebo ON DELETE CASCADE. Napríklad zakážte odstránenie čitateľa, ak má požičané knihy.
  • Transakcie: pri odstraňovaní čitateľa overte a aktualizujte súvisiace záznamy (napríklad vrátenie kníh alebo ich prevod na iného čitateľa) v jednej transakcii.
  • Logika aplikácie: pred odstránením overte, či čitateľ nemá aktívne výpožičky, a ak má, zakážte odstránenie alebo spravujte výpožičky.

Príklad v Go s použitím transakcie a kontroly:

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("nie je možné odstrániť čitateľa s požičanými knihami")
    }

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

    return tx.Commit()
}