首页 > 数据库 > 数据库开发技术 > 外键约束现已正式可用——PlanetScale
今天,我们宣布外键约束已在 PlanetScale 的任何非分片数据库中正式可用。
外键约束可用于在数据库中强制实施引用完整性。在过去两个月的测试阶段中,已有超过 2,400 个 PlanetScale 数据库启用了外键约束。你可以在 PlanetScale 文档中阅读更多关于我们对外键约束支持的内容。
此前,我们曾撰文介绍过我们如何克服在支持外键约束的同时兼容数据库分支、使用 Online DDL 的非阻塞 schema 变更、门控部署和数据库导入等功能所面临的技术挑战。
要在你的 PlanetScale 数据库中启用外键约束,请转到数据库的“Settings”页面,并勾选 Allow foreign key constraints。
在数据库的“Dashboard”页面上,你会看到一个加载旋转图标,显示它正在“Enabling foreign key constraints”。一旦它不再显示,你就可以在你的 PlanetScale 数据库中使用外键约束了!
在大多数情况下,外键约束在 PlanetScale 中应当按预期工作。有一些情况需要注意,它们不受支持,或者会导致不太理想的行为。你可以在外键约束文档的限制部分阅读更多内容。
如果你还没有现有的 PlanetScale 数据库,并且有一个现有的可通过互联网访问、使用外键约束的 MySQL 或 MariaDB 数据库,你也可以使用我们的数据库导入工具将其导入 PlanetScale。
外键约束经常与外键混淆,而 PlanetScale 从第一天起就支持外键。
外键是关系型数据库中基于两个相关列的值在表之间建立的逻辑关联。它使您能够根据两个表之间特定列的匹配值来查找相关数据。例如,给定一个简单的项目管理 schema,一个 tasks 表可能包含一个名为 project_id 的列,可用于根据 projects 表的 id 列查找相关的 project。
外键约束是一种数据库结构,它将外键更进一步,强制保证外键关系的完整性(参照完整性)。也就是说,它确保子表只有在父表中存在相应行时才能引用父表。这有助于保持相关数据的一致性。
使用与上面相同的示例,如果未定义外键约束并且删除了一个 project,数据库将不会对任何关联的 tasks 采取任何操作。如果在 projects 和 tasks 之间配置了外键约束,数据库引擎可以对相关的 tasks 执行级联操作,例如一并删除它们,或将 project_id 字段置为 null。
虽然外键约束有助于确保参照完整性,但它们可能在高并发工作负载中导致性能下降,并在数据库中引入更多复杂性。与任何数据库特性一样,开发者应针对您的具体应用权衡使用外键约束的优缺点。
如果您选择或选择不在您的 PlanetScale 数据库中使用外键约束时有用的文档页面:
外键约束文档
在没有外键约束的情况下运行
维护参照完整性的策略
转载声明:本文为转载整理,原文版权归原作者及原站点所有。
原文来源:PlanetScale Blog
原创地址:https://planetscale.com/blog/foreign-key-constraints-are-now-generally-available
原文作者:PlanetScale Blog;如有侵权,请联系管理员删除。