Junior — Middle
Room ishlatiladigan ma'lumotlar bazasida ikkita jadval o'rtasida qanday bog'lanishni o'rnatish mumkin?
sobes.tech AI
AIdan javob
Room'da, ikki jadval orasidagi bog'lanish tashqi kalitlar va anotatsiyalar yordamida, shuningdek, ma'lumotlarni birlashtirish uchun maxsus sinflar yordamida o'rnatiladi.
-
Tashqi kalit (Foreign Key) — entitetda (Entity)
@ForeignKeyanotatsiyasi bilan boshqa jadvalning birinchi kalitiga murojaat qiladigan maydon ko'rsatiladi. -
Bog'lanishlar — bog'liq ma'lumotlarni olish uchun,
@Relationanotatsiyalari bilan POJO sinflar yaratiladi, ular bog'langan jadvallardan ichma-ich obyektlarni olish imkonini beradi.
"Birga ko'p" bog'lanish misoli:
@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 // tashqi kalit
)
// Foydalanuvchi va uning kitoblarini olish uchun sinf
data class UserWithBooks(
@Embedded val user: User,
@Relation(
parentColumn = "userId",
entityColumn = "userOwnerId"
)
val books: List<Book>
)
Shu tarzda, Room jadvalarni avtomatik ravishda bog'laydi va DAO orqali bog'langan ma'lumotlarni olish imkonini beradi.