想成为高级产品经理,这些「数据库」知识搞清楚了吗?
结合自身经验,做项目的流程和《产品经理必须懂的技术那点事儿》这本书,来梳理梳理在工作过程中遇到的技术名词和自己的理解。
一、数 据库 的定义和分类
产品经理梳理好业务流程,在进行产品评审的时候,一般架构师就要考虑数据库的结构设计类型了。
数据库定义: 数据库运行在服务器中,类似一个进行数据存储的仓库,数据按照一定的规则存储,可以对数据库中的数据进行增删改查的操作。
别那么多废话,我们不是开发出身的产品听不懂, 简单理解就是一个仓库 。如果把数据库比如成一个大型超市仓库的话,那么DBA就是仓库管理员,负责给你配相应的权限,部分(全部)货品的增、删、查、改功能。
仓库的占地,扩建;
什么商品摆放什么位置,什么类的商品摆放在一起;
什么样的商品按照什么样的规则进行陈列。
另外,超市里面陈列的供客户查看的商品也属于数据库。
数据库分类:关系型数据库和非关系型数据库。 关系型数据库是一种基于关系模型的数据库。关系模型折射显示世界中的实体关系,将现实世界中各种实体及实体之间的关系,通过关系模型表达出来。
接着上面超市仓库的例子,怎么来理解这个关系型数据库呢?比如超市会员卡中心办理的会员,一个会员是一个实体,会员购买订单属于一个实体。
先说会员实体他会有多个属性(类似人物标签),如性别、兴趣爱好、姓名、年龄、职业等等。然后继续往下细分,性别也可以单独叫一个实体,兴趣爱好也可以叫一个实体。
其中,会员这个实体与属性的关系有些是一对多关系,有些是一对一的关系。
是否可以称得上一个实体,个人理解可以从物理角度进行区分,在物理学上能叫个体的,在这里就可以称得上一个实体。联想:产品经理在画用况图的时候可以结合这种思路来进行绘制,一个实体就是一个case。
二、数据库的呈现
按上面超市仓库的例子, 数据库的呈现可以简单的理解为货架的陈列 。不同类型的仓库陈列的方式不一样。
关系型数据库,就像传统的仓库陈列方式一样,我命名好这一排放什么货品,货品的包装规格,有新货品增加了直接放进去就行,在表上增加数据。
非关系数据库,就像现代的智能停车场一样,你来一辆车我记着你的车牌号,车型,外观颜色,你随意停车。去取就行或者更高科技发送一条指令车自动送到门口你开着就走。
在关系型数据库中,可以通过数据库表和表之间的关系来具象表示这种模型。表就是我们通常用的二维表格。表有名字,表的各项标题名。表名和属性名只能用英文命名。
一个实体可以对应一张表,每张表都赋予属性,每张表都通过id来表示唯一性。实体通过每张表的id来进行关联。
在二维表中,可以使用属性来表示某一类数据,属性在数据库中也成为字段。每一个字段都有自己的数据类型。
在定义数据库表的时候,我们需要定义表名,字段名及字段的数据类型。这样一个完整的数据库表就定义清楚了,我们可以按照定义好的表结构往里面存储数据。
数据库的操作语言(SQL)即结构化查询语言,是一种用来操作关系型数据库的编程语言,可以理解为对数据库的操作命令。 我们使用SQL对数据库进行各种操作,包括创建数据库表,为某一个数据库添加数据,或者对数据库进行修改,删除及查询操作等。SQL有固定的语法,通过对应的语句对数据库进行操作。
非关系型数据库是一种相对松散,且可以不按照严格的结构规范进行存储的数据库。 非关系型数据库一般叫做NOSQL(Not Only SQL),没有关系型数据库那样严格的数据结构约束,在存储形式和使用上有别于关系型数据库。
现在主流的非关系型数据库有MongoDB和CouchDB。以MongoDB为例,它是一种典型的非关系型数据库,数据以类似文档的方式进行存储,每一个文档都有对应唯一的标识和版本号。
在非关系型数据库MongoDB中,我们使用键值对的方式表示和存储数据,键值对就是“key-value”的形式,类似在关系型数据库表中的字段名和该字段名对应的值。在MongoDB中,使用JSON格式的数据进行数据表示和存储。
非关系型数据库适合应用在一些对存取要求比较高且并发处理比较高的场合,例如对网站访问数据的统计。在很多产品后台,同时使用两种类型的数据库。
目前市面上多数使用的是关系型数据库,方便维护。例如电商类产品有订单表、商品(suk)表,金融类产品有产品表、银行卡表、用户表等。
三、数据类型
表示整数的“整型”: 所有不带小数点的数字都属于整型,一般用int来表示整型。规范的变量取名一般是字母或者下划线开头,中间和结尾也可以是字母数字或者下划线。
表示文本的“字符型”: 字符型的内容没有限制,可以任意内容。在不同的编程语言中,表示字符型的关键字略有不同。Java使用关键词string表示字符型数据。字符型是使用最广泛的一种数据类型。例如在用户登录界面输入的用户名和登录密码都是以字符型的方式显示在界面上的。
表示小数的“浮点型”: 一般使用float或者double标记浮点型数据。在产品设计中,我们也会使用到浮点型,例如在填写体重的时候,我们可以输入5这样的数值来表示公斤。在一些专业型的工具产品中,我们会输入一些带小数点的数来设置参数,这时都会使用到浮点型。当然在界面上获取的都是文本字符型的,只是我们程序里面将字符型转换为了浮点型。
表示是非判断的“布尔型”: 是一种特殊的数据类型,数据只有两种值“ture”和“false”。“ture”对应序号是1,“false”对应序号是举例应用场景用户注册时候勾选的注册协议。布尔型在程序设计中使用的比较多,主要用于控制流程或者做一些特殊标记。
数据类型之间的转换: 比如说手机号登录前台界面输入是文本字符型的,需要转换整数判断是否是12位数字。
数据拼接: 比如金融平台目前的投资人数、投资金额都是动态获取的。文本的字符型和整数的整型拼接起来的字符串。产品设计中会经常用到。
四、编程语言的逻辑结构
先说一下定义,简单理解就是语法,就是小时候学语文主谓宾定状补。学习英语有英语的语法结构,那当然编程页有自己的语法结构。
条件判断“if else”: 应用场景比如登录场景,电商类产品营销满额减/满额赠等;互金类产品投资符合什么的规则可以使用红包,加息券;最低投资金额等等。
条件选择“switch case”: 应用场景比如积分兑换场景,你拥有的积分可以兑换什么类型的物品。电商类产品加入购物车时,选择对应尺码颜色在缩略图显示对应的颜色物品。金融产品投资时,余额可购买剩余份额。基本上一些多选一的操作都可以使用到。
循环操作“while/do while”: 应用场景具体banner的循环播放,文章列表显示,聊天的列表等等一个事件在某一条件下重复发生,在循环停止前持续让这个事件发生一段时间。
作为一名不是写代码开发出身的产品经理,要比别人更努力提升自己,不断锻炼自己的逻辑思维和严谨性。不论开发出身还是做什么出身,做出能为公司创造利润的产品才是一位比较合格的产品经理。共勉。文/行李箱向日葵,擅长从0-1搭建系统产品,了解内容类相关产品的运作和系统搭建。对P2P产品有深入的了解。