我想知道您对在 MS SQL DB 中维护关系约束有何想法。
我正在将系统从 ASP 迁移到 .NET 环境中。这带来了业务对象和其他分层编码技术,这些技术可以从用户/API 中抽象出数据库。新应用程序在实体框架 DAL 之上有一个明确的 API。
旧数据库中的应用程序数据库很大,一些表的用途将更改为开始包含二进制数据、文件等形式。我热衷于将这些数据拆分为单独的数据库以简化管理磁盘空间非常宝贵的客户站点。
保留表之间的关系约束有什么价值吗?
假设:
- 代码经过测试
- 在关系很重要的情况下,执行在事务下执行
- 只能通过 API 访问数据库,不支持第三方的其他访问。
保持约束的原因:
- 强制数据结构
- JOIN 更快?
- 查询计划协助?
在新的 .NET 版本中删除约束的原因:
- 可以假设 API/BIZ 逻辑将管理诸如父/子之类的关系。
- 减少将 DB 部分划分到其他目录的机会(系统使用插件架构构建,大多数表可能独立运行)
- 我是否正确地认为 SQL 必须在 INSERT 期间对约束进行额外检查,而当数据库上方的 API 管理它时,这可能是不必要的?