数据库的三范式

在数据库设计中,三范式(3NF)是指一种数据规范化的过程,旨在减少数据冗余和提高数据的一致性。下面是对三范式的详细解释:

第一范式(1NF)

第一范式要求数据库中的每个表格中的每一列都是原子的,即每个字段都只能包含一个值,而不能是一个集合或列表。这意味着表中的每一个字段都应该是不可再分的最小数据单元。

例子:
假设有一个表格 Students,记录学生的姓名和他们的电话号码。

不符合1NF的表格:

StudentID Name PhoneNumbers
1 Alice 123456, 654321
2 Bob 987654

符合1NF的表格:

StudentID Name PhoneNumber
1 Alice 123456
1 Alice 654321
2 Bob 987654

第二范式(2NF)

第二范式在满足第一范式的基础上,要求表中的每个非主属性完全依赖于主键,而不是部分依赖于主键。也就是说,表中的每一个非主键列都必须依赖于整个主键,而不能依赖于主键的一部分。

例子:
假设有一个表格 Orders,记录订单信息,包括订单ID、产品ID、产品名称和数量。

不符合2NF的表格:

OrderID ProductID ProductName Quantity
1 101 Widget 10
1 102 Gadget 5
2 101 Widget 7

符合2NF的表格:
将表格拆分为两个表格,一个记录订单信息,另一个记录产品信息。

Orders 表:

OrderID ProductID Quantity
1 101 10
1 102 5
2 101 7

Products 表:

ProductID ProductName
101 Widget
102 Gadget

第三范式(3NF)

第三范式在满足第二范式的基础上,要求表中的每个非主属性都不传递依赖于主键。也就是说,非主属性之间不能存在依赖关系,所有非主属性都必须直接依赖于主键。

例子:
假设有一个表格 Employees,记录员工信息,包括员工ID、部门ID、部门名称和员工姓名。

不符合3NF的表格:

EmployeeID DeptID DeptName EmployeeName
1 10 Sales Alice
2 20 Marketing Bob
3 10 Sales Charlie

符合3NF的表格:
将表格拆分为两个表格,一个记录员工信息,另一个记录部门信息。

Employees 表:

EmployeeID DeptID EmployeeName
1 10 Alice
2 20 Bob
3 10 Charlie

Departments 表:

DeptID DeptName
10 Sales
20 Marketing

通过遵循三范式,可以确保数据库设计的规范性,减少数据冗余,提高数据的一致性和完整性。

你可能感兴趣的:(数据库,oracle)