Sobes.tech
Junior — Middle

Room istifadə edən verilənlər bazasında iki cədvəl arasında əlaqə necə qurulur?

sobes.tech Süni İntellekt

AI-dan cavab

Room-da, iki cədvəl arasındakı əlaqə xarici açarlar və anotasiya ilə, həmçinin məlumatların birləşdirilməsi üçün xüsusi siniflər vasitəsilə qurulur.

  1. Xarici açar (Foreign Key) — varlıq (Entity) daxilində @ForeignKey anotasiyası ilə başqa bir cədvəlin birincil açarına istinad edən sahə göstərilir.

  2. Əlaqələr — əlaqəli məlumatları əldə etmək üçün, @Relation anotasiya ilə POJO sinifləri yaradılır və bu siniflər əlaqəli cədvəllərdən iç-içə obyektlər əldə etməyə imkan verir.

"Bir çoxuna" əlaqə nümunəsi:

@Entity
data class User(
    @PrimaryKey val userId: Int,
    val name: String
)

@Entity(
    foreignKeys = [ForeignKey(
        entity = User::class,
        parentColumns = ["userId"],
        childColumns = ["userOwnerId"],
        onDelete = ForeignKey.CASCADE
    )]
)
data class Book(
    @PrimaryKey val bookId: Int,
    val title: String,
    val userOwnerId: Int // xarici açar
)

// İstifadəçi və onun kitablarını almaq üçün sinif
data class UserWithBooks(
    @Embedded val user: User,
    @Relation(
        parentColumn = "userId",
        entityColumn = "userOwnerId"
    )
    val books: List<Book>
)

Bu şəkildə, Room avtomatik olaraq cədvəlləri əlaqələndirir və DAO vasitəsilə əlaqəli məlumatları əldə etməyə imkan verir.