Sobes.tech
Middle+

Oxucu silindikdə nə baş verir, onun əlində kitab varsa? Məlumatların bütövlüyünü necə qorumaq olar?

sobes.tech Süni İntellekt

AI-dan cavab

Əgər oxucu, əlində kitab olan halda silinsə, verilənlər bazasında və ya məlumat strukturlarında uyğunsuzluq yaranə bilər: kitab verilmiş kimi qeyd olunur, amma oxucu artıq yoxdur. Bu, kitabı alan haqqında məlumatın itirilməsinə və məlumatların bütövlüyünün pozulmasına səbəb olur.

Məlumatların bütövlüyünü qorumaq üçün aşağıdakı yanaşmalar istifadə oluna bilər:

  • Verilənlər bazası səviyyəsində məhdudiyyətlər: xarici açarları ON DELETE RESTRICT və ya ON DELETE CASCADE ilə konfiqurasiya edin. Məsələn, oxucunun silinməsini qadağan edin, əgər onun kitabları verilmişdirsə.
  • Əməliyyatlar (transaksiyalar): oxucunu silərkən, əlaqəli qeydləri yoxlayın və yeniləyin (məsələn, kitabları geri qaytarın və ya başqa oxucuya köçürün) tək bir transaksiyada.
  • Tətbiq məntiqi: silməzdən əvvəl, oxucunun aktiv borcları olmadığını yoxlayın və əgər varsa, silməyə icazə verməyin və ya borcları idarə edin.

Go dilində, yoxlama və transaksiyadan istifadə edən nümunə:

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("verilmiş kitabları olan oxucunu silmək olmaz")
    }

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

    return tx.Commit()
}