网站首页 > 技术文章 正文
在B端系统中,列表是一个非常常用的功能。不论是列表页的设计还是单独的列表,都会涉及到列表的逻辑。这篇文章,我们来梳理一下。
本文所讲的B端产品集中在后台系统领域,一般后台系统的页面分为表单页,详情页、列表页、表盘页面。
- 表单页:主要用于添加、修改数据对象的操作型页面,会包含多个表单控件的处理
- 详情页:用于展示某条数据对象的详细内容、数据的页面
- 列表页:用于展示大量同类型的数据,包括对该数据的排序、筛选、查看、删除等
- 表盘页:用于展示数据和图表等页面,也叫做仪表盘,即数据分析
那么如何设计好每一个列表页面之间的逻辑呢?
首先要明白当前列表主要表达的内容是什么,比如在WMS系统中,有库存列表、入库列表、出库列表、库位管理列表,根据名字就可以得知这个列表所要展示给用户的内容是什么;
其次,需要理清楚每一个列表之间的关联关系,比如,入库列表跟库存列表之间是以商品为载体,库存列表的主体是商品,以商品为维度进行库存的统计,而入库列表则是以每一条入库记录为主体,二者的关系是一对多,也可以理解为,入库列表的主键为入库编号,库存列表的主键为商品编号,一对多的关系怎么设计数据库结构呢?
简单来讲:
1:1关系一个表实现
1:N关系需要两个表实现,把1的主键放在N的表里作为外键
N:N关系需要三个表实现,需要将两个表的主键组成第三个表格
举个例子:
某自学考试社会助学点有教师若干名,招生人员若干名,学生若干名。
教师和招生人员的基本属性为:姓名,性别,职称。
学生的基本属性为:姓名,性别,入学成绩。
招生人员负责招收学生,记录招生人数。
教师负责辅导学生学习,依据其职称和辅导时间产生辅导费用。
根据上述信息整理出如下E-R图,可见招生人员与学生之间是一对多的关系,学生与教师之间是多对多的关系,故招生和学生之间是两张表,而学生和教师之间是三张表,两部分合在一起,减去学生重复的表,总共是四张表。
整理出的四张表格如下,加粗部分为该表格的主键和外键。
- 招生人员(招生人员姓名,性别,招生人员职称)
- 教师(教师姓名,性别,教师职称)
- 学生(学生姓名,性别,入学成绩,招收人员姓名)
- 辅导(教师姓名,学生姓名,教师职称,辅导时间)
建表的结构懂了,下面就是列表数据的问题了,我们知道一个列表页面展示的数据是非常多的,产品设计原型的时候其实不能太过死板,所以学了数据库的产品刚开始也会存在一定的弊端,会把每一个列表页当作一张表,其实不然,列表页是给用户看的,用户想看到什么,我们就给他查询什么展示出来,所以一个列表页面并非就是一张数据表,而是技术人员通过联表查询将多张表格的数据查询出来展示在一张列表页面,也就是用户看到的一张张的表格。
清楚表的规则之后,就能够很好的理清楚每一个列表页面的信息、列表之间的关联关系,从而更好的跟技术人员进行沟通,虽然产品可以不懂技术,但是知道一些基础的技术知识,总是对工作有益,当时,学会了一定的技术知识,也不能跟产品设计的思路混淆。
本文由 @晚迟 原创发布于人人都是产品经理。未经作者许可,禁止转载。
题图来自Unsplash,基于CC0协议。
该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。
猜你喜欢
- 2025-07-02 mysql count(1)、count(*) 与 count (列名) 的执行区别
- 2025-07-02 非DBA原来是这样设计关系数据表的
- 2025-07-02 高并发下实现幂等的几种方式(高并发如何解决方案)
- 2025-07-02 [JPA教程]02.认识JPA的注解.md(jpa的@query注解)
- 2025-07-02 为啥不推荐使用外键?(什么情况下用外键)
- 2025-07-02 MYSQL存储引擎InnoDB(二):使用注意点
- 2025-07-02 MySQL数据库最常用操作(mysql常见操作)
- 2025-07-02 表格存储 SQL 查询多元索引(表格存储 sql 查询多元索引信息)
- 2025-07-02 雪花算法(雪花算法使用)
- 2025-07-02 MySQL的普通索引和唯一索引到底什么区别?
- 1507℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 510℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 487℃MySQL service启动脚本浅析(r12笔记第59天)
- 466℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 464℃启用MySQL查询缓存(mysql8.0查询缓存)
- 445℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 423℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 420℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)