MST

星途 面试题库

面试题:MySQL中范式与反范式混用场景举例

请举例说明在MySQL数据库中,哪些场景适合范式与反范式混用,并阐述混用的优势与可能带来的问题。
49.4万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

适合范式与反范式混用的场景

  1. 订单系统:在订单相关表设计时,订单基本信息(订单号、下单时间、客户ID等)按范式设计,存放在orders表中。而订单详情(订单号、商品ID、商品名称、数量、价格等),对于商品名称等信息,若商品信息变动不频繁,可反范式处理,将商品名称冗余存放在订单详情表中。因为查询订单详情时,无需再关联商品表就能直接获取商品名称,提高查询效率。
  2. 新闻系统:新闻表按范式设计存放新闻基本信息(新闻ID、标题、发布时间等)。对于新闻作者信息,如果作者信息相对固定,可反范式将作者姓名等冗余存放在新闻表中,避免每次查询新闻时都要关联作者表。

混用的优势

  1. 提高查询性能:减少多表关联操作,例如上述订单系统,查询订单详情直接从订单详情表获取商品名称,无需关联商品表,加快查询速度。
  2. 简化开发:开发过程中,无需复杂的多表关联逻辑,降低代码编写难度,提高开发效率。

可能带来的问题

  1. 数据冗余:如订单详情表冗余商品名称,若商品名称修改,需要同时更新商品表和订单详情表,增加维护成本,且占用更多存储空间。
  2. 数据一致性问题:若更新数据时,只更新了一处冗余数据,未更新其他地方,就会导致数据不一致,影响数据的准确性和业务逻辑。