产品经理必须懂的关系模型:一对一,一对多以及多对多关系
ccwgpt 2024-12-27 15:47 57 浏览 0 评论
编辑导语:产品经理这一岗位往往需要对接多个方面,这就要求产品经理最好能懂得其他岗位的一些知识,而了解一些数据库的基本知识,则可以帮助产品经理避免描述关系的过程中存在误解。本篇文章里,作者就对产品经理需要知道的关系模型进行了总结,一起来看一下。
背景
通常会有不同的需求方给产品经理提需求,产品经理在设计功能的时候,需要将需求转换成后台可以理解的实体,并且将实体之间的关系描述给后台,因为产品大多数不懂技术,所以在描述关系的时候,可能会存在误解,所以,产品经理必须懂一些最基础的数据库知识。
数据库模型一般有“层次模型”、“网状模型”、“关系模型”这三种,而“关系模型”因为其简单,理解起来简单,所以逐渐流行起来。“关系模型”中一般包括以下三种关系,分别是“一对一关系”,“一对多关系”,“多对多关系”。
一、主流关系数据库
目前,主流的关系数据库主要分为以下几类:
- 商用数据库,例如:Oracle,SQL Server,DB2等;
- 开源数据库,例如:MySQL,PostgreSQL等;
- 桌面数据库,以微软Access为代表,适合桌面应用程序使用;
- 嵌入式数据库,以Sqlite为代表,适合手机应用和桌面程序。
我们已经知道,关系数据库是建立在关系模型上的。而关系模型本质上就是若干个存储数据的二维表,可以把它们看作很多Excel表。
表的每一行称为记录(Record),记录是一个逻辑意义上的数据。
表的每一列称为字段(Column),同一个表的每一行记录都拥有相同的若干字段。
和Excel表(单表)有所不同的是,关系数据库的表和表之间需要建立“一对多”、“多对一”和“一对一”的关系,这样才能够按照应用程序的逻辑来组织和存储数据。
二、单表
单表是数据库里面最基础的元素。在产品设计时,如果只需要操作一个实体的,并提供curd 等基础操作,那么这个实体就可以用单表存储。如餐厅的门店数据、菜品数据等。
通常情况下,单表的数据以 table 的形式展现,操作的按钮也有两种交互方式,显式的显示或者 hover 以后再显示对应的操作。这两种没有明显的优缺点,需要根据业务形态,进行选择。
常见产品例子:
在实际的工业化产品中,单表结构的数据实际上是比较少的,比较常见的是用户访问日志、系统日志等。
三、一对一关系
1. 定义
一对一关系是指关系数据库中两个表之间的一种关系。 表示的是表A 中的一行数据只与表B 中的一行有关系。
当构思好每一个实体具有的属性以后,产品经理需要构思每一个实体承载什么样的业务,业务与业务之间是怎么流动的。这个时候,表与表之间,就需要有关系的承载了。
“一对一关系”是最简单的关系模型了,描述的是实体与实体之间的关系。如一个用户,只有一个身份证信息,一个身份证对应一个用户,并不存在一个身份证对应多个用户,或者一个用户对应多个身份证,如下图所示,person 表通过外键与card 进行联系。
2. 使用场景
当产品接到的需求中,某个实体有常用以及不常用信息,通常我们都会将常用的信息显示出来,不常用信息隐藏起来,不常用信息表和常用信息表,保证不常用信息表与常用信息表能够对应上:找一个具有唯一性的字段来共同连接两张表。
一个常用表中的一条记录永远只能在一张不常用表中匹配一条记录,反之亦然。
3. 场景原型
在产品表现层中,一对一关系的交互设计通常是需要点击,才能够查看另外一个实体的详情,如图所示,这里的主要信息是学生的信息,而身份证信息,则需要用户点击以后,再去查看,这也符合用户的使用场景,当需要查看身份证信息时,才点击查看。
而身份证信息的展示则有很多方式,如drawer 层,modal 层,甚至是嵌套列表也可以。此处以modal 层为例子。
四、一对多关系
1. 定义
一对多关系表示表A 中的一行数据可以和表B中的多个行相关,但是表B中的数据只能和表A中的一行数据相关。
例如:一个班级包含了多个学生,但是一个学生只能在一个班级中。在一对多的数据库设计中,后台通常会在学生表中,加入一个·classId· 指向class 表,从而表示一对多的关系,后台设计如图所示。
2. 使用场景
当产品接收到的需求中,有包含或者被包含的关系,如一个课室有N个学生, 一个异常有N个告警,一个订单有N个产品,我们就可以将这种包含的关系,抽象为一对多的关系。
3. 场景原型
在工业级产品中,一对多的关系是很常见的,通常的设计中,我们会用嵌套列表、drawer层、跳转页等进行展示。
例如电商系统中的订单页,通常我们会在外层表格,展示订单的数据,当用户需要查看产品信息时,用户点击“+”号以后,才展示具体的产品信息,而产品信息的交互,则与单表结构相似。
五、多对多关系
1. 定义
多对多关系表示表A中的一行数据可以和表B中的一行或者多行数据相关。表B的一行数据也可以和表A中的一行或者多行数据相关。
多对多关系,在关系型数据库中,是最复杂的了。多对多关系,需要一张中间表(学生课程关系记录)来转换,这张中间表里面需要存放学生表和课程表的关系,此时学生与中间表示1对多关系,课程与中间表是1对多关系。
例如,一个学生可以选修多门课程,一门课程可以被多个学生选修,这种情况下,我们称之为多对多关系。后台设计中,通常会引入一个关系表来表述 “多对多”的关系,通常,关系表中会包括表A和表B的主键,如下图所示,关系表则包含了学生表的主键和课程表的主键。
2. 使用场景
当产品接收到的需求,抽象出来的业务实体中,实体之间既有包含关系,也存在被包含关系(与一对多关系,一字之差),那么产品就可以设计为多对多的关系了。
3. 产品设计常见例子
当产品接到多对多关系的需求以后,通常都会给实体设计列表数据页,如果用户这时候提出一些统计实体之间关系的需求,那么一般都是通过关系表来统计的。如统计一门课有几个学生选,一个学生选了几门课。
如图红色框所示:不管是学生列表页,还是课程列表页,都有一个关系的汇总数据,用户点击汇总数据以后,就可以展示详情的数据,通常关系的详情,可以设置为modal 的组件。
总结
作为产品经理,虽然不是说一定要懂技术,但是懂一点技术,可以让你更好地与后台沟通交流,更容易推进项目。
本文由 @汪仔9789 原创发布于人人都是产品经理。未经许可,禁止转载。
题图来自Unsplash,基于CC0协议
相关推荐
- 一个基于.Net Core遵循Clean Architecture原则开源架构
-
今天给大家推荐一个遵循CleanArchitecture原则开源架构。项目简介这是基于Asp.netCore6开发的,遵循CleanArchitecture原则,可以高效、快速地构建基于Ra...
- AI写代码翻车无数次,我发现只要提前做好这3步,bug立减80%
-
写十万行全是bug之后终于找到方法了开发"提示词管理助手"新版本那会儿,我差点被bug整崩溃。刚开始两周,全靠AI改代码架构,结果十万行程序漏洞百出。本来以为AI说没问题就稳了,结果...
- OneCode低代码平台的事件驱动设计:架构解析与实践
-
引言:低代码平台的事件驱动范式在现代软件开发中,事件驱动架构(EDA)已成为构建灵活、松耦合系统的核心范式。OneCode低代码平台通过创新性的注解驱动设计,将事件驱动理念深度融入平台架构,实现了业务...
- 国内大厂AI插件评测:根据UI图生成Vue前端代码
-
在IDEA中安装大厂的AI插件,打开ruoyi增强项目:yudao-ui-admin-vue31.CodeBuddy插件登录腾讯的CodeBuddy后,大模型选择deepseek-v3,输入提示语:...
- AI+低代码技术揭秘(二):核心架构
-
本文档介绍了为VTJ低代码平台提供支持的基本架构组件,包括Engine编排层、Provider服务系统、数据模型和代码生成管道。有关UI组件库和widget系统的信息,请参阅UI...
- GitDiagram用AI把代码库变成可视化架构图
-
这是一个名为gitdiagram的开源工具,可将GitHub仓库实时转换为交互式架构图,帮助开发者快速理解代码结构。核心功能一键可视化:替换GitHubURL中的"hub...
- 30天自制操作系统:第六天:代码架构整理与中断处理
-
1.拆开bootpack.c文件。根据设计模式将对应的功能封装成独立的文件。2.初始化pic:pic(可编程中断控制器):在设计上,cpu单独只能处理一个中断。而pic是将8个中断信号集合成一个中断...
- AI写代码越帮越忙?2025年研究揭露惊人真相
-
近年来,AI工具如雨后春笋般涌现,许多人开始幻想程序员的未来就是“对着AI说几句话”,就能轻松写出完美的代码。然而,2025年的一项最新研究却颠覆了这一期待,揭示了一个令人意外的结果。研究邀请了16位...
- 一键理解开源项目:两个自动生成GitHub代码架构图与说明书工具
-
一、GitDiagram可以一键生成github代码仓库的架构图如果想要可视化github开源项目:https://github.com/luler/reflex_ai_fast,也可以直接把域名替换...
- 5分钟掌握 c# 网络通讯架构及代码示例
-
以下是C#网络通讯架构的核心要点及代码示例,按协议类型分类整理:一、TCP协议(可靠连接)1.同步通信//服务器端usingSystem.Net.Sockets;usingTcpListene...
- 从复杂到优雅:用建造者和责任链重塑代码架构
-
引用设计模式是软件开发中的重要工具,它为解决常见问题提供了标准化的解决方案,提高了代码的可维护性和可扩展性,提升了开发效率,促进了团队协作,提高了软件质量,并帮助开发者更好地适应需求变化。通过学习和应...
- 低代码开发当道,我还需要学习LangChain这些框架吗?| IT杂谈
-
专注LLM深度应用,关注我不迷路前两天有位兄弟问了个问题:当然我很能理解这位朋友的担忧:期望效率最大化,时间用在刀刃上,“不要重新发明轮子”嘛。铺天盖地的AI信息轰炸与概念炒作,很容易让人浮躁与迷茫。...
- 框架设计并不是简单粗暴地写代码,而是要先弄清逻辑
-
3.框架设计3.框架设计本节我们要开发一个UI框架,底层以白鹭引擎为例。框架设计的第一步并不是直接撸代码,而是先想清楚设计思想,抽象。一个一个的UI窗口是独立的吗?不是的,...
- 大佬用 Avalonia 框架开发的 C# 代码 IDE
-
AvalonStudioAvalonStudio是一个开源的跨平台的开发编辑器(IDE),AvalonStudio的目标是成为一个功能齐全,并且可以让开发者快速使用的IDE,提高开发的生产力。A...
- 轻量级框架Lagent 仅需20行代码即可构建自己的智能代理
-
站长之家(ChinaZ.com)8月30日消息:Lagent是一个专注于基于LLM模型的代理开发的轻量级框架。它的设计旨在简化和提高这种模型下代理的开发效率。LLM模型是一种强大的工具,可以...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- mfc框架 (52)
- abb框架断路器 (48)
- beego框架 (52)
- java框架spring (58)
- grpc框架 (65)
- tornado框架 (48)
- 前端框架bootstrap (54)
- orm框架有哪些 (51)
- 知识框架图 (52)
- ppt框架 (55)
- 框架图模板 (59)
- 内联框架 (52)
- cad怎么画框架 (58)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)