c++中新增加的一个概念称之为_【数据库基础知识(一)】相关概念

本系列给小伙伴们分享关于数据库的基本概念和应用,最主要的部分还是SQL的基础知识,不论你是做研发、测试、运维还是数据统计和数据分析,都离不开SQL的编写;最为通用型的技能,一起学起来吧。

【系列索引】

(一)数据库基础知识

(二)SQL基本知识

(三)SQL进阶知识

(四)SQL练习题

【关系的概念】

关系是指人与人之间,人与事物之间,事物与事物之间的相互联系

计算机科学中的关系是笛卡儿积的有一定意义的、有限的子集,所以关系也是一个二维表,表的每一行对应一个元组,表的每一列对应一个域。由于域可以相同,为了加以区分,必须对每列起一个唯一的名字,称之为属性。

数据结构中的关系指的是集合中元素之间的某种相关性。

【关系的运算】

关系运算的运算对象是关系,运算结果亦是关系,关系代数的运算符包括两类:传统的集合运算和专门的关系运算两类;传统的集合运算是从关系的水平方向,即行的角度来进行,而专门的关系代数不仅涉及行,还涉及列。

传统的集合运算是二目运算,包括并,差,交,笛卡尔积4种运算。

(1)并(Union,表示为U):两个表或集合的联合。

例:R1=(A,B),R2=(B,C,D)

则:R1UR2=(A,B,C,D)

注:U集合里不包含重复的属性。

(2)差(Difference,表示位-):两个表或集合的区别。

例:R1=(A,B),R2=(B,C,D)。

则:R1-R2=(A)

注:-集里的元素个数不能大于初始。

(3)交(Intersection,∩):两个及以上的集合或表中具有相同属性的集合。

(4)笛卡儿积(Product,表示为X):两个表或集合的组合个数。

例:R1=(A,B),R2=(B,C,D)

则:R1xR2=(AB,  AC,  AD,  BB,BC,BD)

注:R1xR2集的元素个数为R1的元素个数乘R2的元素个数;

专门的运算包括:投影、选择、连接、除运算四种。

(5)投影(Project,表示为π):从表中抽取特定的列值。

表达式:πM(R)={ t(M) |t∈R }.

释义:R表示一个关系表;

T表示R中的一条横向的记录;

M表示T中的M列的交叉属性值;

πM(R)={ t(M) |t∈R }表示在关系表R中T行M列的一个属性值;

(6)选择(Select,表示为σ–Sigma):从表中选取与给定条件相符的行。

表达式:σA=a(R)={ t(A)=a |t∈R }.

A表示R表中的一个字段或属性类型;

t∈R表示R表中的一条记录;

t(A)=a表示记录t中A属性的具体值等于a;

σA=a(R)={ t(A)=a |t∈R }表示在R表中选择A=a的一条记录;

(7)联接(join,表示为▷◁):通过共同属性连接两个表。

连接运算中有两种最为常见的连接。一种是等值连接还有一种为自然连接。等值连接为从R和S的笛卡尔积中选取那些R和S的公共属性值都相等的那些元组,进行等值连接。(数据库中的连接运算更多是等值连接)
自然连接是一种特殊的等值连接,在等值连接的基础上去掉那些R和S都有的公共属性列,就是自然连接。

(8)除(Division,表示为÷):除运算需要满足两个条件:表R和表S的属性集合要有相同性;R÷S的商是R和S非相同属性集合的一个投影的子集,该子集和S的笛卡尔积必须包含在R中。

【数据库的概念(Database)】

数据库是一个以某种有组织的方式存储的数据集合。最简单的办法是将数据库想象为一个文件柜,文件柜中有很多的格屉,不同的格屉根据这个格屉上的标签存放了一系列的文件,每一份文件都是一张二维表格,表格中记录了具体的信息。这个文件柜是一个存放数据的物理位置,不论具体的数据是什么,都可以依照这个文件柜的文件组织方式进行归档和整理。

此处应当注意由于误用所引起的歧义。人们通常用数据库这个术语来代表他们使用的数据库软件,这是不正确的,也因此产生了许多混淆。确切地说,数据库软件应称为数据库管理系统(DBMS)。数据库是通过 DBMS 创建和操纵的容器,而具体它究竟是什么,形式如何,各种数据库都不一样。

【关系型数据库】

关系型数据库是依据关系模型来创建的数据库。关系模型主要包含“一对一”、“一对多”以及“多对多”三种关系模型,关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织

关系型数据可以很好地存储一些关系模型的数据,比如一个老师对应多个学生的数据(多对多),一本书对应多个作者(一对多),一本书对应一个出版日期(一对一)。

常见的关系型数据库:Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL。

关系型数据库的特点:

a) 安全(因为存储在磁盘中,不会说突然断电数据就没有了);

b) 容易理解(建立在关系模型上,符合现实的逻辑思维);

c) 不节省空间(因为建立在关系模型上,就要遵循某些规则,比如这张表中某字段值可能不填,即使为空仍要占据存储空间)。

【非关系型数据库】

非关系型数据库主要是基于“非关系模型”的数据库(由于关系型太大,所以一般用“非关系型”来表示其他类型的数据库)。

非关系型模型比如有:

(1)列模型:存储的数据是一列列的。关系型数据库以一行作为一个记录,列模型数据库以一列为一个记录。(这种模型,数据即索引,读取速度很快,主要用于分布式数据库);

(2)键值对(Key-Value)模型:存储的数据是一个个“键值对”;

(3)文档类模型(Key-File):以一个个文档来存储数据,有点类似“键值对”。

常见非关系模型数据库:

(1)列模型:HBase

(2)键值对模型:Redis,MemcacheDB

(3)文档类模型:mongoDB

非关系型数据库的特点:

(1)效率高(因为存储在内存中);

(2)安全性较低(断电丢失数据,但其中Redis可以同步数据到磁盘中),现在很多非关系型数据库都开始支持转存到磁盘中。

【数据视图与数据模型】

数据抽象共有三个层次:物理层、逻辑层和视图层。在逻辑层使用的数据模型包括两类:一类是概念数据模型,主要用于数据库设计,它能被一般的用户理解,与人的思维表达方式比较接近。这样的模型有实体-联系模型(ERM);另一类是逻辑数据模型,按计算机系统的观点对数据建模,使得数据更适合用计算机加以表示。这里模型主要用于DBMS的实现,比如关系模型、面向对象模型、层次模型和网状模型。设计师构建数据库模式的方法通常是首先使用E-R模型在高层对数据建模,然后再将其转变成关系模型。在物理层使用的数据模型称为物理数据模型。

数据模型通常由数据结构、数据操作和完整性约束三部分组成。

【数据库语言】

根据功能不同,可以将数据库系统提供的语言分成三种类型:

(1)数据定义语言(DDL),用于定义数据库模式;

(2)数据操纵语言(DML),用于对数据库进行查询和更新;

(3)数据控制语言(DCL),用于对数据进行权限管理。

【数据库模式】

根据数据的不同抽象层次,数据库有三级模式:物理模式(内模式)在物理层描述数据库中全体存储结构和存取方法,而逻辑模式(概念模式)则在逻辑层描述数据库中全体数据的逻辑结构和特征。在视图层也可分为若干模式,称为子模式(外模式),它描述了数据库用户能够看见和使用的局部数据的逻辑结构和特征。通常一个数据库只有一个物理模式和一个逻辑模式,但是子模式有若干个。

dcfc69a92ca32d81d2d4780fab829d7a.png

【实体关系图(E-R图)】

E-R图由以下元素构成:

(1)矩形,代表实体型;

(2)椭圆,代表属性;

(3)菱形,代表联系;

(4)线段,将属性和实体性相连,或将实体型和联系相连。

由于关系模式在关系型数据库中主要是“一对一”、“一对多”以及“多对多”三种,故在实体关系图中的具体关系通常也是这三种。示例如下图。

8e1e2c8cef1f45ec08713d0165960522.png

【关系模型】

关系模型由关系数据结构、关系操作集合和关系完整性约束三部分构成。在关系模型中,现实世界实体以及实体间的联系均用关系来表示。

关系模型中常用的关系操作包括:选择、投影、连接、除、并、交、差等查询操作和增加、删除、修改两大部分。关系操作的特点是集合操作方式,即操作的对象和结果都是集合。关系操作可以使用两种方式定义:基于代数的定义称为关系代数;基于逻辑的定义称为关系演算。由于使用变量的不同,关系演算又分为元组关系演算和域关系演算。

关系模型允许定义三类完整性约束:实体完整性、参照完整性和用户定义完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件。实体完整性规则是:关系的主码不能取空值。参照完整性规则是:外码必须是另一个表中主码的有效值,或者是“空值”。

【事务】

事务是一系列的数据库操作,是数据库应用程序的基本单元,是反映现实世界需要以完整单位提交的一项工作。事务是用户定义的一个数据库操作序列。

举一个现实生活中常见的例子来理解。从A账户转账100元到B账号,站在用户角度而言,这是一个逻辑上的单一操作,然而在数据库系统中,至少会分成两个步骤来完成:

(1)将A账户的金额减少100元;

(2)将B账户的金额增加100元。

26b3bee028c8b0860218014bcb100519.png

在这个过程中可能会出现以下问题:

(1)转账操作的第一步执行成功,A账户上的钱减少了100元,但是第二步执行失败或者未执行便发生系统崩溃,导致B账户并没有相应增加100元。

(2)转账操作刚完成就发生系统崩溃,系统重启恢复时丢失了崩溃前的转账记录。

(3)与此同时另一个用户转账给B账户,由于同时对B账户进行操作,导致B账户金额出现异常。

为了避免以上可能的情况发生,我们需要将在数据库中操作的若干步骤捆绑为一个完整动作,要么都成功,要么都失败,不允许只执行部分,这在数据库操作中就称之为事务。

那么就很容易理解事务的四个特征:原子性、一致性、隔离性和持久性。

(1)原子性(Atomicity):原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。

(2)一致性(Consistency):一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。

(3)隔离性(Isolation):隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。即要达到这么一种效果:对于任意两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前就已经结束,要么在T1结束之后才开始,这样每个事务都感觉不到有其他事务在并发地执行。

(4)持久性(Durability):持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。

事务处理包括数据库恢复和并发控制。数据库恢复有两个目的:保证事务的原子性和使数据库能恢复到正确状态。

数据恢复的原理概括为冗余,建立冗余数据最常用的技术是数据转储和登录日志文件。数据转储是由DBA定期地将整个数据库复制到磁盘或另一个磁盘上保存起来的过程。

【触发器】

一个触发器用来定义一个条件以及在该条件为真时需要执行的动作。通常,触发器的条件以断言的形式定义。动作以过程的形式定义。

【索引】

索引的本质:是一种数据结构,一种帮助数据库高效读取数据的数据结构。

每种查找算法都只能应用于特定的数据结构之上,例如二分查找要求被检索数据有序,而二叉树查找只能应用于二叉查找树上,但是数据本身的组织结构不可能完全满足各种数据结构(例如,理论上不可能同时将两列都按顺序进行组织),所以,在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。

索引的具体设计和实现,在此就不展开了,后续有机会再详细的介绍。


其他系列好文推荐:

【Python基础系列】

【Python基础(一)】环境搭建与工具的安装

【Python基础(二)】计算机基本知识科普

【信息系统项目管理师知识分享系列】

【项目管理(二)】信息系统项目管理师-知识梳理篇

【项目管理(三)】信息系统项目管理师-重点考察内容解析

【项目管理(四)】信息系统项目管理师-案例分析总结(I)

【项目管理(五)】信息系统项目管理师-案例分析总结(II)

【项目管理(六)】信息系统项目管理师-案例分析总结(III)

【项目管理(七)】信息系统项目管理师-案例分析总结(IV)

【项目管理(八)】信息系统项目管理师-论文总结(I)

【项目管理(九)】信息系统项目管理师-论文总结(II)


如果你觉得我的分享对你有些许帮助,或对你的朋友有些许帮助,或你想让更多的人获得这份些许的帮助,点击右下角的“在看”就能实现这美好的愿望啦~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值