数据库设计 - 软考真题题目与答案
本单元共 7 道题,每题给答案,部分带解析。
1. 单选题
通常在设计关系模式时,派生属性不会作为关系中的属性来存储。按照这个原则,原设计的学生关系模式为 Students(学号,姓名,性别,出生日期,年龄,家庭地址),那么该关系模式正确的设计应为(5)。
A. Students(学号,姓名,性别,出生日期,年龄,家庭地址)
B. Students(学号,姓名,性别,出生日期,家庭地址)
C. Students(学号,姓名,性别,出生日期,家庭地址)
D. Students(学号,姓名,性别,年龄,家庭地址)
答案:B
解析
**正确答案:B**
年龄可由“出生日期”推算,属于派生属性。若在关系模式中存储年龄,会产生冗余,并随时间变化导致数据不一致,因此应去掉年龄,只保留出生日期。
- A:错误,保留“年龄”,仍在存储派生属性。
- B:正确,保留出生日期,去掉年龄,符合关系模式设计原则。
- C:题面文本与 B 相同,属选项重复;按标准答案以 B 为准。
- D:错误,保留年龄却删除出生日期,既丢失原始事实,也无法可靠计算年龄。
**考点延伸**:设计关系模式时应避免派生属性;年龄可通过出生日期与当前日期计算。在 ORM 中常映射为 `@Transient`、视图字段或查询结果,而不是持久化列。
2. 简答题
什么是派生属性?在数据库设计中,为什么通常不将派生属性作为关系中的属性存储?请举例说明。
答案:派生属性是指可以由其他属性通过计算得到的属性,例如年龄可以由出生日期和当前日期计算得出。在数据库设计中,不存储派生属性是为了避免数据冗余和不一致性,因为派生属性的值会随着基础属性的变化而变化,如果存储则需同步更新,增加维护成本。例如,学生表中的年龄就是派生属性,应通过出生日期计算得到,而不是直接存储。
3. 简答题
请说明关系型数据库开发中,逻辑数据模型设计过程包含哪些任务?根据图2-1包裹详情单,应该涉及出哪些关系模式的名称,并指出每个关系模式的主键属性。
答案:逻辑数据模型设计过程包含的任务:
(1)构建系统上下文数据模型,包含实体及实体之间的联系;
(2)绘制基于主键的数据模型,为每个实体添加主键属性;
(3)构建全属性数据模型,为每个实体添加非主键属性;
(4)利用规范化技术建立系统规范化数据模型。
包裹单的逻辑数据模型中包含的实体:
(1)收件人(主键:电话);
(2)寄件人(主键:电话);
(3)包裹单(主键:编号)。
5. 简答题
请说明什么是派生属性?结合图中包裹单信息说明哪个属性是派生属性。
答案:派生属性是指某个实体的非主键属性由该实体其他非主键属性决定。
包裹单中的总计是由资费、挂号费、保价费、回执费计算得出,所以是派生属性。
6. 单选题
某企业开发信息管理系统平台进行 E-R 图设计,人力部门定义的是员工实体具有属性:员工号、姓名、性别、出生日期、联系方式和部门,培训部门定义的培训师实体具有属性:培训师号,姓名和职称,其中职称={初级培训师,中级培训师,高级培训师},这种情况属于( )。
A. 属性冲突
B. 结构冲突
C. 命名冲突
D. 实体冲突
答案:B
7. 单选题
在合并 E-R 图时,解决上述冲突的方法是( )。
A. 员工实体和培训师实体均保持不变
B. 保留员工实体、删除培训师实体
C. 员工实体中加入职称属性,删除培训师实体
D. 将培训师实体所有属性并入员工实体,删除培训师实体
答案:C