产品架构设计之产品实体设计一,二
cac55 2024-09-20 12:55 24 浏览 0 评论
本文深入探讨了实体设计的每个关键步骤,从识别核心实体到定义其属性、构建实体间关系,以及如何验证设计以适应实际业务需求。通过具体的电商平台案例,我们展示了如何将抽象的业务概念转化为具体的产品架构,确保设计既符合当前需求又具备未来扩展的可能。
今天我们来谈一下产品架构设计中,一个必不可少的环节——实体设计。
01什么是实体?
在产品架构中,实体可以理解为“名词”——即产品中的关键要素或对象。这些实体是产品功能的基本构件,代表了实际业务中的具体事物或概念。
比如,在一个电商平台中,用户、商品、订单都是典型的实体。它们是产品中不可或缺的部分,是我们要处理和操作的对象。
那我们为什么要抽象设计实体?
抽象设计实体的目的是为了把复杂的业务场景和需求转化为易于理解和实现的模型。实体是产品中最基本的组成单元,通过抽象设计实体,我们能够:
- 明确产品的核心功能:将实际业务中的复杂对象抽象为实体,可以清晰地看到产品的核心功能和组成部分。
- 简化系统设计:实体的抽象设计能够帮助我们将复杂的逻辑拆解成可管理的部分,使系统设计更加简洁、易于维护。
- 提高可扩展性:通过合理的实体设计,可以使产品架构具有良好的扩展性,方便未来的功能扩展和更新。
而如果用大白话来解释就是:我们将一个模糊的业务,提炼出真正要“落库”的数据表,毕竟计算机只能处理结构化的数据!
那可能有朋友要问了在产品架构中为什么要先设计实体?
实体设计是产品架构设计的基础。实体设计决定了产品的基本结构和逻辑,是后续流程设计、数据模型设计、界面设计等工作的基础。
如果没有一个清晰的实体设计,整个产品架构将会缺乏坚实的基础,导致功能实现的复杂度增加,系统难以扩展和维护。
试想下如果大家连页面上放什么字段都没有想清楚,一上来就画页面,这样的产品在大型的企业级B端产品中是不敢想象的灾难设计。
所以说在产品架构设计中,实体设计是将业务需求转化为技术实现的桥梁。一个优秀的实体设计不仅能够支撑产品的现有功能,还能为未来的扩展奠定坚实的基础。
02 实体设计的方法
具体来说,我们设计实体的方法可以分为下面的4步:
1. 识别关键实体
在产品架构设计初期,首先要识别出产品中的关键实体。在绝大多数的时候,这些实体通常对应于产品中的核心功能或流程,代表了业务中的主要对象(比如会员,订单,商品等)。
步骤:
- 分析线下用户的工作场景,提取出与用户交互最频繁的关键词对象。
- 从业务流程中找出对产品功能至关重要的元素。
例如:梳理用户报销场景:用户提供票据,填写金额,提交纸质表单,领导签字该表单,财务查阅该表单……..(这张表单就是我们要提炼的实体-报销单)
2. 定义实体属性
因为每个实体都有其独特的属性,而在找到实体后就需要提炼实体的属性,这些属性描述了实体的特征和状态。
步骤:
- 列出每个实体能唯一区分的属性,如ID、名称、描述等。
- 根据业务需求,增加与业务逻辑相关的属性。
例如:报销单中唯一能区分的属性是单据号,单据类型,而根据A公司要求,单据中必须要有申请人ID,申请人职位,申请人职级……(这些唯一项与A公司的要求共同构成了实体属性字段)
3. 设计实体之间的关系
实体之间的关系是产品逻辑的核心。通过设计实体间的关系,可以确定系统的逻辑结构和数据流动。
步骤:
- 确定实体之间的关联类型,如一对一、一对多、多对多等。
- 使用实体关系图(ER图)来展示实体之间的关系。
4. 验证实体设计
设计完成后,需要对实体设计进行验证,以确保其能够满足业务需求,并具备良好的扩展性和可维护性。
步骤:
- 使用实际业务场景进行测试,验证设计的合理性。
- 通过模拟操作流程,检查设计的健壮性和容错性。
例如我们将抽象出的报销单据实体,在整个线下流程中进行实测,检测有无缺少的字段,有无流程跑不通的情况,就像财务是不是拿到这张单据就可以不要领导签字,在实际与财务沟通后由于公司性质要求,所以必须要签字,因此报销单的实体中还需要增加标识属性,是否已打印出待签字单,用于区分是否完成了打印动作。
03 模拟案例演示:电商平台的实体设计
假设我们正在设计一个电商平台,该平台的核心功能是让用户能够浏览商品、加入购物车、下单购买商品,以及查看订单状态。为了实现这些功能,我们需要先设计好平台中的核心实体。以下是具体步骤及结果输出,展示如何一步步提炼出实体。
步骤一:识别关键实体
在设计实体之前,我们需要了解平台的主要功能和业务流程:
- 用户浏览商品: 用户可以浏览和搜索平台上的商品。
- 加入购物车: 用户可以将商品加入购物车,准备购买。
- 生成订单并支付: 用户在购物车中选择商品后,可以生成订单并完成支付。
- 查看订单状态: 用户可以在订单历史中查看已购买商品的状态和详情。
基于这些功能需求,我们识别出以下关键实体:
- 用户(User): 平台的使用者。
- 商品(Product): 在平台上出售的商品。
- 购物车(Cart): 用户选择并准备购买的商品集合。
- 订单(Order): 用户生成的购买记录。
步骤二:定义实体属性
确定了关键实体后,我们需要为每个实体定义属性,这些属性将帮助我们详细描述实体的特征和状态。
1)用户(User):
- 用户ID(userID): 唯一标识一个用户的ID。
- 用户名(username): 用户的名称。
- 邮箱(email): 用户的邮箱地址,用于登录和联系。
- 密码(password): 用户的账户密码。
- 注册日期(registrationDate): 用户注册平台的日期。
2)商品(Product):
- 商品ID(productID): 唯一标识一个商品的ID。
- 商品名称(productName): 商品的名称。
- 描述(description): 商品的详细信息。
- 价格(price): 商品的售价。
- 库存数量(stockQuantity): 当前商品的库存数量。
- 创建日期(createdDate): 商品上架的日期。
3)购物车(Cart):
- 购物车ID(cartID): 唯一标识一个购物车的ID。
- 用户ID(userID): 关联到用户的购物车。
- 商品列表(products): 当前购物车中所有商品的集合。
4)订单(Order):
- 订单ID(orderID): 唯一标识一个订单的ID。
- 用户ID(userID): 生成订单的用户ID。
- 订单日期(orderDate): 订单生成的日期。
- 订单状态(orderStatus): 订单的当前状态(如待付款、已付款、已发货、已完成)。
- 商品列表(products): 订单中包含的商品列表。
- 总金额(totalAmount): 订单中所有商品的总金额。
步骤三:设计实体之间的关系
在定义了实体和它们的属性之后,接下来是设计实体之间的关系。这些关系将决定平台的逻辑结构。
- 用户与购物车(User-Cart):一个用户只有一个购物车(1:1 关系)。
- 用户与订单(User-Order):一个用户可以有多个订单(1:多 关系)。
- 购物车与商品(Cart-Product):一个购物车可以包含多个商品,一个商品可以出现在多个购物车中(多:多 关系)。
- 订单与商品(Order-Product):一个订单可以包含多个商品,一个商品可以出现在多个订单中(多:多 关系)。
步骤四:验证实体设计
最后,我们通过模拟一些实际场景来验证实体设计的合理性和完整性。
1)用户浏览并加入商品到购物车:
- 用户登录(User),浏览商品(Product),将商品加入购物车(Cart)。
- 检查购物车中是否正确记录了所选商品。
2)用户生成订单并支付:
- 用户从购物车中选择商品生成订单(Order),并进行支付。
- 验证订单中包含的商品列表和总金额是否正确计算。
- 检查订单状态是否从“待付款”变为“已付款”。
3)用户查看订单状态:
用户可以在订单历史中查看已生成的订单及其状态(OrderStatus)。
以上为大家演示的就是一个完整的实体找寻与定义的流程。
04 总结
可以看到这样的设计背后,我们一步步的把抽象的业务具体化得到了标准的可产品化的设计,而这也是高阶产品所必备的技能。
本文由人人都是产品经理作者【三爷茶馆】,微信公众号:【三爷茶馆】,原创/授权 发布于人人都是产品经理,未经许可,禁止转载。
题图来自Unsplash,基于 CC0 协议。
相关推荐
- Mac电脑强制删除任何软件方法-含自启动应用
-
对于打工者来说,进入企业上班使用的电脑大概率是会被监控起来,比如各种流行的数据防泄漏DLP,奇安信天擎,甚至360安全卫士,这些安全软件你想卸载是非常困难的,甚至卸载后它自己又安装回来了,并且还在你不...
- Linux基础知识 | 文件与目录大全讲解
-
1.linux文件权限与目录配置1.文件属性Linux一般将文件可存取的身份分为三个类别,分别是owner/group/others,且三种身份各read/write/execute等权限文...
- 文件保护不妥协:2025 年 10 款顶级加密工具推荐
-
数据安全无小事,2025年这10款加密工具凭借独特功能脱颖而出,从个人到企业场景全覆盖,第一款为Ping32,其余为国外英文软件。1.Ping32企业级加密核心工具,支持200+文件格...
- 省心省力 一个软件搞定系统维护_省心安装在哪里能找到
-
◆系统类似于我们居住的房间,需要经常打理才能保持清洁、高效。虽然它本身也自带一些清理和优化的工具,但借助于好用的第三方工具来执行这方面的任务,会更让人省心省力。下面笔者就为大家介绍一款集多项功能于一身...
- JAVA程序员常用的几个工具类_java程序员一般用什么软件写程序
-
好的工具做起事来常常事半功倍,下面介绍几个开发中常用到的工具类,收藏一下,也许后面真的会用到。字符串处理:org.apache.commons.lang.StringUtilsisBlank(Char...
- 手工解决Windows10的若干难题_windows10系统卡顿怎么解决
-
【电脑报在线】很多朋友已经开始使用Win10,估计还只是测试版本的原因,使用过程中难免会出现一些问题,这里介绍解决一些解决难题的技巧。技巧1:让ProjectSpartan“重归正途”从10074...
- System32文件夹千万不能删除,看完这篇你就知道为什么了
-
C:\Windows\System32目录是Windows操作系统的关键部分,重要的系统文件存储在该目录中。网上的一些恶作剧者可能会告诉你删除它,但你不应该尝试去操作,如果你尝试的话,我们会告诉你会发...
- Windows.old 文件夹:系统备份的解析与安全删除指南
-
Windows.old是Windows系统升级(如Win10升Win11)或重装时,系统自动在C盘创建的备份文件夹,其核心作用是保留旧系统的文件、程序与配置,为“回退旧系统”提供保...
- 遇到疑难杂症?Windows 10回收站问题巧解决
-
回收站是Windows10的一个重要组件。然而,我们在使用过程中,可能会遇到一些问题。例如,不论回收站里有没有文件,都显示同一个图标,让人无法判别回收站的空和满的真实情况;没有了像Windows7...
- 卸载软件怎么彻底删掉?简单几个步骤彻底卸载,电脑小白看过来
-
日常工作学习生活中,我们需要在安装一些软件程序,但随着软件的更新迭代速度,很多时候我们需要重新下载安装新的程序,这时就需要将旧的一些软件程序进行卸载。但是卸载软件虽然很简单,但是很多小伙伴们表示卸载不...
- 用不上就删!如何完全卸载OneDrive?
-
作为Windows10自带的云盘,OneDrive为资料的自动备份和同步提供了方便。然而,从隐私或其他方面考虑,有些人不愿意使用OneDrive。但Windows10本身不提供直接卸载OneDri...
- 【Linux知识】Linux下快速删除大量文件/文件夹方法
-
在Linux下,如果需要快速删除大量文件或文件夹,可以使用如下方法:使用rm命令删除文件:可以使用rm命令删除文件,例如:rm-rf/path/to/directory/*这个命令会递...
- 清理系统不用第三方工具_清理系统垃圾用什么软件
-
清理优化系统一定要借助于优化工具吗?其实,手动优化系统也没有那么神秘,掌握了方法和技巧,系统清理也是一件简单和随心的事。一方面要为每一个可能产生累赘的文件找到清理的方法,另一方面要寻找能够提高工作效率...
- 系统小技巧:软件卸载不了?这里办法多
-
在正常情况下,我们都是通过软件程序组中的卸载图标,或利用控制面板中的“程序和功能”模块来卸载软件的。但有时,我们也会发现利用卸载图标无法卸载软件或者卸载图标干脆丢失找不到了,甚至控制面板中卸载软件的功...
- 麒麟系统无法删除文件夹_麒麟系统删除文件权限不够
-
删除文件夹方法例:sudorm-rf文件夹名称。删除文件方法例:sudorm-r文件名包括扩展名。如果没有权限,给文件夹加一下权限再删。加最高权限chmod775文件名加可执行权限...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- 如何绘制折线图 (52)
- javaabstract (48)
- 新浪微博头像 (53)
- grub4dos (66)
- s扫描器 (51)
- httpfile dll (48)
- ps实例教程 (55)
- taskmgr (51)
- s spline (61)
- vnc远程控制 (47)
- 数据丢失 (47)
- wbem (57)
- flac文件 (72)
- 网页制作基础教程 (53)
- 镜像文件刻录 (61)
- ug5 0软件免费下载 (78)
- debian下载 (53)
- ubuntu10 04 (60)
- web qq登录 (59)
- 笔记本变成无线路由 (52)
- flash player 11 4 (50)
- 右键菜单清理 (78)
- cuteftp 注册码 (57)
- ospf协议 (53)
- ms17 010 下载 (60)