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 RESTRICTvə yaON DELETE CASCADEilə 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()
}