问题描述
我打算创建一个房间数据库来模拟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
)