数据库有哪几种范式分别举例

数据库范式

数据库有哪几种范式分别举例

引言

数据库范式是一组规则,旨在确保数据库中数据的完整性和一致性。它们指导如何将数据组织到表中,以最大化其有效性和效率。遵守范式有助于避免数据冗余、异常和插入/删除/更新 (DML) 异常。

第一范式 (1NF)

1NF 规定每个表中每一行都必须包含唯一的标识符,称为主键。主键用于识别表中的每一行,并防止重复。例如,在一个包含客户记录的表中,主键可以是客户 ID。

第二范式 (2NF)

2NF 规定每个非主键属性都必须完全依赖于主键。这意味着非主键属性不能仅依赖于表中的其他非主键属性。例如,在一个包含订单记录的表中,订单日期属性应依赖于订单 ID(主键),而不应依赖于产品 ID。

第三范式 (3NF)

3NF 规定每个非主键属性都必须直接依赖于主键。这意味着非主键属性不能间接通过其他非主键属性依赖于主键。例如,在一个包含图书记录的表中,出版年份属性应直接依赖于书籍 ID(主键),而不应间接依赖于作者 ID。

范式示例

非范式化表

| 客户 ID | 姓名 | 地址 | 电话 | 订单 |
|—|—|—|—|—|
| 101 | John Doe | 123 Main St. | 555-1234 | 1001 |
| 101 | John Doe | 456 Elm St. | 555-5678 | 1002 |
| 102 | Jane Smith | 789 Oak St. | 555-9012 | 1003 |

1NF 范式化表

| 订单 ID | 客户 ID | 产品 ID | 数量 | 单价 |
|—|—|—|—|—|
| 1001 | 101 | 1 | 2 | 10.00 |
| 1002 | 101 | 2 | 3 | 15.00 |
| 1003 | 102 | 3 | 1 | 20.00 |

2NF 范式化表

| 订单 ID | 客户 ID | 订单日期 | 订单总价 |
|—|—|—|—|
| 1001 | 101 | 2023-01-01 | 30.00 |
| 1002 | 101 | 2023-01-02 | 45.00 |
| 1003 | 102 | 2023-01-03 | 20.00 |

| 客户 ID | 姓名 | 地址 | 电话 |
|—|—|—|—|
| 101 | John Doe | 123 Main St. | 555-1234 |
| 102 | Jane Smith | 789 Oak St. | 555-9012 |

3NF 范式化表

| 订单 ID | 客户 ID | 订单日期 | 订单总价 |
|—|—|—|—|
| 1001 | 101 | 2023-01-01 | 30.00 |
| 1002 | 101 | 2023-01-02 | 45.00 |
| 1003 | 102 | 2023-01-03 | 20.00 |

| 客户 ID | 姓名 | 地址 |
|—|—|—|
| 101 | John Doe | 123 Main St. |
| 102 | Jane Smith | 789 Oak St. |

| 电话号码 | 客户 ID |
|—|—|
| 555-1234 | 101 |
| 555-9012 | 102 |

范式的好处

遵守数据库范式具有以下好处:

  • 数据完整性:范式化表强制执行数据完整性,确保数据准确且一致。
  • 数据效率:范式化表消除了冗余,从而提高了数据存储和检索效率。
  • 更快的查询处理:范式化表优化了数据结构,这使得数据库查询可以更快、更有效地处理。
  • 更简单的维护:范式化表更容易维护,因为插入、删除和更新操作的影响范围更小。

问答

  • 什么是数据库范式?
    数据库范式是规则,用于确保数据库中数据的完整性和一致性。
  • 列出三种主要的数据库范式。
    第一范式 (1NF)、第二范式 (2NF) 和第三范式 (3NF)。
  • 1NF 的目的是什么?
    1NF 确保每个表中每一行都包含唯一的标识符(主键)。
  • 2NF 如何改善 1NF?
    2NF 规定每个非主键属性都必须完全依赖于主键。
  • 3NF 如何进一步改善 2NF?
    3NF 规定每个非主键属性都必须直接依赖于主键。

原创文章,作者:王利头,如若转载,请注明出处:https://www.wanglitou.cn/article_28699.html

(0)
打赏 微信扫一扫 微信扫一扫
王利头王利头
上一篇 2024-05-07 15:32
下一篇 2024-05-07 15:37

相关推荐

公众号