正规化和反正规化

习题预习

User ask:
给我5题Normalization and Denormalization的中文问题

ChatGPT answer:
  1. 什么是资料正规化(Normalization),它的目的是什么?
  2. 资料反正规化(Denormalization)是什么?它的使用时机是什么?
  3. 正规化与反正规化有哪些优缺点?它们对系统效能和资料处理有什么影响?
  4. 在数据库设计中,什么情况下需要进行正规化?在什么情况下应该避免正规化?
  5. 如何选择正确的正规化级别?什么因素会影响选择?

说明知识

User ask:
以中文说明Normalization and Denormalization并举例

ChatGPT answer:

Normalization 和 Denormalization 是关联式资料库中的概念,用来描述资料库中表格的设计。

Normalization 意旨为“正规化”,它是使资料表符合某些特定规则,以减少资料冗余和提高资料表格结构设计的程式;Denormalization 意旨为“去正规化”,这是在资料表中添加重复资讯,以加速特定查询的进行。

举例来说,假设你有一个资料表格,包括以下资料:

Customer

  • ID
  • Name
  • Email
  • Phone
  • Address

这个资料表格没有正规化,因为它包含数个重复的资料。举例来说,如果同一个顾客有多笔资料,例如他们在不同的地址下喜好不同商品,他们的姓名和电话栏位将会是重复的。这样,你可以考虑建立一个表格专门用来储存顾客资讯,再建立一个表格用来储存他们在每个地址下的订单。这些表格正规化了原始资料,将顾客资讯存储一次,允许您更轻易地编写查询并避免资料冗余。

另一方面,Denormalization 可以用来提高特定查询的性能。举例来说,假设您有一个包含产品,分类和库存的表格,并且您想查询所有库存的内容。在这种情况下,您可以将产品和分类的资料添加到库存表格中,以便这些查询能快速执行。换句话说,Denormalization 可以用来优化查询,即使这意味着增加了一些资料冗余。

总之,Normalization 和 Denormalization 是资料库设计的两个相反的概念,在资料库设计中,需要达到平衡点,以达到资料表格的最佳效能。

条列重点

User ask:
以中文条列Normalization and Denormalization的重点

ChatGPT answer:

Normalization:

  • 将资料表依照设定的规则进行分解,使每个属性只有单一值,避免资料的重复和不一致性。
  • 减少了异动资料的风险,维护资料的一致性和准确性。
  • 资料表分散,读取速度较慢,适合于读取量远大于写入量的场合。
  • 资料表设计比较规范,避免了资料的冗余和不一致性。

Denormalization:

  • 将多个关联表中需要经常查询的资料整合到一张表中,减少多次读取资料的操作,提高查询效率。
  • 降低响应时间,提高数据处理的效率。
  • 增加冗余数量和复杂度,增加异动资料的风险,维护起来成本较高。
  • 资料表设计较为宽松,适合于读写操作需要平衡的场合。

知识测验

User ask:
以中文给我5题Normalization and Denormalization的中等难度问题,并在后面列出答案

ChatGPT answer:
  1. 请问何谓Normalization(正规化)?列出三种正规化的形式。

答案:Normalization 是一种关系型资料库设计的技术,目的是为了减少重复资料并提高资料库设计的效率和可维护性。三种正规化形式分别是1NF、2NF 和 3NF。

  1. 如果资料库中某张表格存在大量重复资料,应该考虑使用哪些正规化形式来解决这个问题?

答案:这表明这张表格不符合3NF限制,可以使用2NF 或 3NF去除重复资料。

  1. 请列出两个常见的反规范化(Deormalization)的例子。

答案:1.在资料重复较多的查询上添加冗余栏位,以提高查询效率。2. 藉由合并多张表格,以减少查询中的表格连接数量和提高效率。

  1. 什么是冗余栏位,给一个例子说明。

答案:冗余栏位就是多余的资料栏位。比如,在一个订单表中,有一个包含订单总价金额的栏位,如果再在该订单表中添加一个新的栏位,可以计算出每个产品单价的总价金额,那这个新栏位就是一个冗余栏位。

  1. 当为了提高系统效率而进行反规范化时,也会带来一些问题,请列出至少两个反规范化可能带来的问题。

答案:1.增加了资料库的复杂度和体积,提高了系统维护成本。2. 如果不小心产生错误或栏位重复,可能会导致数据不一致。