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.
-
Xarici açar (Foreign Key) — varlıq (Entity) daxilində
@ForeignKeyanotasiyası ilə başqa bir cədvəlin birincil açarına istinad edən sahə göstərilir. -
Əlaqələr — əlaqəli məlumatları əldə etmək üçün,
@Relationanotasiya 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.