首页 > 解决方案 > 没有任何关系 id 好坏的 SQL Server 数据库

问题描述

我想问一个我在网上没有找到的愚蠢问题。问题是如果我创建一个没有任何物理链接的关系键的 SQL Server 数据库,那么这是一种好习惯吗?我想将相关的表 id 命名为仅“必需”模式,以便插入数据,这个 firld 必须需要填写,但我不想将它与它的真实表 id 链接。

我想这样做的原因是因为我的数据库太大了,如果我对每个表使用真正的链接 ID,我想让它变得可销售,那么它会非常非常混乱,而且我很难继续增长表,即使有时它会很难删除数据,因为它会有很多关系表。

那么这是最佳实践吗?在表之间使用链接 ID 有什么好处?寻求专家建议。请注意,我使用的是 Microsoft SQL Server。

标签: sqlsql-server

解决方案


我想这样做的原因是因为我的数据库太大了,如果我对每个表使用真正的链接 ID,我想让它变得可销售,那么它会非常非常混乱

这不是真的。在大型(分布式)数据库中,关系约束确实成为一个大规模的问题——但是对于可以在单个数据库实例中运行的 99% 的应用程序来说,它们是一个非常好的主意,它们的计算成本不高,而且它们不会t 使数据库“混乱”——它们也不占用任何空间,因此它们不会使您的数据库变得太大。

我很难继续增长表,即使有时很难删除数据,因为它会有很多关系表。

这是故意的:它是为了阻止您删除其他数据所依赖的数据,但是如果您想要“级联删除”行为(删除子记录将删除其父记录)然后使用它:如何使用 SQL Server 的级联删除?

那么这是最佳实践吗?

我相信当前的最佳实践是使用关系约束,直到遇到你知道不能使用它们的情况。

在表之间使用链接 ID 有什么好处?

强制执行数据完整性规则:确保程序及其用户不会通过更新数据以指向不正确或不存在的数据来破坏数据库。

寻求专家建议。

没有意见。

请注意,我使用的是 Microsoft SQL Server。

在所有主要的 RDBMS 实现中,关系约束通常是相同的。


推荐阅读