首页 > 解决方案 > 你喜欢哪种数据库设计;一种具有实际的物理关系还是一种模仿它?

问题描述

设计关系数据库时的最佳实践是什么?要在表之间建立物理关系(从表到表绘制的实际线)或仅模拟这种关系?

例如

TableA有列

ID, Name

TableB有列

ID, CNIC, TableA_ID 

现在,TableA_ID上没有实际的外键约束,但仍然存储映射到 TableA 的ID列的值。

我认为后者很好,我认为前者速度变慢并且存在级联操作问题?

标签: sqlsql-serverdatabasedatabase-designrelational-database

解决方案


数据库的主要工作之一是确保数据完整性
数据完整性的一部分是参照完整性
关系数据库通过外键约束确保参照完整性。

删除约束,您将删除数据库防止损坏数据的能力。

因此,当您的表相关时,您应该始终指定外键,即使以性能损失为代价(无论如何这通常可以忽略不计)。

如果约束不存在,您就无法模仿它——即使您有一个前端应用程序来验证输入到数据库中的所有数据——没有什么能阻止开发人员、DBA 或任何可以直接访问数据库错误地输入损坏的数据。


推荐阅读