database-design - Sequelize ORM 关系与外键
问题描述
我即将开始新的个人项目并使用我与同事在另一个项目中使用过的 Sequelize ORM。我搜索了更多 SQ 文档,发现 SQ 同时支持模型关系和经典外键。我是外键迷,但模型关系也是组织数据库模型的强大方法,并且可能比外键(恕我直言)具有更大的灵活性。
那么有人可以就在不同情况或数据库架构中更好地使用什么提供建议吗?
我的新项目不能有一些多态关系和其他奇怪和困难的结构(至少我希望如此),但它将是具有多种功能和能力的长期产品,因此它必须足够灵活。此外,我不打算使用项目 ORM 来修改数据库(mariadb)。
解决方案
模型关系不提供比外键更多的功能或灵活性:它们是框架表达这些相同关系的方式。A.belongsTo(B)
,例如,是一种“Sequelizey”方式,表示 A 记录具有 B 记录的外键,这就是在数据库模式中建立依赖关系的方式(如果你确实建立了硬依赖关系,Sequelize 允许你跳过)。
在明确关系时,重要的是要记住数据库级别的约束是法律,并且是真正确保数据保持正确的唯一方法。其他任何东西——包括模型的定义hasOne
或belongsTo
模型中的定义——都是有时可能会受到尊重的建议,因此不能保证完整性。使用适当的外键约束。
推荐阅读
- html - SVG 投影但在 a:hover
- c# - 如何摆脱报表查看器 C# 中的空格?
- rust - Bindgen 似乎无法在 OSX 上找到 clang
- docker - 保持 Docker 容器存活的正确方法是什么?(uWSGI 相关)
- php - Laravel - 限制雄辩的查询请求(节流?)
- php - MySQL 1064 (42000) 语法错误 - 从网站复制/粘贴推荐代码(更新用户)时(这里也是!)
- javascript - 如何使用正确的正则表达式条件提取银行交易信息
- amazon-web-services - 无服务器:配置死信 SQS 队列
- firebase - Flutter Web:尝试使用电话号码登录时 UI 冻结
- mysql - Loopback 4 + MySQL:字符集'utf32_bin'不能与'binary'一起使用来调用regexp_like