从简单到复杂依次为:
3.1.1 用户提供唯一标识
这时用户将输入一些可识别的数值或符号,或从已有标识中选其一,然后创建实体对象。这是一种非常简单方案,但也可能变得复杂。
由于需用户自己生成高质量的标识。所以标识可能唯一,却有可能是不正确的。
缺陷
多数情况下标识不可变,用户无法修改标识。但有时赋予用户修改标识值的权限有好处。
例如,若将Forum和Discussion的名字作为唯一标识,那么发生拼写错误时怎么办,或用户之后想采用新名字怎么办?
- Forum名字拼写错误,Discussion名字长度小于所要求的
- 要改变这些标识值需要多大代价?虽然用户提供的身份标识看似一种节约成本的做法,但也有可能不是。此时我们还可以依赖用户来提供唯一的、正确、稳定的对象标识吗?
为避免上述问题,需重新设计。开发需采用无故障的方法来保证用户输入的确是唯一的身份标识。虽然基于工作流的标识审批过程,对于高吞吐量的领域并无多大帮助,但是它对于生成具有可读性的身份标识来说却是必需的。如果这种方式生成的标识会在将来继续使用,而工作流也是可能的,那么添加一个额外的阶段来保证身份标识的质量是值得的。
通常将一些用户输入作为实体属性,这些属性可用于对象匹配,但并不将这样属性作为唯一身份标识。
简单属性可作为实体状态的一部分, 他们更容易修改,在这种情况下,我们需要考虑另外的方法来生成实体的唯一标识。