技术知识入门读书笔记!(2):数据库篇

本系列适合没有技术背景的菜鸟看,是我阅读唐韧老师的《产品经理必懂的技术那些事儿》的笔记,欢迎产品菜鸟们一起交流~

第二篇是数据库,包含数据库概述、关系型与非关系型数据库介绍



1. 数据库基础


1.1 定义

数据库类似于一个数据存储的仓库,按照一定的规则存储,可以进行增删改查操作。


1.2 分类

分为关系型数据库(MySQL为代表)与非关系型数据库(MongoDB和CouchDB为代表)。

区别:关系型数据库基于关系模型,折射现实世界中的实体关系。

非关系型数据库以相对松散的方式存储数据,不像关系型数据库有严格的数据结构约束。


1.3 基本操作

对数据库可进行增、删、改、查的操作。


2. 关系型数据库


2.1 定义

关系型数据库是基于关系模型的数据库,关系模型折射现实生活中的实体关系,通过实体关系模型的方式表现出来。

技术知识入门读书笔记!(2):数据库篇_第1张图片
《产品经理必懂的技术那些事儿》配图

实体关系模型:现实生活中,人是一个实体、车是一个实体,人跟人之间会有关系,人跟车也会有关系。

实体:一系列属性的结合,比如人这个实体就有职业、年龄、性别的属性。属性也可以成为一个实体,比如职业、性别都可以单独成为一个实体。

实体关系:一对一(1:1)、一对多(1:N)、多对多(M:N)。

比如在电商中如果用关系型数据库,实体就包括商品、订单,之间有多对多的关联关系。

实体模型再往下具象,在数据库中实际表现为数据库表和表之间的关系。


2.2 数据库表和表的关系

数据库表与实体模型的对应关系:实体→表,属性→字段,实体关系→数据表关系

定义规则:在定义表的时候需要定义表名、字段名、字段类型。表名和属性名只能用英文命名。

字段类型:与数据类型一致,分为整型、字符型等。

主键:表中第一个属性的名字叫做 表名+id ,作为表中数据的唯一性标记。例如“人”的表,主键就是peopleid,1号、2号……每个peopleid都唯一对应表中的一个人。

技术知识入门读书笔记!(2):数据库篇_第2张图片
《产品经理必懂的技术那些事儿》配图

关联方法:通过关联对应的主键实现实体/表之间的关联。如图就是在people中关联了professionId。

技术知识入门读书笔记!(2):数据库篇_第3张图片
《产品经理必懂的技术那些事儿》配图


2.3 数据库操作语言(SQL)

SQL语句:用来操作关系型数据库的操作命令

示例:

建表:create table people (peopleId varchar(30) primary key, name varchar (50))    

建表包含peopleId与name两个字段,并通过primary key指定peopleId为主键,varchar (30) 表示字符型最大长度30字符

已建表中插入数据:

insert into people values('001','张三')

往people表中插入了值"001"张三”,按顺序对应到表中字段

对数据进行修改:

update people set name=‘李四’ where peopleId= '001'

更新people表中peopleId为001的这条数据,把名字改为李四

查询数据:

select * from people 查询表中所有的数据

select peopleId,name from people 查询表中的peopleId和name两个字段的数据

select * from people where peopleId='001' 查询表中peopleId为001的这条数据的所有字段

select * from people where age > 20 查询people表中年龄大于20岁的人


3.非关系型数据库NoSQL(Not Only SQL)


3.1 定义

松散的不按照严格的结构规范进行存储的数据库。

适合场合:对存取要求比较高且并发处理比较高的场合,例如对网站访问数据的统计。


3.2 四大分类:

键值对(key-value)存储数据库(如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB)、列存储数据库(如:Cassandra, HBase, Riak)、文档型数据库(CouchDB, MongoDb)、图形数据库(Neo4J, InfoGrid, Infinite Graph)。其中文档型数据库是比较主流的。


3.3 以MongoDb为例

数据以类似文档的方式进行存储,每个文档都有唯一标识和版本号。以键值对(key-value)的方式表示和存储数据。据,使用JSON格式的数据进行表示和存储。

{

"peopleId": "001",

"name": "张三",

"sex": "male",

"age": "28",

"profession": "建筑师”

}

这就存储了5个“key-value”形式的数据,冒号左边的是key、右边的是value。

键值对的嵌套:

[

"id": "001"

"name": "张三”

"profession": {"id: "1", "professionName": "建筑师“”}

}

键profession的值也是一个JSON结构。


4.实际工作建议


在设计功能时,工程师常常会提出跟数据库相关的问题,如新功能影响到现有数据库的设计、有些字段是目前数据库里没有的、这个功能导致了数据库结构的变化。所以要求我们在对已有功能修改时注意两个问题:

一是新的设计应该对数据库做何种调整,是新增数据库字段还是要修改或删除原有字段

二是新设计对原有数据的兼容性问题

在沟通时工程师常常根据字段的名字来说明问题,产品需要知道字段是代表哪个产品功能中的哪一个具体信息。

你可能感兴趣的:(技术知识入门读书笔记!(2):数据库篇)