[答疑]订单、预约单的流水号是冗余属性吗

DDD领域驱动设计批评文集

做强化自测题获得“软件方法建模师”称号

《软件方法》各章合集


陈磊 2024-6-12 20:40

老师好!我学习了软件方法的类图内容,也已经认真做题了,现有一个问题想请老师解惑。

像订单、预约单这样的单据生成的时候,会生成一个流水号作为标识,有时还会以二维码、条形码的形式给用户。这个流水号算冗余属性吗?

UMLChina潘加宇

(1)首先,要区分“标识”和“流水号”,参见《软件方法》第8章以下内容:

图片

图片

(2)如果就是要用这个“流水号”作为标识,那不是冗余属性。

(深究起来,所有的“对象标识”都是冗余的,都是在信息不足的情况下用于区分对象的“偷懒”手段,但这是另一个级别的问题了。)

(3)如果“流水号”不是标识,按照书中的方法来判断就行:它是不是可以由其他属性计算得到。

我用餐饮领域举例,列了几种情况供参考,不一定正确和全面:

如果“订单”的“流水号”“TS202406140013”的最开始生成时的规则是根据“订单”的“订单类型(TS-堂食)”、 “订单”的“下单日期(2024-06-14)”以及统计当天的堂食订单的先后顺序(第13个下的单)得到的。

(3.1)如果在对象的生命周期中,这样的计算都可以完成,而且“流水号”的值一直遵循生成的规则,那么“流水号”是冗余的。

例如,系统一直维护“订单类型”、“下单日期”的信息,如果把某个订单的类型从堂食改成了外带,那么“流水号”也会相应改成“WD***********”。

(3.2)如果把某个订单的类型从堂食改成了外带,但“流水号”不变,此时“流水号”已经无法通过之前的规则计算得到,它不是冗余的。(高概率)

(4)如果系统没有维护“订单类型”、“下单日期”等信息,只维护了一个“流水号”,然后还有逻辑去解析这个“流水号”得到“订单类型”、“下单日期”等信息,那么“流水号”已经不是流水号了,是融合了多个属性的错误结构。

(5)如果“流水号”的生成使用了随机数,那么在对象的生命周期中,“流水号”不能从其他属性还原,那就不是冗余的。

注意,以上都是从逻辑的角度来讨论,不涉及性能问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/29410.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

铁砧帝国延迟高?铁砧帝国延迟严重这样解决

铁砧帝国是一款少见的多人在线游戏,游戏能支持上千名玩家建立帝国并互相作战。而且这款游戏在细节方面也做足准备,设计了攻城梯和攻城锤等设备,以攻破坚固的城墙和要塞,不过具体获取方法就需要玩家自己摸索。因为最近开放了测试申…

ifconfig eth0 hw ether

ifconfig hw ether 是一个用于在 Linux 系统中设置或更改网络接口的硬件地址(即 MAC 地址)的命令。具体操作步骤如下: 首先,您需要确定要更改 MAC 地址的网络接口名称,通常是 eth0, eth1 等,取决于您的系统…

【免费API推荐】:满足您的开发需求,加速项目上线

免费API助力项目开发,为开发者们提供了强大的支持和工具。这些API提供了各种功能和服务,能够帮助项目开发者们快速构建出高质量的应用。无论是地理位置服务、支付接口、社交媒体集成还是图像识别,这些免费API为项目开发者们提供了丰富的功能和…

Cortex-A510——Cache

Cortex-A510——Cache 小狼http://blog.csdn.net/xiaolangyangyang 1、Cortex-A510 Cache组织结构 以cache-size为32k,cache-line为32Byte为例: 组相连(常用结构):4-way,256-set直接映射:相当于…

supOS浅度集成

一、浅度集成介绍 浅度集成是根据项目或者演示要求而做的集成工作,通过接入supOS的单点登录,UI调整,菜单栏的集成,从而达到客户使用supOS平台来使用各个应用的能力。 二、浅度集成的作用 通过较少的研发投入使APP应用浅度融入到…

Chrome 报错: ERR_ACCESS_DENIED

ERR_ACCESS_DENIED - Search 在阅读了提供的 Chromium 代码搜索结果后,以下是关于 ERR_ACCESS_DENIED 错误的一些详尽笔记: 定义与值: ERR_ACCESS_DENIED 是一个错误代码,通常表示访问资源(非网络资源)的权…

“==“和 equals 方法究竟有什么区别?

操作符 操作符用于比较两个变量的值是否相等。在比较基本数据类型时, 比较的是它们的值是否相同。在比较引用类型时, 比较的是它们在内存中的地址是否相同,即两个引用是否指向同一个对象。 基本数据类型示例: int a 5; int b …

第3天:模型设计深入

第3天:模型设计深入 目标 设计数据模型,理解关系数据库设计原则。 任务概览 定义数据模型及其关系。编写模型字段。运行迁移命令makemigrations和migrate。 详细步骤 定义数据模型及其关系 数据模型是Django应用中的核心部分,用于定义…

uniapp 自定义页面顶部导航栏

效果图 1.移除原生导航栏 {"path": "pages/common/homePage/homePage","style": {"navigationBarTitleText": "","navigationStyle": "custom"} } 2.获取不同手机顶部自带 电量高度、信号、时间导航栏…

比较两个对象相同对象不同值

/** * param newValue 新值 * param oldValue 旧值 * return key 字段名 value 旧值 */ public static Map<String, Object> compare(Object newValue, Object oldValue, List<String> filterList) { Map<String, Object> compareMap new HashMap<>()…

课程设计——基于FPGA的交通红绿灯控制系统(源代码)

摘要&#xff1a; 本课程设计旨在设计一个基于FPGA&#xff08;现场可编程门阵列&#xff09;的交通红绿灯控制系统。该系统模拟了实际道路交叉口的红绿灯工作场景&#xff0c;通过硬件描述语言&#xff08;如Verilog或VHDL&#xff09;编写源代码实现。系统包含三个主要部分&a…

我又学会了使用Range实现网络文件下载的断点续传

文章目录 前言1、Range请求头1.1、概述1.2、使用限制1.3、范围请求1.4、预防资源变更 2、断点续传下载实现2.1、流程设计2.2、代码实现2.3、运行结果 3、RandomAccessFile4、思维拓展参考资料 前言 在某次摸鱼的过程中&#xff0c;老大突然后面冒出来说要做一个拉取文件到本地…

复位电路。

复位电路一般用到 电容电阻。 有的 是低电平复位&#xff0c;有的是高电平复位。 这里的电容的作用&#xff0c;上电自动复位。 参考&#xff1a; 此时 电容还能起到 抗干扰的作用。吸收 噪声。 电阻的作用&#xff0c;不是很理解&#xff0c;感觉是 在 上拉没有形成之前&am…

ninja构建笔记

在ninja构建系统中&#xff0c;“rule”和“build”这两个词通常关联但扮演着不同的角色。下面我会详细解释它们的区别&#xff1a; ### Rule (规则) 在构建系统中&#xff0c;“rule”通常指的是构建系统用来指导如何构建文件或者目标的指令集。它定义了一组转换输入到输出的…

数据库-单表查询-基本查询

查询数据表中指定字段的内容&#xff1a; SELECT 字段名 FROM 表名; 同时查询多个字段下的内容: SELECT 字段名1, 字段名2 FROM 表名; 查询数据表中的所有内容: SELECT * FROM 表名; 带IN关键字的查询: SELECT 字段名 FROM 表名 WHERE 字段名 IN (n1,n2,n3,...); IN关键字…

lora 继续训练

lora 继续训练 一般正常lora训练完模型后我们只保存其lora参数&#xff0c;然后与base模型进行合并。记录一下训练完保存lora后&#xff0c;继续再对lora训练的步骤。 base_model AutoModelForCausalLM.from_pretrained(base_model_id) base_model.enable_input_require_gra…

Multi-Head RAG:多头注意力的激活层作为嵌入进行文档检索

现有的RAG解决方案可能因为最相关的文档的嵌入可能在嵌入空间中相距很远&#xff0c;这样会导致检索过程变得复杂并且无效。为了解决这个问题&#xff0c;论文引入了多头RAG (MRAG)&#xff0c;这是一种利用Transformer的多头注意层的激活而不是解码器层作为获取多方面文档的新…

@Transactional实现原理及失效的三种情况

Transactional实现原理 Transactional是spring中定义的事务注解&#xff0c;在方法或类上加该注解开启事务。主要是通过反射获取当前对象的注解信息&#xff0c;利用AOP&#xff08;代理模式&#xff09;对编程式事务进行封装实现 // // Source code recreated from a .class f…

Win11版本21H2怎么升级为23H2?升级详细步骤在此!

在Win11电脑操作中&#xff0c;用户目前使用的版本是21H2&#xff0c;现在想体验23H2版本的先进功能&#xff0c;但不知道要怎么操作才能将系统版本升级为23H2&#xff1f;接下来小编给大家介绍详细的升级方法步骤&#xff0c;助力大家轻松完成系统版本升级操作。 方法一&#…

PostgreSQL源码分析——CHECKPOINT

checkpoint源码分析 因为检查点checkpoint相关的代码不是一篇文章就能分析完的&#xff0c;所以&#xff0c;相关的代码与逻辑可能会不连续&#xff0c;需要后续结合上下文理解。这里只列出了其中一部分。 其核心代码在&#xff1a;src/backend/postmaster/checkpointer.c以及…