题库系统集成项目管理工程师

系统集成项目管理工程师 · 第三版 · 第6章 数据工程

状态值都在允许范围内,就能证明订单编号唯一吗?

8 道章节练习题
单选题6.3 数据治理和建模5 / 8

业务规定订单状态的域为{待支付、已支付、已取消},订单编号是唯一标识。两条不同订单的状态均为“已支付”,但误用了相同编号。正确的判断是()。

选择答案
未作答
答案与解析

正确答案 D

域限定状态可取什么值,不要求不同订单状态互不相同;键用于唯一标识实例,两个不同订单共用编号违反题设要求,选D。

把两项检查分开做,别让一个“都合法”带过去。已支付属于给定集合,所以状态值通过域检查;但这不能说明记录之间没有身份冲突。题目已明确是两条不同订单,又要求订单编号唯一,因此相同编号暴露的是标识问题。属性可以有许多实例取同一个值,键则承担区分实例的任务。现实中还可能有“编号加租户”等组合键,本题没有这样的条件,不能自己补出来为重复编号找理由。通过一道约束检查,从来不意味着所有其他约束也都通过。

选项分析

A
允许取值范围并不禁止多条订单处于同一状态,编号反而受到明确的唯一标识要求。
B
只验证状态值域而遗漏编号唯一性,将一项规则通过误当成整条数据完全正确。
C
普通属性并非全部要求唯一,多个不同订单拥有同一合法状态是允许的情况。
D
分别使用域和键的定义,既不误判相同状态,也不放过不同订单的编号冲突。

容易混淆的地方

把值域理解成不得重复,或以单字段取值合法替代记录之间的唯一性判断。

再巩固一步

  • 域回答“能取什么值”,键回答“靠什么认出这一条”。若出现组合键,按题目给定的完整组合检查。
原创章节练习题 · 第三版 · 《系统集成项目管理工程师教程》第3版 · 6.3.4 · 纸书第244页

练习小结

题目纠错

未发送。正式接收渠道尚未接通。

查看纠错信息