前言
本质原因在于你脑海中根本就没有面向对象的概念和对数据库表结构的理解。
一、什么是面向对象?
他其实是一种思维方式,讲究的是将你看到的所有信息化整抽象为一个容器,这个容器可以装很多信息,也可以做很多事,而这个容器就是对象。例如,一台车是一个对象,它的属性有:型号、颜色、大小;方法有:载客、路上跑等。
说人话:用计算机语言描述现实世界的万事万物。
- 类:类是一个模板,它描述一类对象的行为和状态,是对一类事物描述,是抽象的、概念上的定义。
- 对象:对象是实际存在的该类事物的每个个体,是类的一个实例,由属性(同义词:状态、字段)和方法(同义词:行为、函数)构成。
- 属性:用于描述对象具备哪些特征。平常我们在页面上看到的字段信息,大部分说的就是这玩意儿。
- 方法:描述对象可以有哪些行为操作。逻辑运算、数据修改以及所有动作都是在方法中完成的。
梳理整个产品需要展示的信息,一般认为它是你通过分析整理得出的该产品各个页面应该展示的信息,同时也为后台上传数据提供依据。
咱们产品人画的信息结构图,不需要与开发同学设计的数据库表结构一模一样,按你的理解将其以单个对象维度抽离出来即可。
数据库是“按照一定的规则来存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
依稀记得《java编程思想》中有段话,世间万事万物,皆为对象。很强大,也很有道理。数据库表结构,就是对象在程序语言的体现。咱们做系统设计,追踪到数据底层,就是一个又一个对象,以及对象之间的关系(ER图)。
2. 产品经理可以应用到设计上的思想
产品设计场景应用:只需要关注当前表中有哪些字段即可。所以跟技术沟通的时候,当前页面有哪些信息你可以汇总抽象起来,那就是一张表。信息中的各个细节就是表中的每个字段。
1)技术上好处:级联删除
举个例子,一个用户表,一个信息表,一个用户对应多条信息,当你删除用户的时候是不是这个用户的信息也要被删除,如果没有关联关系的话,你就要在删除用户前手工写条sql语句去删除信息表里的对应信息,如果有关联的话,就不用了,级联删除就可以了,只要删除用户,这个用户下面的信息也就没了。
背景:我在A渠道某个页面填写了一些信息,其他不同渠道BCD页面又要填写部分类似的字段信息,很耗时耗力。
经调研,A渠道参照物与BCD渠道都是一对一关系。那么我只需要设计一个ABCD渠道关系对应列表,拿主流渠道A的参照物与其他渠道做比较,就可以实现系统自动将A的信息同步给BCD。
四、案例解析 | 三者的关系
产品信息结构图:有一个车的列表管理页面,包含颜色、品牌、名称三个信息。
数据库表结构:有一张表车,他有三个字段颜色、品牌、名称。
nerror="javascript:errorimg.call(this);">
怎么才能具备对象思维呢?且听下回解析抽象、封装、继承、多态思维。
希望解决了你的疑惑,欢迎留言深度沟通。
本文由 @猪哥gj 原创发布于人人都是产品经理。未经许可,禁止转载。
题图来自Unsplash, 基于CC0协议
couchdb(揭秘你不会画“信息结构图”的本质)
