Middle+
Bir kitabı olan bir okuyucu silindiğinde ne olur? Verilerin bütünlüğünü nasıl koruyabilirsiniz?
sobes.tech yapay zeka
AI'dan gelen yanıt
Bir okuyucu, elinde kitap varken silinirse, veritabanında veya veri yapısında tutarsızlık oluşabilir: kitap ödünç verilmiş olarak görünür, ancak okuyucu artık yoktur. Bu, kimin kitabı aldığı bilgisi kaybolmasına ve veri bütünlüğünün bozulmasına neden olur.
Veri bütünlüğünü korumak için aşağıdaki yaklaşımlar kullanılabilir:
- Veritabanı seviyesinde kısıtlamalar:
ON DELETE RESTRICTveyaON DELETE CASCADEkısıtlamalarıyla dış anahtarlar yapılandırın. Örneğin, ödünç alınmış kitaplar olan bir okuyucunun silinmesini engelleyin. - İşlemler (Transaksiyonlar): Bir okuyucu silinirken, ilişkili kayıtlar (örneğin, kitapların iadesi veya başka bir okuyucuya aktarılması) tek bir işlemde kontrol edilip güncellenmelidir.
- Uygulama mantığı: Silmeden önce, okuyucunun aktif ödünçleri olmadığını kontrol edin ve gerekirse silmeyi engelleyin veya ödünçleri yönetin.
Go dilinde, işlem ve kontrol kullanarak örnek:
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("ödünç alınmış kitaplar olan bir okuyucuyu silemezsiniz")
}
_, err = tx.Exec("DELETE FROM readers WHERE id = ?", readerID)
if err != nil {
return err
}
return tx.Commit()
}