首页 > 解决方案 > Android Room 外键是做什么用的?

问题描述

Room到底是做什么@ForeignKey用的?

我知道它用于链接两个表,因此每当父级发生某些更新时,它也会更新子级。例如,

onDelete = ForeignKey.CASCADE

我想这不过是我给定的定义(第二段),对吧?

我问这个问题的原因是在OrmLite中,例如,当您定义时,foreign = true您可以连接数据库并用数据填充外部值。这是 Room 无法做到@ForeignKey的。这里详细解释一下foreign在OrmLite中做了什么。

我对吗?

标签: sqliteforeign-keysrelational-databaseandroid-roomormlite

解决方案


FK(外键)是一个关系数据库概念。FK 说表格子行在其他地方唯一出现。等效地,FK 表示参与关系(船)/关联的实体唯一地参与另一个。这些语句是等价的,因为在关系数据库中,表代表每个关系(船)/关联共同参与的实体/值——因此是“关系模型”和“实体-关系模型”。

FK图可用于方便/简写:默认连接条件;防止更新无效状态;级联更新;获取与其他关系(船舶)/关联中的实体关联的唯一值;同时在一个关系(船舶)/关联和另一个中设置值。FK 被错误地称为“关系”,不必知道就可以查询。他们必须知道要求与实体关联的单个值,但我们总是可以只要求一组值,无论它是否总是只有一个元素。

FK、CK(候选键)、PK(主键)和超级键(唯一列/字段集)是约束的特殊情况,它们只是在每个数据库状态和(等效)业务情况下始终为真的条件。它们由关系(船舶)/关联和可能出现的有效业务情况决定。当我们将它们告知 DBMS 时,它可以阻止更新到必须无效的状态,因为它违反了它们。

实体关系模型和关系模型有什么区别?


推荐阅读