sql - 没有任何关系 id 好坏的 SQL Server 数据库
问题描述
我想问一个我在网上没有找到的愚蠢问题。问题是如果我创建一个没有任何物理链接的关系键的 SQL Server 数据库,那么这是一种好习惯吗?我想将相关的表 id 命名为仅“必需”模式,以便插入数据,这个 firld 必须需要填写,但我不想将它与它的真实表 id 链接。
我想这样做的原因是因为我的数据库太大了,如果我对每个表使用真正的链接 ID,我想让它变得可销售,那么它会非常非常混乱,而且我很难继续增长表,即使有时它会很难删除数据,因为它会有很多关系表。
那么这是最佳实践吗?在表之间使用链接 ID 有什么好处?寻求专家建议。请注意,我使用的是 Microsoft SQL Server。
解决方案
我想这样做的原因是因为我的数据库太大了,如果我对每个表使用真正的链接 ID,我想让它变得可销售,那么它会非常非常混乱
这不是真的。在大型(分布式)数据库中,关系约束确实成为一个大规模的问题——但是对于可以在单个数据库实例中运行的 99% 的应用程序来说,它们是一个非常好的主意,它们的计算成本不高,而且它们不会t 使数据库“混乱”——它们也不占用任何空间,因此它们不会使您的数据库变得太大。
我很难继续增长表,即使有时很难删除数据,因为它会有很多关系表。
这是故意的:它是为了阻止您删除其他数据所依赖的数据,但是如果您想要“级联删除”行为(删除子记录将删除其父记录)然后使用它:如何使用 SQL Server 的级联删除?
那么这是最佳实践吗?
我相信当前的最佳实践是使用关系约束,直到遇到你知道不能使用它们的情况。
在表之间使用链接 ID 有什么好处?
强制执行数据完整性规则:确保程序及其用户不会通过更新数据以指向不正确或不存在的数据来破坏数据库。
寻求专家建议。
没有意见。
请注意,我使用的是 Microsoft SQL Server。
在所有主要的 RDBMS 实现中,关系约束通常是相同的。
推荐阅读
- algorithm - Matlab中的集体影响算法
- django - 如何将 FCM 令牌发送到 django 应用程序
- vespa - vespa 中文档的自动更新
- angular - 如何将 css 文件与公共和管理区域组件分开?
- python - xgboost 模块无法识别
- java - 如何使用 mockito 编写/上传文件测试?
- python - Django REST 框架中的 405“不允许使用方法 POST”
- mongodb - Mongoengine中no_cache()对querySet的影响
- python - 错误:命令“cc”失败,退出状态为 1。当我尝试在 Mac mojave 10.14 中安装 MySQL-python 包时
- machine-learning - 如何通过机器学习学习“加法”之类的操作