我正在为 Timesheet 应用程序设计一个 oracle 数据库。我想知道是否真的有必要对表(Master 和 Child)进行外键约束。
正如我们所知,理论上在表上具有适当的参照完整性是件好事,但我们真的需要它们吗?
我听说外键使数据库在每个 DML 操作上额外工作,因为它必须检查 FK 一致性。这会降低性能。但另一方面,在在子表中插入新行之前已删除主键的情况下,它可能会有所帮助。
性能是时间表应用程序中的一个主要问题,在月底(可能同时)将有大约 250 人填写他们的时间表。
如果我在表上没有外键约束,那么每次在子表中插入新记录之前,如果主表中存在主键,我是否必须先检查它(在存储过程中)?
补充:过去,我曾与许多经验丰富的 oracle 数据库开发人员一起工作,我们从未在表上使用过外键约束。