面试题答案
一键面试全面设置外键约束
- 优点:
- 数据一致性保障:数据库自身确保数据完整性,例如父表记录删除时,外键约束可自动按设定规则处理子表相关记录(级联删除、置空等),有效避免孤立数据。
- 数据维护复杂度:数据库负责维护关系,应用程序无需额外编写复杂逻辑来保证关系正确,降低开发和维护成本。
- 数据库性能:在一些简单操作中,数据库按既定约束执行,查询优化器可利用外键信息优化查询计划,提高查询效率。
- 缺点:
- 数据库性能:插入、更新、删除操作时,数据库需检查外键约束,开销增大,尤其在大数据量或复杂关联场景下,性能影响明显。
- 数据维护复杂度:修改数据库结构(如删除父表、修改主键等)时,因外键关联,操作可能受限,增加维护难度。
- 适用场景:对数据一致性要求极高,操作频率低且数据量相对较小的场景,如银行账户系统,每笔交易都要保证数据绝对准确,即使操作性能有一定损耗也可接受。
减少外键约束,应用程序维护
- 优点:
- 数据库性能:数据库操作减少了外键检查开销,插入、更新、删除操作性能提升,适合高并发读写场景。
- 数据维护复杂度:修改数据库结构相对自由,无需过多考虑外键关联影响。
- 缺点:
- 数据一致性保障:依赖应用程序逻辑,若程序存在漏洞或异常,易出现数据不一致情况,如父表记录删除但应用未处理子表相关记录。
- 数据维护复杂度:应用程序需编写额外逻辑来保证数据一致性,增加开发和维护工作量,尤其在复杂业务关系下,逻辑易出错。
- 适用场景:高并发读写且对数据一致性要求相对不那么严格的场景,如社交媒体系统,用户发布动态等操作频繁,偶尔出现短暂数据不一致(如显示问题)可接受,更注重操作性能。