外键约束和参照完整性约束有什么区别

尼基尔·米什拉(Nikhil Mishra)

这可能是一个愚蠢的问题,请原谅。我最近遇到了这个问题:

考虑关系R1(A,B,C)和R2(B,P,Q),其中A,B,C,P,Q是属性集。R1中的B值必须强制存在于R2中。这是一个例子

  1. 外键约束
  2. 逻辑数据独立性
  3. 参照完整性约束
  4. 域约束

答:参照完整性约束

我无法区分参照完整性约束和外键约束

赞纳特·蒙多尔

为什么我们更喜欢参照完整性约束:

根据reference [1],参照完整性约束是其中所有外键的所有值均有效的数据库状态。

在您的示例中,“ R1中的B的值必须强制存在于R2中”行指示-子表(R2)包含父表(R1)中的所有B值,这意味着R2中的B的所有值均有效-导致参照完整性约束。

再次说明为什么不使用外键约束:

根据参考文献[2],不必总是具有外键来确保参照完整性约束。还有其他方法可以确保完整性约束。

回到您的示例,没有提及外键或主键。该问题仅指示两个表之间的引用。因此,最好选择参照完整性约束而不是外键约束。

参考:

https://www.toolbox.com/tech/big-data/question/difference-between-foreign-key-and-refrential-integrity-constraint-091703/ https://www.mssqltips.com/sqlservertip/4242/ sql-server-referential-integrity-without-foreign-keys /

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用JPA的关系和参照完整性约束

来自分类Dev

实体框架迁移-违反参照完整性约束

来自分类Dev

发生参照完整性约束违规

来自分类Dev

发生参照完整性约束违规

来自分类Dev

Spring boot:违反参照完整性约束

来自分类Dev

创建具有自动递增的字段和参照完整性约束的易失性表

来自分类Dev

JPA参照完整性约束违反oneToMany和批量操作查询

来自分类Dev

违反完整性约束,外键约束失败

来自分类Dev

参照完整性和翻译

来自分类Dev

mysql外键(违反完整性约束)

来自分类Dev

约束符号与外键索引名称->有什么区别?

来自分类Dev

错误:.net中的db.SaveChanges()发生参照完整性约束冲突?

来自分类Dev

发生了参照完整性约束冲突。更新 EF 时

来自分类Dev

在 Teradata 中删除未命名的参照完整性约束

来自分类Dev

插入选定的数据作为外键和 SQLSTATE[23000]:完整性约束违规:1048

来自分类Dev

Hibernate OneToMany违反完整性约束:外键没有父代

来自分类Dev

SQL错误:违反完整性约束:外键没有父级

来自分类Dev

Laravel:违反完整性约束:1452无法添加或更新子行:外键约束失败

来自分类Dev

Laravel 5:SQLSTATE [23000]:违反完整性约束,外键约束失败

来自分类Dev

完整性约束违规:1451 无法删除或更新父行:外键约束失败

来自分类Dev

回滚数据 liquibase.exception.RollbackFailedException: liquibase.exception.DatabaseException: 参照完整性约束冲突:

来自分类Dev

同义词和参照完整性

来自分类Dev

参照完整性和复杂的联接

来自分类Dev

PostgreSQL使用现有行和参照完整性创建表分区

来自分类Dev

H2群集怪异行为:外键上的虚假参照完整性违规

来自分类Dev

参照完整性访问

来自分类Dev

SQLAlchemy抛出完整性错误,“表上的更新或删除违反了外键约束”

来自分类Dev

默认情况下,SQLite是否真的不保留外键约束的数据完整性?

来自分类Dev

将外键用于用户角色时违反完整性约束

Related 相关文章

  1. 1

    使用JPA的关系和参照完整性约束

  2. 2

    实体框架迁移-违反参照完整性约束

  3. 3

    发生参照完整性约束违规

  4. 4

    发生参照完整性约束违规

  5. 5

    Spring boot:违反参照完整性约束

  6. 6

    创建具有自动递增的字段和参照完整性约束的易失性表

  7. 7

    JPA参照完整性约束违反oneToMany和批量操作查询

  8. 8

    违反完整性约束,外键约束失败

  9. 9

    参照完整性和翻译

  10. 10

    mysql外键(违反完整性约束)

  11. 11

    约束符号与外键索引名称->有什么区别?

  12. 12

    错误:.net中的db.SaveChanges()发生参照完整性约束冲突?

  13. 13

    发生了参照完整性约束冲突。更新 EF 时

  14. 14

    在 Teradata 中删除未命名的参照完整性约束

  15. 15

    插入选定的数据作为外键和 SQLSTATE[23000]:完整性约束违规:1048

  16. 16

    Hibernate OneToMany违反完整性约束:外键没有父代

  17. 17

    SQL错误:违反完整性约束:外键没有父级

  18. 18

    Laravel:违反完整性约束:1452无法添加或更新子行:外键约束失败

  19. 19

    Laravel 5:SQLSTATE [23000]:违反完整性约束,外键约束失败

  20. 20

    完整性约束违规:1451 无法删除或更新父行:外键约束失败

  21. 21

    回滚数据 liquibase.exception.RollbackFailedException: liquibase.exception.DatabaseException: 参照完整性约束冲突:

  22. 22

    同义词和参照完整性

  23. 23

    参照完整性和复杂的联接

  24. 24

    PostgreSQL使用现有行和参照完整性创建表分区

  25. 25

    H2群集怪异行为:外键上的虚假参照完整性违规

  26. 26

    参照完整性访问

  27. 27

    SQLAlchemy抛出完整性错误,“表上的更新或删除违反了外键约束”

  28. 28

    默认情况下,SQLite是否真的不保留外键约束的数据完整性?

  29. 29

    将外键用于用户角色时违反完整性约束

热门标签

归档