【问题标题】:What is Android Room foreign key used for?Android Room 外键是做什么用的?
【发布时间】:2018-10-25 01:25:40
【问题描述】:

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

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

onDelete = ForeignKey.CASCADE

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

我问这个问题的原因是在 OrmLite 中,例如,当您定义 foreign = true 时,您可以连接数据库并用数据填充外部值。这是你不能用房间的@ForeignKey 做的。 这里详细解释了foreign 在 OrmLite 中的作用。

我说的对吗?

【问题讨论】:

  • 您的研究表明了什么? How to Ask
  • 您的意思是“用于链接两个”表(而不是“数据库”)吗? “这只是我给定的定义”是否意味着,它仅适用于您在第二段中所说的内容?此外,不清楚您所说的“然后您可以连接数据库并可以用数据填充外部值”是什么意思。也许你可以引用文档。请使用更多的单词和句子。
  • 是的,这就是我的意思,我编辑了问题

标签: sqlite foreign-keys relational-database android-room ormlite


【解决方案1】:

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

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

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

What is the difference between an entity relationship model and a relational model?

【讨论】:

  • 感谢FKs的解释。但我仍然没有得到我的问题的答案。那可能是因为我是 SQL 和 DB 管理的新手。我想知道 OrmLiteforeign 是否不等于 Room@ForeignKey。房间 FK 是否仅用于我们更新父子时也会更新?
  • 请尽量编辑您的帖子,而不是通过评论来澄清。使用足够的单词和句子来清楚地表达你的意思。
猜你喜欢
  • 2019-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-12
  • 1970-01-01
  • 2011-03-26
相关资源
最近更新 更多