Sobes.tech
Middle+

Окууучу китебин кармаган учурда эмне болот? Маалыматтардын бүтүндүгүн кантип коргоо керек?

sobes.tech AI

AIден жооп

Эгер окуучуну, колунда китеби бар болсо, өчүрсөңүз, маалымат базасында же маалымат структурасында туура эмес көрүнүш пайда болушу мүмкүн: китеп берилген деп көрсөтүлөт, бирок окуучу азыр жок. Бул китепти алган ким экенин жана маалыматтардын бүтүндүгүн бузат.

Маалыматтардын бүтүндүгүн коргоо үчүн төмөнкү ыкмаларды колдонсо болот:

  • Маалымат базасы деңгээлинде чектөөлөр: тышкы ачкычтарды ON DELETE RESTRICT же ON DELETE CASCADE менен конфигурациялоо. Мисалы, окуучуну, эгерде ал китептер менен камсыздалган болсо, өчүрүүгө тыюу салуу.
  • Транзакциялар: окуучуну өчүрүүдө, байланышкан жазууларды (мисалы, китептерди кайтаруу же башка окуучуга өткөрүү) бир транзакцияда текшерип жана жаңыртуу.
  • Колдонмо логикасы: өчүрүүдөн мурун, окуучунун активдүү карыздары жок экенин текшерип, эгер бар болсо, өчүрүүнү тыюу салуу же карыздарды башкаруу.

Go тилинде, транзакция жана текшерүү колдонуп мисал:

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("китептер менен берилген окуучуну өчүрүү мүмкүн эмес")
    }

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

    return tx.Commit()
}