设计关系数据库时的最佳实践是什么?要在表之间建立物理关系(从表到表的实际线)还是仅模仿这种关系?
例如
表A 具有列
ID, Name
表B 具有列
ID, CNIC, TableA_ID
现在, TableA_ID 没有实际的外键约束,但仍存储映射到TableA的 ID 列的值。
我认为后者是好的,我相信前者会变慢并且存在级联操作问题?
答案 0 :(得分:5)
数据库的主要工作之一就是确保data integrity。
数据完整性的一部分是referential integrity。
关系数据库可确保具有外键约束的引用完整性。
删除约束,然后删除数据库防止损坏数据的功能。
因此,在关联表时始终应指定外键,即使是以性能损失为代价(通常可以忽略不计)。
即使约束不存在,您也不能模仿它-即使您有一个前端应用程序可以验证输入到数据库中的所有数据-没有什么可以阻止开发人员,DBA或拥有约束的任何人直接访问数据库以错误输入损坏的数据。
答案 1 :(得分:1)
关系模型不包含任何形式的物理链接。一个关系(表)可以使用“键-外键”对来引用另一个关系(“键”可能不是主要的)。为了确保引用的完整性,需要使用外键约束。默认情况下,应在设计中使用外键约束。
通常,数据库设计人员可以在FK列上添加索引,并且不考虑任何其他性能问题,因为它们在生产中得到了很好的管理(例如,临时禁用FK检查,批量加载操作忽略FK等)。>