1.数据库
关系型数据库:存放结构化的数据,像表格就是结构化的数据,能够对用户的请求操作做出毫秒级的响应。
如:Oracle,Mysql,Sybase,DB2,PostgreSQL,SQLserver,Access等
非关系型数据库:
如:BigTable(Google),HBase(Apache),Redis,MongoDB,Cassandra等
2.数据库的三范式
数据库的三范式用来解决数据的冗余,即数据重复的问题。
第一范式:表中的每个字段是不可拆分的,比如三年二班,可以拆分成三年级和二班
第二范式:建立在第一范式的基础上,主键的唯一性,但如果数据出现重复,要把表拆分开来
Name | Code | DataType | Length | Primary | |
1 | 订单编号 | orderId | varchar2(30) | 30 | 1 |
2 | 产品号 | productId | int | ||
3 | 购买人 | name | varchar(30) | 30 | |
4 | 购买电话 | phone | varchar(20) | 20 | |
5 | 身份证 | carNum | varchar(20) | 20 |
当一个人同时购买许多件商品时,就会产生多条数据,其中购买人都是重复的,这就造成数据冗余,所以我们应该把这张表拆分开来,分为订单信息表和购买人信息表
Name | Code | DataType | Length | Primary | |
1 | 订单编号 | orderId | varchar(30) | 30 | 1 |
2 | 产品号 | productId | int | ||
3 | 购买人编号 | peoId | varchar(30) |
Name | Code | DataType | Length | Primary | |
1 | 购买人编号 | peold | varchar(30) | 30 | 1 |
2 | 购买人 | name | varchar(30) | 30 | |
3 | 购买人电话 | phone | varchar(20) | 20 | |
4 | 身份证 | carNum | varhcar(20) | 20 |
第三范式:属性之间不能有传递依赖的关系
比如员工号,姓名,年龄,性别,所在公司,公司所在地址,公司电话不能再同一个表格中。
应该拆分成:员工号,姓名,年龄,性别,所在公司 和 所在公司,公司地址,公司电话
3.数据库事务
总共四种:原子性,一致性,隔离性,持久性
原子性:即事务里的操作,要么全部成功,要么全部失败。A给B转账1000元,要么A中的账户少A,B表都更新了。代表全部成功;要么就没转成功,A,B表都不更新,A,B账户金额无变化。
一致性:即所有的数据要保持一致,要么A中的账户少1000元,B中的账户多1000元;要么无变化
隔离性:在A给B转账的同时,C也给A转账,不会影响A给B转账
持久性:一旦事务提交后就会保存在数据库中
4.数仓分层
总公四层:ods(贴原层),dwd(整合层),dim(维度层),ads(数据集市)
ods:负责将原系统的数据利用交换层技术抽取过来直接存储,其存储表结构跟源系统时一摸一样的。
dwd:按照概念模型,逻辑模型,物理模型的递进设计思想,对企业操作型历史数据进行主题域设计建模,然后分析,细化主题域,定义主题域内部实体之间的逻辑关系以及实体的属性等,进而在数据仓库中建表,索引等,并为满足高性能的数据访问需求增加相应的数据冗余及表之间的约束关联,但尽可能遵循数据库三范式设计思想。
dim:在dwd层基础上根据业务的需要对数据进行多维度的构造分析,形成可供上层系统应用的星状或雪花状数据。
ads层:从dim层中获取相应的数据,进行数据挖掘和内部管理分析的数据应用模块。
5.数据库与数据仓库的区别
数据库存放的是每个系统产生的数据,比如信贷系统,国债系统等有与之对应的系统。
数据仓库存放的是企业的历史数据和对历史数据抽取,清洗,加工,汇总和处理后的操作型数据,它按照一个或几个主题域进行数据的存储,加工。比如银行的八大主题域:公共,账户,存款之类的。