SQL 1NF第一范式

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

什么是第一范式(1NF)

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

  • 规则1(原子值) - 表的每一列只包含原子值。原子值是不能再分的值。
  • 规则2(无重复组) - 没有重复的数据组。这意味着表不应包含重复的列。

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

1、规则1 – 原子值

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

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

IDNameAgeSalaryCityCountry
1Ramesh322000.00Hyderabad, DelhiIndia
2Mukesh405000.00New YorkUSA
3Sumit454500.00MuscatOman
4Kaushik252500.00KolkataIndia

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

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

CUSTOMERS表:

IDNameAgeSalary
1Ramesh322000.00
2Mukesh405000.00
3Sumit454500.00
4Kaushik252500.00

客户地址表:

IDCityCountry
1HyderabadIndia
1DelhiIndia
2New YorkUSA
3MuscatOman
4KolkataIndia

2、规则2-不允许重复组

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

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

IDNameAgeSalaryCity1City2Country
1Ramesh322000.00HyderabadDelhiIndia
2Mukesh405000.00New York USA
3Sumit454500.00Muscat Oman
4Kaushik252500.00Kolkata India

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

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

CUSTOMERS表格:

IDNameAgeSalary
1Ramesh322000.00
2Mukesh405000.00
3Sumit454500.00
4Kaushik252500.00

客户地址表:

IDCityCountry
1HyderabadIndia
1DelhiIndia
2New YorkUSA
3MuscatOman
4KolkataIndia

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

—— 完 ——
相关推荐
评论

立 为 非 似

中 谁 昨 此

宵 风 夜 星

。 露 , 辰

文章点击榜

细 无 轻 自

如 边 似 在

愁 丝 梦 飞

。 雨 , 花