1.什么是数据库的第三范式
数据库的第三范式(Third Normal Form, 3NF)是关系数据库设计中规范化的核心要求之一,旨在消除数据冗余、确保数据依赖合理,从而提升数据一致性和存储效率。它的核心规则是:所有非主属性必须直接依赖于主键,且不传递依赖于其他非主属性。
要满足第三范式(3NF),必须满足以下两个条件:
- 已满足第二范式(2NF):所有非主属性完全依赖于主键(无部分依赖)。
- 消除传递依赖:所有非主属性直接依赖于主键,而不能通过其他非主属性间接依赖主键。
通俗理解:
- 表中每一列数据都应该直接与主键相关,而不是通过其他字段间接关联。
- 例如:“学生姓名”直接依赖于“学号”(主键),但“班主任电话”如果通过“班主任姓名”间接依赖“学号”,则违反3NF。
区别:第二范式处理的是部分依赖的问题,即所有非主属性必须完全依赖于主键,而第三范式解决的是传递依赖的问题。
2.什么是存储过程
存储过程(Stored Procedure) 是数据库中预先编译并存储的一段可重复调用的 SQL 代码集合,用于封装复杂业务逻辑、提高执行效率并增强数据安全性。它类似于编程中的函数,支持输入参数、输出结果、条件判断、循环等操作。
2.1特性
- 预编译执行:代码在首次执行时编译并缓存,后续调用直接复用,减少解析和优化开销。
- 减少网络传输:客户端只需传递调用命令和参数,避免传输大量 SQL 语句。
- 逻辑封装:将业务逻辑封装在数据库层,实现代码复用和统一管理。
- 安全控制:通过权限限制,允许用户执行存储过程但不直接访问底层表。
3.什么是游标
游标(Cursor) 是 SQL 中用于 逐行处理查询结果集 的机制,类似于编程中的迭代器。它允许开发者在存储过程或脚本中逐行访问数据,适用于需要复杂行级操作的场景。然而,游标通常 性能较低,应谨慎使用。
3.1游标的核心作用
- 逐行处理数据:遍历结果集,对每一行单独操作(如计算、更新、逻辑判断)。
- 支持复杂逻辑:在无法用单条 SQL 语句实现时(如依赖中间结果的循环操作),提供灵活性。
- 事务控制:结合事务,实现精细化的数据提交或回滚。