首页 > 解决方案 > Sequelize ORM 关系与外键

问题描述

我即将开始新的个人项目并使用我与同事在另一个项目中使用过的 Sequelize ORM。我搜索了更多 SQ 文档,发现 SQ 同时支持模型关系和经典外键。我是外键迷,但模型关系也是组织数据库模型的强大方法,并且可能比外键(恕我直言)具有更大的灵活性。

那么有人可以就在不同情况或数据库架构中更好地使用什么提供建议吗?

我的新项目不能有一些多态关系和其他奇怪和困难的结构(至少我希望如此),但它将是具有多种功能和能力的长期产品,因此它必须足够灵活。此外,我不打算使用项目 ORM 来修改数据库(mariadb)。

标签: database-designormmodelforeign-keyssequelize.js

解决方案


模型关系不提供比外键更多的功能或灵活性:它们是框架表达这些相同关系的方式。A.belongsTo(B),例如,是一种“Sequelizey”方式,表示 A 记录具有 B 记录的外键,这就是在数据库模式中建立依赖关系的方式(如果你确实建立了硬依赖关系,Sequelize 允许你跳过)。

在明确关系时,重要的是要记住数据库级别的约束是法律,并且是真正确保数据保持正确的唯一方法。其他任何东西——包括模型的定义hasOnebelongsTo模型中的定义——都是有时可能会受到尊重的建议,因此不能保证完整性。使用适当的外键约束。


推荐阅读