Junior — Middle
როგორ დავამყაროთ კავშირი ორ ცხრილს შორის მონაცემთა ბაზაში, რომელიც იყენებს Room-ს?
sobes.tech AI
პასუხი AI-სგან
Room-ში, ორი ცხრილის შორის კავშირი დამყარებულია საგარეო გასაღებებით და ანოტაციებით, ასევე სპეციალური კლასების გამოყენებით მონაცემების გაერთიანებისთვის.
-
გარე გასაღები (Foreign Key) — არსებაში (Entity) აღნიშნავთ ველს ანოტაციით
@ForeignKey, რომელიც მიუთითებს სხვა ცხრილის პირველკლავზე. -
მიმართულებები — დაკავშირებული მონაცემების მისაღებად, ქმნიან POJO კლასებს
@Relationანოტაციით, რომლებიც საშუალებას აძლევენ ჩაშენებულ ობიექტებს დაკავშირებული ცხრილებიდან მიიღონ.
"ერთი-სამი" ურთიერთობის მაგალითი:
@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 // საგარეო გასაღები
)
// კლასი მომხმარებლის და მისი წიგნების მისაღებად
data class UserWithBooks(
@Embedded val user: User,
@Relation(
parentColumn = "userId",
entityColumn = "userOwnerId"
)
val books: List<Book>
)
ამ გზით, Room ავტომატურად კავშირებს ტაბლებს და საშუალებას აძლევს DAO-ის მეშვეობით მიიღოთ დაკავშირებული მონაცემები.