sqlite - Android Room 外键是做什么用的?
问题描述
Room到底是做什么@ForeignKey
用的?
我知道它用于链接两个表,因此每当父级发生某些更新时,它也会更新子级。例如,
onDelete = ForeignKey.CASCADE
我想这不过是我给定的定义(第二段),对吧?
我问这个问题的原因是在OrmLite中,例如,当您定义时,foreign = true
您可以连接数据库并用数据填充外部值。这是 Room 无法做到@ForeignKey
的。这里详细解释一下foreign在OrmLite中做了什么。
我对吗?
解决方案
FK(外键)是一个关系数据库概念。FK 说表格子行在其他地方唯一出现。等效地,FK 表示参与关系(船)/关联的实体唯一地参与另一个。这些语句是等价的,因为在关系数据库中,表代表每个关系(船)/关联共同参与的实体/值——因此是“关系模型”和“实体-关系模型”。
FK图可用于方便/简写:默认连接条件;防止更新无效状态;级联更新;获取与其他关系(船舶)/关联中的实体关联的唯一值;同时在一个关系(船舶)/关联和另一个中设置值。FK 被错误地称为“关系”,不必知道就可以查询。他们必须知道要求与实体关联的单个值,但我们总是可以只要求一组值,无论它是否总是只有一个元素。
FK、CK(候选键)、PK(主键)和超级键(唯一列/字段集)是约束的特殊情况,它们只是在每个数据库状态和(等效)业务情况下始终为真的条件。它们由关系(船舶)/关联和可能出现的有效业务情况决定。当我们将它们告知 DBMS 时,它可以阻止更新到必须无效的状态,因为它违反了它们。
推荐阅读
- php - 如何使用 PHP json_encode 与字符串而不是整数的引号?
- mysql - 如何正确执行以下更新 MYSQL 语句?
- typescript - 基于输入枚举的Typescript条件返回接口
- spring-mvc - 在春季将 Long 值存储在 byte[] 中
- javascript - 在 api 中按名称排序
- angular - TypeError:无法分配给对象的只读属性
- flask - 烧瓶restx枚举模型
- c# - 并发 AJAX 请求似乎相互延迟
- c# - C# 使用 SaveFileDialog 或 FolderBrowserDialog 保存图像文件
- javascript - CSS/Javascript 可折叠部分不关闭