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

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,一经查实,立即删除!

相关文章

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

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

【免费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应用浅度融入到…

uniapp 自定义页面顶部导航栏

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

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

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

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

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

复位电路。

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

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

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

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

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

05眼动识别软件详情2波形优化-滤波

对应视频链接点击直达 01项目点击下载,可直接运行(含数据库) 05眼动识别软件详情2 对应视频链接点击直达期望的数据展示数据波形对比如何实现几种常用滤波介绍维纳滤波巴特沃斯滤波器中值滤波排序滤波 推荐 结语其他以下是废话 原始数据的波…

CentOS 7.9上创建的JBOD阵列恢复(二)

系列文章目录 CentOS 7.9上创建JBOD(一) CentOS 7.9检测硬盘坏区、实物定位(三) 文章目录 系列文章目录前言一、用命令查看是否认到盘二、直接组JBOD三、挂载到新目录四、查看原数据总结 前言 在CentOS 7.9上创建了一个软阵列JB…

SQL触发器基本结构

1. 修改分隔符的符号 delimiter $$ $$或者//都可以 2.创建触发器的名称 create trigger 函数名称 3. 什么样的操作会触发,操作的那个表 after:....之后触发 befor:....之前触发 insert:插入被触发 update:修改被触发 …

Kibana 一步步可视化实战构建步骤全集

今早读者朋友圈提及:《一本书讲透Elasticsearch》适合入门级体系化阅读,书中的3个项目实战,很适合实操,但是在建立Kibana可视化的过程中,书中没有明确构建步骤,在实操中会有缺憾。 我解释一下: …

AI实战 | 使用元器打造浪漫仪式小管家

浪漫仪式小管家 以前我们曾经打造过学习助手和待办助手,但这一次,我们决定创造一个与众不同的智能体,而浪漫将成为我们的主题。我们选择浪漫作为主题,是因为我们感到在之前的打造过程中缺乏了一些仪式感,无法给对方带来真正的惊喜。因此,这一次我们计划慢慢调试,将它发…

Python xml.dom.minidom 读取XML元素

哈喽,大家好,我是木头左! 什么是 XML? XML(可扩展标记语言)是一种用于描述数据结构和交换数据的标记语言。它被广泛用于 Web 应用程序中,用于存储和传输数据。XML 具有自描述性,因此…

文生视频开源产品的一些调研(一)

笔者尝试AI视频生成的几个特点: 玄学prompt,每个视频的prompt可能也需要微调很多次,需要找到使用模型的最佳prompt词组合,不恰当的比喻,骑自行车,座位高度等都是人与车彼此熟悉玄学生成,因为需…

第二证券:英伟达“利空”?!黄仁勋逢高又卖超2亿

时隔9个月,黄仁勋再次套现英伟达,股价小幅下跌。 当地时间6月17日周一,美股三大股指全线收涨。到收盘,道指涨0.49%,纳指涨0.95%,标普500指数涨0.77%。 英伟达CEO黄仁勋时隔9个月再度出售英伟达股票。最新…

基于spring的个人理财系统

需求概述 建设目标 个人理财项目的项目建设目标如下:完成用户注册、登录、用户唯一性验证、记账管理、预算管理、个人信息、修改密码等功能,实现完整的理财流程。 运行环境 1.系统硬件环境 (1)服务器端 名称 配置…

STM32学习笔记(六)--引脚重映射详解

STM32F103C8T6引脚定义: 在STM32微控制器中,外设引脚的复用功能(Alternate Function,AF)有时会出现冲突,例如当USART2_CTS和TIM2_CH1同时需要使用相同的引脚时。此时,可以通过引脚重映射功能&am…