如何使用用户电影和收藏夹创建房间数据库?

问题描述

我打算创建一个房间数据库来模拟rest-api,所以我想做的是在数据库中存储充当rest-api的数据。我的想法是要有一个名为Movies(ID,名称等)的表,然后用户可以将该电影保存为收藏,因此,我当时想拥有一个User表(因为假货),然后我想在用户表中添加一个称为收藏夹的电影列表。

还有其他optime方法吗?

我的想法是:

用户

id name age favouriteList:列表

电影

id名称类型持续时间

目标是:

询问电影列表并知道当前用户的收藏夹,但总是返回相同的列表,就在演示时,我必须能够检查哪个是最喜欢的,哪个不是。

解决方法

是的。有一种方法可以用数据预填充“房间”。您要做的就是在您的配置中调用一个函数:

如果您将数据库文件放在assets文件夹中:

Room.databaseBuilder(appContext,AppDatabase.class,"Sample.db")  
    .createFromAsset("database/myapp.db")
    .build()  

但是,有些细节可能会对您有所帮助,因此只需阅读this文章一次。

您还可以通过the official docs

编辑:对于您的另一个问题:如何组织表。您的流程正确。首先有一个用户表:

@Entity(tableName = "user)
data class User(
  @PrimaryKey
  @ColumnInfo(name = "id")
  val id: Int,@ColumnInfo(name = "favorite_movies")
  val favoriteMovies: List<Movie>,... other fields here
)

然后在Movie实体上:

@Entity(tableName = "movies",foreignKeys = [ForeignKey(
        entity = User::class,parentColumns = arrayOf("id"),childColumns = arrayOf("user_id"),onDelete = CASCADE
    )]
)
data class Movie(
  @PrimaryKey
  @ColumnInfo("id")
  val id: Int,@ColumnInfo(name = "user_id",index = true)
  val userId: Int,.... other fields here
)