什么是派生属性?在数据库设计中,为什么通常不将派生属性作为关系中的属性存储?请举例说明。
简答题
什么是派生属性?在数据库设计中,为什么通常不将派生属性作为关系中的属性存储?请举例说明。
答案:派生属性是指可以由其他属性通过计算得到的属性,例如年龄可以由出生日期和当前日期计算得出。在数据库设计中,不存储派生属性是为了避免数据冗余和不一致性,因为派生属性的值会随着基础属性的变化而变化,如果存储则需同步更新,增加维护成本。例如,学生表中的年龄就是派生属性,应通过出生日期计算得到,而不是直接存储。
解析
参考答案
- 派生属性:可由其他属性计算得到的属性,如年龄由出生日期和当前日期计算。
- 不存储原因:避免数据冗余、避免数据不一致、减少维护成本。
- 示例:学生表中存出生日期,年龄查询时计算,不直接存年龄。
得分点解析
- “由其他属性计算得到”:定义核心,否则无法区分普通属性。
- “避免数据冗余”:同一信息不重复存储,节省空间。
- “避免数据不一致”:基础属性变化后,存储的派生值可能不同步,产生矛盾。
- “减少维护成本”:无需触发器或批量更新派生值。
- “年龄由出生日期计算”:典型例子,直观说明派生关系。
考点延伸
若派生属性查询频繁且计算昂贵,可用物化视图或冗余列权衡,但必须保证一致性。派生也可由多属性计算,如总价 = 单价 × 数量。