SQL 面试题 目录

SQL 中常用的数据库设计范式有哪些 (如:1NF, 2NF, 3NF, BCNF)?

推荐答案

在SQL数据库设计中,常用的数据库设计范式包括以下几种:

  1. 第一范式 (1NF):确保每列的原子性,即每列都是不可再分的最小数据单元。
  2. 第二范式 (2NF):在1NF的基础上,确保表中的每一列都完全依赖于主键。
  3. 第三范式 (3NF):在2NF的基础上,确保表中的每一列都不传递依赖于主键,即消除非主属性对主键的传递依赖。
  4. 巴斯-科德范式 (BCNF):在3NF的基础上,进一步消除主属性对主键的依赖,确保每个决定因素都是候选键。

本题详细解读

第一范式 (1NF)

第一范式要求数据库表中的每一列都是不可再分的最小数据单元,即每个字段都是原子的。例如,如果有一个“地址”字段,它包含了“城市”和“街道”信息,那么它就不符合1NF,因为“地址”字段可以再分为“城市”和“街道”两个字段。

第二范式 (2NF)

第二范式要求表中的每一列都完全依赖于主键。这意味着如果表中有复合主键,那么每一列都必须依赖于整个主键,而不是主键的一部分。例如,如果有一个订单表,主键是“订单ID”和“产品ID”,那么“产品名称”字段必须依赖于“订单ID”和“产品ID”两个字段,而不能只依赖于“产品ID”。

第三范式 (3NF)

第三范式要求表中的每一列都不传递依赖于主键。也就是说,非主属性不能依赖于其他非主属性。例如,如果有一个员工表,主键是“员工ID”,那么“部门名称”字段不能依赖于“部门ID”字段,因为“部门ID”是一个非主属性。

巴斯-科德范式 (BCNF)

巴斯-科德范式是对第三范式的进一步强化,要求每个决定因素都是候选键。这意味着如果一个表中的某个非主属性决定了另一个非主属性,那么这个非主属性必须是候选键。例如,如果有一个学生表,主键是“学生ID”,那么“课程ID”字段不能决定“课程名称”字段,除非“课程ID”是候选键。

纠错
反馈