返回

三分钟带你了解数据库设计的三大范式,面试也能一把过

后端

数据库设计的三大范式:面试中的关键

第一范式(1NF):原子性和唯一性

1NF 确保数据库表中的每个字段都不可再分,即原子性。这意味着字段中只能包含一个值,不能包含多个值或重复数据。此外,每个表必须具有唯一的标识符,以确保表中数据的唯一性。

好处:

  • 提高数据一致性和完整性
  • 减少数据冗余
  • 提高数据查询和更新效率
  • 便于数据维护和管理

违反的后果:

  • 数据不一致
  • 数据冗余
  • 查询效率低下

代码示例:

CREATE TABLE Students (
  StudentID INT NOT NULL,
  Name VARCHAR(255) NOT NULL,
  PRIMARY KEY (StudentID)
);

第二范式(2NF):消除部分依赖

2NF 要求表中的每个字段都与表的唯一标识符相关。换句话说,就是字段必须直接或间接地依赖于唯一标识符。这意味着表中不能有字段仅依赖于其他非唯一标识符字段。

好处:

  • 进一步减少数据冗余
  • 提高数据一致性和完整性
  • 提高数据查询和更新效率
  • 便于数据维护和管理

违反的后果:

  • 数据不一致
  • 数据冗余
  • 查询效率低下

代码示例:

CREATE TABLE Students (
  StudentID INT NOT NULL,
  Name VARCHAR(255) NOT NULL,
  CourseID INT NOT NULL,
  PRIMARY KEY (StudentID),
  FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)
);

第三范式(3NF):消除传递依赖

3NF 要求表中的每个字段都与唯一标识符是非传递依赖的。这意味着字段只能直接或间接地依赖于唯一标识符,而不能通过其他字段进行传递依赖。

好处:

  • 进一步减少数据冗余
  • 提高数据一致性和完整性
  • 提高数据查询和更新效率
  • 便于数据维护和管理

违反的后果:

  • 数据不一致
  • 数据冗余
  • 查询效率低下

代码示例:

CREATE TABLE Students (
  StudentID INT NOT NULL,
  Name VARCHAR(255) NOT NULL,
  MajorID INT NOT NULL,
  PRIMARY KEY (StudentID),
  FOREIGN KEY (MajorID) REFERENCES Majors(MajorID)
);

CREATE TABLE Majors (
  MajorID INT NOT NULL,
  MajorName VARCHAR(255) NOT NULL,
  PRIMARY KEY (MajorID)
);

常见问题解答:

  1. 为什么遵守数据库范式很重要?

遵守数据库范式可以确保数据的完整性、一致性和效率,这对于在数据库中存储和处理数据至关重要。

  1. 违反数据库范式会有什么影响?

违反数据库范式会导致数据不一致、冗余和效率低下,从而影响数据库的性能和可靠性。

  1. 如何检查表是否符合数据库范式?

可以通过分析表的字段和列之间的依赖关系来检查表是否符合数据库范式。例如,可以使用 ER 图(实体关系图)来可视化表的结构和关系。

  1. 数据库范式之间的区别是什么?

1NF 确保字段原子性和唯一性,2NF 消除部分依赖,3NF 消除传递依赖。

  1. 何时应该使用较低级别的范式?

在某些情况下,可能需要使用较低级别的范式,例如当数据不适合较高范式时,或者当效率比数据完整性更重要时。