Sobes.tech
Junior — Middle

Wie stellt man eine Verbindung zwischen zwei Tabellen in einer Datenbank her, die Room verwendet?

sobes.tech KI

Antwort von AI

In Room wird die Beziehung zwischen zwei Tabellen durch Fremdschlüssel und Anmerkungen sowie durch spezielle Klassen zum Zusammenführen von Daten hergestellt.

  1. Fremdschlüssel (Foreign Key) — in der Entität (Entity) gibt man ein Feld mit der Annotation @ForeignKey an, das auf den Primärschlüssel einer anderen Tabelle verweist.

  2. Beziehungen — um verbundene Daten zu erhalten, erstellt man POJO-Klassen mit den Annotations @Relation, die verschachtelte Objekte aus verbundenen Tabellen ermöglichen.

Beispiel für eine "eins zu viele" Beziehung:

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

@Entity(
    foreignKeys = [ForeignKey(
        entity = User::class,
        parentColumns = ["userId"],
        childColumns = ["userOwnerId"],
        onDelete = ForeignKey.CASCADE
    )]
)
datenklasse Book(
    @PrimaryKey val bookId: Int,
    val title: String,
    val userOwnerId: Int // Fremdschlüssel
)

// Klasse zum Abrufen des Benutzers mit seinen Büchern
datenklasse UserWithBooks(
    @Embedded val user: User,
    @Relation(
        parentColumn = "userId",
        entityColumn = "userOwnerId"
    )
    val books: List<Book>
)

Auf diese Weise verbindet Room die Tabellen automatisch und ermöglicht das Abrufen verbundener Daten über das DAO.