【数据库学习】关系数据库总结

1,数据库平台(Database)

数据库管理系统(DataBase- Management System,DBMS) :是系统软件,是数据库系统的核心。
数据库有两种类型,分别是 关系型数据库 和 非关系型数据库(NoSQL(Not Only SQL ))

1)postgres

按行存储,有行锁。

2)mysql

3)Access

4)sql server

5)sqlite

6)neo4j

非关系数据库。图数据库。

7)NebulaGraph

8)clickHouse

9)hive

10)Elasticsearch原理

11)Oracle

12)KunDB

星环科技出品的国产分布式关系数据库。

13)ArgoDB

星环科技出品,基于多模型统一架构,支持关系型、宽表、时序、地理空间、搜索、图、向量等 11 种主流数据模型。一个平台即可满足 OLAP、AETP、多模型融合分析、联邦计算、数据仓库、实时数据仓库以及湖仓一体等多种场景需求。

2,概念

1)数据库

数据库是长期存储在计算机内(永久存储)、有组织的、可共享的大量数据的集合。
数据库中存储的是数据及数据之间的关系。

  1. 正常情况读写文件系统比数据库快一到两个数据级;
  2. 数据库的优势是体现的大量数据的查询、统计以及并发读写,不是在速度上。
  3. 数据的最小存取单位是数据项。

2)数据库模式定义语言DDL(Data Definition Language):

是用于描述数据库中要存储的现实世界实体的语言。一个数据库模式包含该数据库中所有实体的描述定义。这些定义包括结构定义、操作方法定义等。

3)关系完整性

1>实体完整性(主键不为NULL)

所谓的实体完整性就是指关系(所谓的关系就是表)的主码不能取空值;
比如学生表的主码通常是取学号为主码

2>参照完整性(外键不为NULL)

是指参照关系中每个元素的外码要么为空(NULL),要么等于被参照关系中某个元素的主码;
参照关系也称为外键表,被参照关系也称为主键表。

3>用户定义的完整性(属性约束)

属性的范围约束;
唯一性约束;

4)关系运算

  1. 集合运算符
  2. 关系运算符
  3. 算术比较符
  4. 逻辑运算符
    非与或
集合运算符 备注
并(∪)
差(-)
交(∩)
笛卡尔积(×) A={a,b}, B={0,1,2},A×B={(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}
关系运算符 说明
选择(限制、σ) 在关系R中选择满足给定条件的诸元组。
投影(π) 关系R上的投影是从R中选择出若干属性列组成新的关系。
投影之后可既改变行,又改变元组的数量。
连接(θ连接、⋈) 从两个关系的笛卡尔积中选取属性间满足一定条件的元组。(连接由乘积(笛卡尔积)、选择、投影组成)
除运算(➗) RS÷S表示:“在R和S的联系RS中,找出与S中所有的元组有关系的R元组”。

这里写图片描述
这里写图片描述

5)依赖

依赖类型 定义 举例
部分函数依赖 设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。 AB->C,A->C ==》C部分依赖于AB。
完全函数依赖 设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。 AB->C,但是AB单独得不出C ==》C完全依赖于AB.
传递函数依赖 设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。 A->B,B->C且这个推导不可逆,那么成C传递依赖于A
多值依赖 设R(U)是属性集U上的一个关系模式。X,Y,Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值有一组Y的值,这组值仅仅决定于x值而与z值无关。 有这样一个关系 <仓库管理员,仓库号,库存产品号> ,假设一个产品只能放到一个仓库中,但是一个仓库可以有若干管理员,那么对应于一个 <仓库管理员,库存产品号>有一个仓库号,而实际上,这个仓库号只与库存产品号有关,与管理员无关,就说这是多值依赖。

6)范式

各个范式联系:
5NF⊂4NF⊂BCNF⊂3NF⊂2NF⊂1NF

范式 满足最低要求 定义
1NF 字段不可再分,原子性 如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF
2NF 消除部分子函数依赖:一个表只能说明一个事物;
即要求数据库表中的每个实例或行必须可以被唯一地区分。
若R∈1NF,且每一个非主属性完全函数依赖于码,则R∈2NF。
3NF 消除传递依赖,即消除非主属性对键的传递依赖:每列都与主键有直接关系,不存在传递依赖。任何非主属性不依赖于其它非主属性。 若R∈3NF,则每一个非主属性既不部分依赖于码,也不传递依赖于码。
BCNF(修正第三范式、扩充第三范式 消除主属性对键的传递依赖) 所有非主属性对每一个码都是完全函数依赖;
所有主属性对每一个不包含它的码,也是完全函数依赖;
没有任何属性完全函数依赖于非码的任何一组属性。
4NF 关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X->->Y(Y∉X),X都含有码,则称R<U,F>∈4NF

3,行存储和列存储对比

1)行存储(Row-Based)

  1. 传统关系数据库按行存储。
  2. 行按顺序写入磁盘。
  3. 查询时容易产生冗余数据,大数据情况下影响数据处理效率。
  4. 举例:
    MongoDB是文档型的行存储;
    Lexst是二进制型的行存储。

2)列存储(Column-Based)

  1. 按列存储,由于每一列的类型一样且value也可能一样,极大的增加压缩比,每次io数据量更大,从而提高检索统计性能。
  2. 每一列由一个线程来处理,即查询的并发处理性能高。
  3. 列族(column group,Bigtable系统中称为locality group):即将多个经常一起访问的数据列的各个值存放在一起。如果读取的数据列属于相同的列族,列式数据库可以从相同的地方一次性读取多个数据列的值,避免了多个数据列的合并。列族是一种行列混合存储模式,这种模式是行存储与列存储的结合。
  4. 举例:Hadoop的HBase、

3)对比

1>数据写入:推荐行存储

  1. 行存储的写入是一次完成。如果这种写入建立在操作系统的文件系统上,可以保证写入过程的成功或者失败,数据的完整性因此可以确定。
  2. 列存储由于需要把一行记录拆分成单列保存,写入次数明显比行存储多(意味着磁头调度次数多,而磁头调度是需要时间的,一般在1ms~10ms),再加上磁头需要在盘片上移动和定位花费的时间,实际时间消耗会更大。所以,行存储在写入上占有很大的优势。
  3. 数据修改是对磁盘上的记录做删除标记。行存储是在指定位置写入一次,列存储是将磁盘定位到多个列上分别写入,这个过程仍是行存储的列数倍。所以,数据修改也是以行存储占优。

2>数据读取:推荐列存储

  1. 数据读取时,行存储通常将一行数据完全读出,如果只需要其中几列数据的情况,就会存在冗余列,出于缩短处理时间的考量,消除冗余列的过程通常是在内存中进行的。
  2. 列存储每次读取的数据是集合的一段或者全部,不存在冗余性问题。极大的减少缓冲池使用率,减少I/O。
  3. 两种存储的数据分布。
    由于列存储每一列类型一致,数据解析比较简单。
    相比之下,行存储时每一行记录中保存了多种类型的数据,数据解析需要在多种数据类型之间频繁转换,这个操作很消耗CPU,增加了解析的时间。
  4. 列存储更容易压缩,极大的缩小了磁盘读取时间、网络传输时间。

4)场景

  1. OLTP(Online transaction processing,在线/联机事务处理):==》主要是对数据库中的数据进行增删改查,适合行存储。
    操作主体一般是产品的用户。

  2. OLAP(Online analytical processing,联机分析处理,数据仓库):==》查询统计,适合列存储。
    通过分析数据库中的数据来得出一些结论性的东西。比如给老总们看的报表,用于进行市场开拓的用户行为统计,不同维度的汇总分析结果等等。操作主体一般是运营、销售和市场等团队人员。

4,数据库语句

SQL 语言是非过程化的语言,易学习。

1)三级模式结构

三级模式结构:外模式、模式和内模式。
三级模式结构有效地组织、管理数据,提高了数据库的逻辑独立性和物理独立性 ==》使数据库达到了数据独立性。

1>模式(schema,逻辑模式)

a)概念

一个数据库只有一个模式。区分不同数据库下的相同表名(相当于编程时的命名空间)。

举例:
一个公司的系统,分2个子系统,分别为财务系统和人力资源系统.
这2个子系统, 共用一个数据库。
那么 财务系统的表, 可以放在财务的模式(schema).
人力资源系统的表,放在人力资源系统的模式里面。
这2个子系统,能够互相访问对方的表。
但是又不因为 表重名 的问题,影响对方。

2>外模式(子模式,用户模式)

外模式通常是模式的子集,一个数据库可以有多个外模式,但一个应用程序只能有一个外模式。
外模式是保证数据库安全性的一个有力措施:用户只能访问外模式的数据,其余数据不可见。

3>内模式(存储模式)

一个数据库只有一个内模式。
内模式是数据物理结构和存储方式的描述ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值