揭秘你不会画“信息结构图”的本质
itomcoil 2025-08-02 18:48 1 浏览
编辑导语:产品信息结构图有助于清晰地展示产品信息,一定程度上可以为后台上传数据提供依据,但不少人可能觉得产品信息结构图很难,这可能是对数据库表结构不理解等因素导致的。本篇文章里,作者就产品信息结构图的所需知识进行了总结,一起来看一下。
前言
有没有觉得设计产品信息结构图很难,根本无从下手,不知所措?根本原因在哪?
本质原因在于你脑海中根本就没有面向对象的概念和对数据库表结构的理解。
别慌,猪哥这带你探寻从产品信息拆解为对象,并将之追溯到数据库底层的整个过程,从而解决你的疑惑。
一、什么是面向对象?
在面向对象程序设计中,对象指的是具体的某一个事物,在现实生活中能够看得见摸得着的事物。
他其实是一种思维方式,讲究的是将你看到的所有信息化整抽象为一个容器,这个容器可以装很多信息,也可以做很多事,而这个容器就是对象。例如,一台车是一个对象,它的属性有:型号、颜色、大小;方法有:载客、路上跑等。
程序概念:一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。类(class)和对象(object)是面向对象方法的核心概念,面向对象的编程思想一直力图使计算机语言中,对事物的描述与现实世界中该事物的本来面目尽可能的保持一致。
说人话:用计算机语言描述现实世界的万事万物。
- 类:类是一个模板,它描述一类对象的行为和状态,是对一类事物描述,是抽象的、概念上的定义。
- 对象:对象是实际存在的该类事物的每个个体,是类的一个实例,由属性(同义词:状态、字段)和方法(同义词:行为、函数)构成。
- 属性:用于描述对象具备哪些特征。平常我们在页面上看到的字段信息,大部分说的就是这玩意儿。
- 方法:描述对象可以有哪些行为操作。逻辑运算、数据修改以及所有动作都是在方法中完成的。
二、什么是产品信息结构图?
梳理整个产品需要展示的信息,一般认为它是你通过分析整理得出的该产品各个页面应该展示的信息,同时也为后台上传数据提供依据。
结合面向对象思维:描述产品有哪些对象和字段。将你看到的页面信息,抽象处理到一个对象的维度,然后把同一个对象的信息放在一起。
咱们产品人画的信息结构图,不需要与开发同学设计的数据库表结构一模一样,按你的理解将其以单个对象维度抽离出来即可。
三、什么是数据库?
数据库是“按照一定的规则来存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
说人话:数据库其实就是一个硬盘,可以向里面存东西,也可以从里面取东西。
依稀记得《java编程思想》中有段话,世间万事万物,皆为对象。很强大,也很有道理。数据库表结构,就是对象在程序语言的体现。咱们做系统设计,追踪到数据底层,就是一个又一个对象,以及对象之间的关系(ER图)。
1. 数据库概念
- 数据库:每个表由一个名字标识。表包含带有列名的列,和记录数据的行。
- 产品设计本质:无非就是对数据库中各种表格的增删改查(CRUD)。
- 数据库类型:共分为关系型和非关系型,而对于PM的我们能搞懂关系型就可以了。
- 关系型数据库=表结构+表之间的关系。
- 关系型数据库:一种基于现实生活中对象与对象之间关系的数据库。主流关系型数据库:mysql、oracle、db2、sqlite。
- 非关系型数据库:一种相对松散且可以不按照严格的结构规范进行存储的数据库,通常使用json格式的键值对【key-value】形式表示和存储数据。主流非关系型数据库:MongoDB、CouchDB。应用场景:对存取要求比较高、并发处理比较高的场合。
- sql:数据库操作语言,对数据库中的数据表进行增删改查的操作。增insert,删delete,改update,查select。
2. 产品经理可以应用到设计上的思想
表结构:定义一个表的字段、类型、主键、外键、索引,这些基本的属性组成了数据库的表结构。
产品设计场景应用:只需要关注当前表中有哪些字段即可。所以跟技术沟通的时候,当前页面有哪些信息你可以汇总抽象起来,那就是一张表。信息中的各个细节就是表中的每个字段。
表之间的关联关系(ER图):表之间的关系共有四种【一对一、一对多、多对一、多对多】。小技巧,一般是两两对象相比较,A跟B什么关系,B跟A又是什么关系,从而得出结论。
1)技术上好处:级联删除
表之间的关联关系有什么用?可以有一个连带关系。
举个例子,一个用户表,一个信息表,一个用户对应多条信息,当你删除用户的时候是不是这个用户的信息也要被删除,如果没有关联关系的话,你就要在删除用户前手工写条sql语句去删除信息表里的对应信息,如果有关联的话,就不用了,级联删除就可以了,只要删除用户,这个用户下面的信息也就没了。
2)产品设计场景应用:多渠道自动匹配信息
背景:我在A渠道某个页面填写了一些信息,其他不同渠道BCD页面又要填写部分类似的字段信息,很耗时耗力。
功能:为了提高人效,我决定设计一个自动匹配的的功能。到底是一对一、一对多、多对一、多对多呢?
经调研,A渠道参照物与BCD渠道都是一对一关系。那么我只需要设计一个ABCD渠道关系对应列表,拿主流渠道A的参照物与其他渠道做比较,就可以实现系统自动将A的信息同步给BCD。
PS:数据库表,对于产品经理我觉得了解其底层原理就好,能将其技术原理应用到产品设计上,可以让你思路更加清晰明了哦(OMG,原来我的系统就是这几张表在发挥作用,太牛逼了,技术大哥们)。
四、案例解析 | 三者的关系
我们以下图的小轿车来举例,它有不同的的颜色、品牌、名称等信息,我们要来为它做产品设计,他的本质从产品信息结构图——对象——数据库底层是怎样的呢?一起探秘下。
产品信息结构图:有一个车的列表管理页面,包含颜色、品牌、名称三个信息。
面向对象思维:汽车为类(class),而具体的每个人车该类的对象(object),对象包含汽车的三个属性颜色、品牌、名称等。
数据库表结构:有一张表车,他有三个字段颜色、品牌、名称。
对照起来看就很容易理解了对不对?所以并不难,难的是什么?难的是如何把他们抽象成对象。
怎么才能具备对象思维呢?且听下回解析抽象、封装、继承、多态思维。
总结
希望解决了你的疑惑,欢迎留言深度沟通。
作者:猪哥gj,微信公众号:刻意练习产品思维(ID:kylxpm520)
本文由 @猪哥gj 原创发布于人人都是产品经理。未经许可,禁止转载。
题图来自Unsplash, 基于CC0协议
相关推荐
- C|经典实例理解算法之顺推、逆推、迭代、递归思想
-
递推算法可以不断利用已有的信息推导(迭代)出新的信息,在日常应用中有如下两种递推算法。①顺推法:从已知条件出发,逐步推算出要解决问题的方法。例如斐波那契数列就可以通过顺推法不断递推算出新的数据。②...
- [西门子PLC] 博途编程之递归算法
-
首先跟大伙讲一讲哈,递归算法瞅着是挺优雅挺不错的,可实际上没啥大用,在真正的项目里能不用就别用递归,为啥呢?因为用了递归可能会惹出大麻烦,后面会给大伙举例讲讲原因。那啥叫递归呢?从名字上就能看出来,就...
- SQL 也能递归?一文搞懂 Recursive CTE的魔力
-
很多人以为递归(Recursive)只属于编程语言,和SQL没什么关系。但其实SQL中也能实现递归操作,特别是在处理树结构、路径查找时,WITHRECURSIVE展现出强大威力。本文将带你...
- 10张动图学会python循环与递归
-
一图胜千言! 循环难学?十张动图GIFS有助于认识循环、递归、二分检索等概念的具体运行情况。 本文代码实例以Python语言编写。 一、循环 GIF1:最简单的while循环 GIF...
- C语言学习之-----(十三) 函数递归
-
(十三)函数递归一、栈在说函数递归的时候,顺便说一下栈的概念。栈是一个后进先出的压入(push)和弹出(pop)式数据结构。在程序运行时,系统每次向栈中压入一个对象,然后栈指针向下移动一个位置。当系...
- Python自动化办公应用学习笔记19—— 循环控制:break 和 continue
-
在Python的循环结构中,break和continue是两个特殊的保留字,主要用于改变循环的执行流程。1.定义与核心作用break:立即终止当前循环,跳出整个循环体(仅限最内层循环)conti...
-
- 循环与递归的那些事
-
大家好,我是贠学文,点击右上方“关注”,每天为您分享java程序员需要掌握的知识点干货。在任何的编程语言中,循环和递归永远都是一个避不开的话题,因为在某些特定的场景下,用递归确实要比循环简单得多,比如说遍历文件夹目录等等,但是,递归也有下面...
-
2025-08-02 18:49 itomcoil
- 漫谈递归、迭代、循环——人理解迭代,神理解递归
-
后续计划好几天没有更新了,没有偷懒。随着源码的阅读,学习到了字典和集合的底层实现。字典这种数据结构的搜索效率很高,底层结构采用了效率优于红黑树的哈希表。红黑树是一种平衡二叉树,C++中的map和lin...
- Excel递归与循环——货物分箱问题
-
递归指通过函数自身调用实现复杂计算,在Excel中多通过支持递归的函数(如LAMBDA)实现。第一,简化复杂逻辑表达:对于有明确递推关系的问题,递归能将多层嵌套的逻辑转化为简洁的自我调用形式,比手...
- MongoDB入门之索引
-
索引就像书的目录,如果查找某内容在没有目录的帮助下,只能全篇查找翻阅,这导致效率非常的低下;如果在借助目录情况下,就能很快的定位具体内容所在区域,效率会直线提高。索引简介首先打开命令行,输入mongo...
- MongoDB之集合管理一
-
最近的几篇博客都是关于MongoDB的,虽然个人感觉也没多少知识点,但没想到竟然有转载我的博客的,不管有经过我同意还是没经过我同意,说明写的应该还是有价值的,这也是我写博客的一个动力之一吧。上一博客学...
- SpringBoot集成扩展-访问NoSQL数据库之Redis和MongoDB!
-
与关系型数据库一样,SpringBoot也提供了对NoSQL数据库的集成扩展,如对Redis和MongoDB等数据库的操作。通过默认配置即可使用RedisTemplate和MongoTemplate...
- 揭秘你不会画“信息结构图”的本质
-
编辑导语:产品信息结构图有助于清晰地展示产品信息,一定程度上可以为后台上传数据提供依据,但不少人可能觉得产品信息结构图很难,这可能是对数据库表结构不理解等因素导致的。本篇文章里,作者就产品信息结构图的...
- MongoDB导入导出备份数据
-
要提前安装mongodb-database-tools参考:centos离线安装mongodb-database-tools导出数据常用的导出有两种:mongodump和mongoexport,两种方...
- mongodb导入导出及备份
-
-------------------MongoDB数据导入与导出-------------------1、导出工具:mongoexport1、概念:mongoDB中的mongoexport...
- 一周热门
- 最近发表
- 标签列表
-
- ps图案在哪里 (33)
- super().__init__ (33)
- python 获取日期 (34)
- 0xa (36)
- super().__init__()详解 (33)
- python安装包在哪里找 (33)
- linux查看python版本信息 (35)
- python怎么改成中文 (35)
- php文件怎么在浏览器运行 (33)
- eval在python中的意思 (33)
- python安装opencv库 (35)
- python div (34)
- sticky css (33)
- python中random.randint()函数 (34)
- python去掉字符串中的指定字符 (33)
- python入门经典100题 (34)
- anaconda安装路径 (34)
- yield和return的区别 (33)
- 1到10的阶乘之和是多少 (35)
- python安装sklearn库 (33)
- dom和bom区别 (33)
- js 替换指定位置的字符 (33)
- python判断元素是否存在 (33)
- sorted key (33)
- shutil.copy() (33)