冗余数据是指可以由其他数据导出的数据,例如,数据库中已存放了学生的数学、语文和英语的三科成绩,如果还存放三科成绩的总分,则总分就可以看作冗余数据。冗余数据往往会造成数据的不一致, 例如,上面 $4$ 个数据如果都是输入的,由于操作错误使总分不等于三科成绩之和,就会产生矛盾。下面 关于冗余数据的说法中,正确的是( )。
这题考的是数据库设计中‘冗余’与‘一致性’的权衡。拿到题先想:冗余是坏事吗?什么时候该留着?选项里只要抓住‘适当保留+更新时做相容检验’这个核心逻辑,就能迅速排除绝对化(A、D)和片面(B)的干扰。
学生最容易把‘冗余’等同于‘必须彻底消除’,看到A就选;或者以为关系数据库因为范式理论就一定比高级语言系统更容易消除冗余,忽略实际工程中为了查询性能刻意保留冗余字段的普遍做法。还有人会误以为只要冗余存在就完全不管,更新时不做任何检查,导致数据不一致。
考点:数据库基础概念中的冗余数据及其处理原则。
概念:冗余数据是指可以由其他数据逻辑推导出来的数据。比如学生表里存了数、语、英三科成绩,再单独存一个“总分”,这个总分就是冗余数据。冗余本身不是错误,但如果不加控制,容易引发数据不一致——输入时手误把总分输错,或者更新单科成绩后忘了改总分,数据库里就会出现矛盾。
命题人怎么挖坑:这道题的陷阱在于四个选项都带有“绝对化”或“片面化”的表述,只有C选项抓住了工程实践中的平衡思想。命题人喜欢用“应该消除一切”“可以不理睬”这类极端说法来测试学生对数据库设计原则的理解深度。B选项看似合理,实则混淆了“理论上的范式要求”和“实际系统的实现难度”,关系数据库确实更容易通过外键、约束等机制消除冗余,但这并不意味着它比高级语言系统更容易做到,因此B是干扰项。
思考心法:拿到题先问自己:冗余是坏事吗?答案是否定的。冗余可以提高查询效率,比如直接查总分比每次加三科快得多。那什么时候该留着?答案是:当性能需求大于一致性风险时,可以适当保留冗余,但必须配合更新时的相容性检验(比如更新单科成绩后自动重新计算总分)。这样既保证了效率,又避免了不一致。
逐项分析:
考频与趋势:根据题库数据,数据库基础概念共考了4题,覆盖2个考试级别(2007-2007),其中NOIP普及组初赛2题、NOIP提高组初赛2题。这说明数据库基本概念在初赛中出现频率较高,尤其在2007年集中考查。
预测:基于现有数据,暂无足够依据预测未来具体年份的考查趋势,但数据库冗余与一致性仍是初赛高频考点,建议持续复习相关概念。