我正在考虑创建一个包含一对多和多对多元素的模式。由于我在这方面有点新手,我搜索了一些资源,发现了两种类型的示例;1.将下层对象的内容放入上层,然后进行处理。第二种类型是创建外键,您认为哪一种更正确?
1.
@Entity
public class User {
@PrimaryKey
public final int id;
public final String login;
public final String avatarUrl;
}
@Entity
public class Tweet {
@PrimaryKey
public long id;
public String body;
public String createdAt;
public long userId;
// this field will be ignored by Room, but still can be used in other places in the Twitter app
@Ignore
public User user;
}
@Entity
public class User {
@PrimaryKey
public final int id;
public final String login;
public final String avatarUrl;
}
@Entity(foreignKeys = @ForeignKey(entity = User.class,
parentColumns = "id",
childColumns = "userId",
onDelete = CASCADE))
public class Tweet {
@PrimaryKey
public long id;
public String body;
public String createdAt;
public long userId;
}
这两个选项中,哪一个是正确且有效的?
另外,这是我想要创建的数据库模式。。你觉得我该怎么办。。请用java展示我不认识kotlin的例子
{
"UserDatabase":
[
{
"sql_id": 0,
"name": "Test Name",
"username": "null",
"gender": "male",
"profile_photo_path": "path",
"pro_version": true,
"date_of_birth": "01/01/0000",
"weight": 100,
"height": 186,
"waist_size": 0,
"neck_size": 0,
"hip_size": 0,
"bmr_formula": "Benedict",
"macro_formula": "Fitness",
"starting_date": "18/02/2022",
"saved_items":
[
{
"sql_id": 0,
"parent_id": 0,
"item_id": 0,
"item_name": "name",
"item_image": "item image",
"item_url": "url",
"item_editor": "editor"
}
],
"days":
[
{
"sql_id": 0,
"parent_id": 0,
"id": 0,
"date": "16/02/2022",
"weight": 96,
"steps": 25252525,
"taken_kcal": 257.56,
"burned_kcal": 27.86,
"carb": 25.52,
"protein": 5.2,
"fat": 8.4,
"water_ml": "3250",
"water_percent": 27.68,
"daily_water_list":
[
{
"sql_id": 0,
"parent_id": 0,
"id": 0,
"time": 1644999314504,
"water_ml": 300
}
],
"daily_meals":
[
{
"sql_id": 0,
"parent_id": 0,
"id": 0,
"food_meal_time": "Meal Time",
"food_name": "Name",
"food_image": "image url",
"food_kcal": 300.56,
"food_portion": "Portion"
}
]
}
]
}
]
}
更好的方法是使用外键,因为这样可以加强引用完整性。
除此之外,除了在子(ren)(Tweet)中包含父(用户)之外,没有什么区别。这是不需要的(因为你引用了父),它与正常化相矛盾(即它复制数据)。
更具体地说
添加外键引入了约束(规则),这些约束(规则)表示引用父表(用户)的子表(鸣叫)中的值必须是父表中存在的值,否则会发生冲突。
CASCADE的onDelete
操作将自动删除父级,从而帮助/简化维护引用完整性。
问题内容: 嵌套的RAL居? 假设我正在尝试做Spark中的“嵌套循环”。就像普通语言一样,假设我在内部循环中有一个例程,该例程以Pi Average Spark示例 的方式估算Pi(请参见估算Pi) 我可以在Spark中嵌套并行化调用吗?我正在尝试,但还没有解决。乐于张贴错误和代码,但我想我要问一个更概念性的问题,即这是否是Spark中的正确方法。 我已经可以并行化一个Spark实例/ Pi估计
问题内容: 我正在使用multiprocessor.Pool()模块来加速“令人尴尬的并行”循环。其实我有一个嵌套的循环,现在用multiprocessor.Pool加快内循环。例如,在不并行化循环的情况下,我的代码如下: 使用并行化: 我的主要问题是这是否正确,我应该在循环内包含multiprocessing.Pool(),或者是否应该在循环外创建池,即: 另外,我不知道我是否应该包括线“poo
在Haskell中执行嵌套循环有两种明显的“惯用”方法:使用列表monad或使用 : 在1s内运行。这个库使用得不多,也远不是惯用的,那么,获得快速恒定空间二维计算的惯用方法是什么呢?(注意,这不是REPA的情况,因为我想在网格上执行任意IO操作。)
考虑到我正在使用以下RESTful APIendpoint: /users/:显示所有用户 /users/$user_id/:显示特定用户 /users/$user_id/posts/:按用户显示所有帖子 /users/$user_id/posts/$post_id/:按用户显示特定帖子 这个数据模型中的约束:一篇文章总是有一个用户。 “处理嵌套资源”是指处理CRUD操作。 我应该在 /users
在学习Java 8 streams和lambas时,我尝试用streams替换以下嵌套for循环: 循环迭代“ProvidedService”对象的列表,对于每个对象,循环遍历“Desk”对象的列表属性,并将“Id”字段提取到列表中。 我使用streams生成了以下代码: 这是正确/最佳的方法吗?或者有没有一种方法可以在没有第二个嵌套流的情况下实现这一点?
我正在尝试用Mockito模拟我的房间数据库,以便我可以在我的存储库中测试复杂的算法。无论我朝哪个方向走,我都会遇到很多不同的错误。 首先,我试图模仿整个数据库对象,这创建了一个空接口异常。 为了解决这个问题,我使用了房间的静态对象生成器。(这是一个仪器化的单元测试,所以我可以访问底层的Android依赖项) 有了这个,我收到了一个被滥用的匹配器异常… org.mockito.exceptions