产品架构设计之产品实体设计一,二
今天我们来谈一下产品架构设计中,一个必不可少的环节——实体设计。
01什么是实体?
在产品架构中,实体可以理解为“名词”——即产品中的关键要素或对象。这些实体是产品功能的基本构件,代表了实际业务中的具体事物或概念。
比如,在一个电商平台中,用户、商品、订单都是典型的实体。它们是产品中不可或缺的部分,是我们要处理和操作的对象。
那我们为什么要抽象设计实体?
抽象设计实体的目的是为了把复杂的业务场景和需求转化为易于理解和实现的模型。实体是产品中最基本的组成单元,通过抽象设计实体,我们能够:
-明确产品的核心功能:将实际业务中的复杂对象抽象为实体,可以清晰地看到产品的核心功能和组成部分。
-简化系统设计:实体的抽象设计能够帮助我们将复杂的逻辑拆解成可管理的部分,使系统设计更加简洁、易于维护。
-提高可扩展性:通过合理的实体设计,可以使产品架构具有良好的扩展性,方便未来的功能扩展和更新。
而如果用大白话来解释就是:我们将一个模糊的业务,提炼出真正要“落库”的数据表,毕竟计算机只能处理结构化的数据!
那可能有朋友要问了在产品架构中为什么要先设计实体?
实体设计是产品架构设计的基础。实体设计决定了产品的基本结构和逻辑,是后续流程设计、数据模型设计、界面设计等工作的基础。
如果没有一个清晰的实体设计,整个产品架构将会缺乏坚实的基础,导致功能实现的复杂度增加,系统难以扩展和维护。
试想下如果大家连页面上放什么字段都没有想清楚,一上来就画页面,这样的产品在大型的企业级B端产品中是不敢想象的灾难设计。
所以说在产品架构设计中,实体设计是将业务需求转化为技术实现的桥梁。一个优秀的实体设计不仅能够支撑产品的现有功能,还能为未来的扩展奠定坚实的基础。
02实体设计的方法
具体来说,我们设计实体的方法可以分为下面的4步:
1. 识别关键实体
在产品架构设计初期,首先要识别出产品中的关键实体。在绝大多数的时候,这些实体通常对应于产品中的核心功能或流程,代表了业务中的主要对象(比如会员,订单,商品等)。
步骤:
-分析线下用户的工作场景,提取出与用户交互最频繁的关键词对象。
-从业务流程中找出对产品功能至关重要的元素。
例如:梳理用户报销场景:用户提供票据,填写金额,提交纸质表单,领导签字该表单,财务查阅该表单........(这张表单就是我们要提炼的实体-报销单)
2. 定义实体属性
因为每个实体都有其独特的属性,而在找到实体后就需要提炼实体的属性,这些属性描述了实体的特征和状态。
步骤:
-列出每个实体能唯一区分的属性,如ID、名称、描述等。
-根据业务需求,增加与业务逻辑相关的属性。
例如:报销单中唯一能区分的属性是单据号,单据类型,而根据A公司要求,单据中必须要有申请人ID,申请人职位,申请人职级......(这些唯一项与A公司的要求共同构成了实体属性字段)
3. 设计实体之间的关系
实体之间的关系是产品逻辑的核心。通过设计实体间的关系,可以确定系统的逻辑结构和数据流动。
步骤:
-确定实体之间的关联类型,如一对一、一对多、多对多等。
-使用实体关系图(ER图)来展示实体之间的关系。
4. 验证实体设计
设计完成后,需要对实体设计进行验证,以确保其能够满足业务需求,并具备良好的扩展性和可维护性。
步骤:
-使用实际业务场景进行测试,验证设计的合理性。
-通过模拟操作流程,检查设计的健壮性和容错性。
例如我们将抽象出的报销单据实体,在整个线下流程中进行实测,检测有无缺少的字段,有无流程跑不通的情况,就像财务是不是拿到这张单据就可以不要领导签字,在实际与财务沟通后由于公司性质要求,所以必须要签字,因此报销单的实体中还需要增加标识属性,是否已打印出待签字单,用于区分是否完成了打印动作。
03模拟案例演示:电商平台的实体设计
假设我们正在设计一个电商平台,该平台的核心功能是让用户能够浏览商品、加入购物车、下单购买商品,以及查看订单状态。为了实现这些功能,我们需要先设计好平台中的核心实体。以下是具体步骤及结果输出,展示如何一步步提炼出实体。
步骤一:识别关键实体
在设计实体之前,我们需要了解平台的主要功能和业务流程:
1.用户浏览商品: 用户可以浏览和搜索平台上的商品。
2.加入购物车: 用户可以将商品加入购物车,准备购买。
3.生成订单并支付: 用户在购物车中选择商品后,可以生成订单并完成支付。
4.查看订单状态: 用户可以在订单历史中查看已购买商品的状态和详情。
基于这些功能需求,我们识别出以下关键实体:
·用户(User): 平台的使用者。
·商品(Product): 在平台上出售的商品。
·购物车(Cart): 用户选择并准备购买的商品集合。
·订单(Order): 用户生成的购买记录。
步骤二:定义实体属性
确定了关键实体后,我们需要为每个实体定义属性,这些属性将帮助我们详细描述实体的特征和状态。
用户(User):
1.用户ID(userID): 唯一标识一个用户的ID。
2.用户名(username): 用户的名称。
3.邮箱(email): 用户的邮箱地址,用于登录和联系。
4.密码(password): 用户的账户密码。
5.注册日期(registrationDate): 用户注册平台的日期。
商品(Product):
1.商品ID(productID): 唯一标识一个商品的ID。
2.商品名称(productName): 商品的名称。
3.描述(description): 商品的详细信息。
4.价格(price): 商品的售价。
5.库存数量(stockQuantity): 当前商品的库存数量。
6.创建日期(createdDate): 商品上架的日期。
购物车(Cart):
1.购物车ID(cartID): 唯一标识一个购物车的ID。
2.用户ID(userID): 关联到用户的购物车。
3.商品列表(products): 当前购物车中所有商品的集合。
订单(Order):
1.订单ID(orderID): 唯一标识一个订单的ID。
2.用户ID(userID): 生成订单的用户ID。
3.订单日期(orderDate): 订单生成的日期。
4.订单状态(orderStatus): 订单的当前状态(如待付款、已付款、已发货、已完成)。
5.商品列表(products): 订单中包含的商品列表。
6.总金额(totalAmount): 订单中所有商品的总金额。
步骤三:设计实体之间的关系
在定义了实体和它们的属性之后,接下来是设计实体之间的关系。这些关系将决定平台的逻辑结构。
用户与购物车(User-Cart):
一个用户只有一个购物车(1:1 关系)。
用户与订单(User-Order):
一个用户可以有多个订单(1:多 关系)。
购物车与商品(Cart-Product):
一个购物车可以包含多个商品,一个商品可以出现在多个购物车中(多:多 关系)。
订单与商品(Order-Product):
一个订单可以包含多个商品,一个商品可以出现在多个订单中(多:多 关系)。
步骤四:验证实体设计
最后,我们通过模拟一些实际场景来验证实体设计的合理性和完整性。
用户浏览并加入商品到购物车:
1.用户登录(User),浏览商品(Product),将商品加入购物车(Cart)。
2.检查购物车中是否正确记录了所选商品。
用户生成订单并支付:
1.用户从购物车中选择商品生成订单(Order),并进行支付。
2.验证订单中包含的商品列表和总金额是否正确计算。
3.检查订单状态是否从“待付款”变为“已付款”。
用户查看订单状态:
1.用户可以在订单历史中查看已生成的订单及其状态(OrderStatus)。
以上为大家演示的就是一个完整的实体找寻与定义的流程。
03总结
可以看到这样的设计背后,我们一步步的把抽象的业务具体化得到了标准的可产品化的设计,而这也是高阶产品所必备的技能。