您喜欢哪种数据库设计?一种与实际的物理关系或一种模仿它的物理关系?

时间:2019-01-16 12:07:22

标签: sql sql-server database database-design relational-database

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

例如

表A 具有列

ID, Name

表B 具有列

ID, CNIC, TableA_ID 

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

我认为后者是好的,我相信前者会变慢并且存在级联操作问题?

2 个答案:

答案 0 :(得分:5)

数据库的主要工作之一就是确保data integrity
数据完整性的一部分是referential integrity
关系数据库可确保具有外键约束的引用完整性。

删除约束,然后删除数据库防止损坏数据的功能。

因此,在关联表时始终应指定外键,即使是以性能损失为代价(通常可以忽略不计)。

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

答案 1 :(得分:1)

关系模型不包含任何形式的物理链接。一个关系(表)可以使用“键-外键”对来引用另一个关系(“键”可能不是主要的)。为了确保引用的完整性,需要使用外键约束。默认情况下,应在设计中使用外键约束。

通常,数据库设计人员可以在FK列上添加索引,并且不考虑任何其他性能问题,因为它们在生产中得到了很好的管理(例如,临时禁用FK检查,批量加载操作忽略FK等)。

相关问题