• 数据库中的范式和反范式


    在范式化的数据库中,每个事实数据会出现并且只出现一次;相反,在反范式化的数据库中,信息是冗余的,可能会存储在多个地方。
     
    范式化的优点:
    1)范式化的更新操作通常比反范式化要快。
    2)当数据较好地范式化时,就只有很少或者没有重复数据,所以只需要修改更少的数据。
    3)范式化的表通常更小,可以更好地放在内存里,所以执行操作会更快。
    4)很少有多余的数据意味着检索列表数据时更少需要DISTINCT或者GROUP BY语句。
    范式化设计的schema的缺点是通常需要关联,较多的关联可能使得一些索引策略无效,例如,范式化可能将列存放在不同的表中,而这些列如果在一个表中本可以属于同一个索引。
     
    反范式的schema因为所有数据都在一张表中,可以很好地避免关联。缺点是update操作的代价高,需要更新多个表,至于这会不会是一个问题,需要考虑更新的频率以及更新的时长,并和执行select查询的频率进行比较。
    从另一个父表冗余一些数据到子表的理由通常是排序的需要。
    缓存衍生值也是有用的。如果需要显示每个用户发了多少消息(像很多论坛做的),可以每次执行一个昂贵的子查询来计算并显示它;也可以在user表中建一个num_messages列,每当用户发新消息时更新这个值。
  • 相关阅读:
    再看机器学习
    普通MLP处理图像时遇到了什么样的问题,才导致后续各种模型的出现
    图像分类算法为什么有那么多?
    算法的时间复杂度到底怎么算?
    [Python]7种基础排序算法-Python实现
    [Python3]星号*的打开方式
    [Pyspark]RDD常用方法总结
    [Python3]为什么map比for循环快
    Sass简介
    最全的DOM事件笔记
  • 原文地址:https://www.cnblogs.com/liang545621/p/9401190.html
Copyright © 2020-2023  润新知