SQL 1NF第一范式

SQL 1NF第一范式

数据库规范化是一种高效地组织数据库中的数据,以消除冗余数据并确保数据依赖关系正确的过程。使用各种规范化形式可以消除或减少数据库表中的数据冗余。

什么是第一范式(1NF)

第一范式(1NF) 为数据库中的数据组织设置了基本规则。如果数据库满足以下条件,则称为第一范式:

  • 规则1(原子值) - 表的每一列只包含原子值。原子值是不能再分的值。

  • 规则2(无重复组) - 没有重复的数据组。这意味着表不应包含重复的列。

在设计数据库表时,你必须确保至少满足第一范式的要求,否则在数据库操作过程中会遇到大问题。

规则1 – 原子值

表的每一列应只包含原子值。原子值是不能再分的值。

考虑以下用于存储客户数据的CUSTOMERS表:

ID Name Age Salary City Country
1 Ramesh 32 2000.00 Hyderabad, Delhi India
2 Mukesh 40 5000.00 New York USA
3 Sumit 45 4500.00 Muscat Oman
4 Kaushik 25 2500.00 Kolkata India

这个表不符合第一正则形式,因为 City 列可以包含多个值。例如,第一行包括值“Hyderabad”和“Delhi”。

现在要将此表转换为第一正则形式,我们必须考虑实际问题,即客户可能住在不同的城市,这些城市可能在同一个或不同的国家。因此,我们将表拆分为两个单独的表如下:

CUSTOMERS表

ID Name Age Salary
1 Ramesh 32 2000.00
2 Mukesh 40 5000.00
3 Sumit 45 4500.00
4 Kaushik 25 2500.00

客户地址表

ID City Country
1 Hyderabad India
1 Delhi India
2 New York USA
3 Muscat Oman
4 Kolkata India

规则2-不允许重复组

数据中没有重复的组。这意味着一个表不应该包含重复的列。

考虑以下正在用于存储客户数据的CUSTOMERS表 –

ID Name Age Salary City1 City2 Country
1 Ramesh 32 2000.00 Hyderabad Delhi India
2 Mukesh 40 5000.00 New York USA
3 Sumit 45 4500.00 Muscat Oman
4 Kaushik 25 2500.00 Kolkata India

这个表格不符合第一范式,因为我们有 City 列重复了两次,并且在当前表格中存在一些问题。无论人们是否在两个城市中停留,这个表格始终会在硬盘上保留两个城市的空间。

为了消除重复列并将表格转换为第一范式,将表格分成两个表格。 将重复列放入下面的一个表格中-

CUSTOMERS表格

ID Name Age Salary
1 Ramesh 32 2000.00
2 Mukesh 40 5000.00
3 Sumit 45 4500.00
4 Kaushik 25 2500.00

客户地址表

ID City Country
1 Hyderabad India
1 Delhi India
2 New York USA
3 Muscat Oman
4 Kolkata India

现在我们有了符合第一范式的标准化表,现在我们可以为同一个客户分配多个城市而不浪费空间。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程