前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据库概论-绪论笔记【整理版】

数据库概论-绪论笔记【整理版】

作者头像
BWH_Steven
发布2020-04-23 10:25:08
4040
发布2020-04-23 10:25:08
举报
文章被收录于专栏:理想二旬不止理想二旬不止

(一) 引言

当你登录你的QQ账号和别人吹水的时候,当你期末交作业去度娘复制的时候,当你在工作中登录一些网站的时候,再比如当你查看自己几乎没有什么余额的银行卡的时候(捂脸),或许自己也没注意,(非需要,大部分人也不想注意哈哈哈)我们一直都在以某种方式与数据库打交道,或许你是一个开发人员,也或许你只是一个普通的用户,这一篇是我去年就一直想写的文章,但是也没个合适的机会,这一段时间加班加点写出来,同时最近想要更新的一系列文章,主要针对数据库理论知识,后面我把去年写过的 MySQL 文章也会对应的重新整理一遍

注:这篇文章重点还是偏理论,比较适合数据库的新手,或者具有一定实操基础的小伙伴,

既然你都打开这篇文章了,那你就注定不是一个村民,这一局我们跳 Java 程序员!

开发学习中,想满足一些需求,与数据打交道这可太频繁了,如何存储这些数据就是你考虑的问题了,当然不考虑性能,管理、安全等等,你的选择可就多了,存个 txt,存个xml,甚至还可以存个excel等等,有位新手朋友曾经问过我这样一个问题 “他在学习IO的一些技术的时候,常常会简单的保存一些数据到 .txt 文件中,为什么还需要数据库呢?”,这样的一些小Demo,大家在Java基础的学习中应该都是做过的,那么我们下面就从这个问题讲起~

(二) 为什么使用数据库?

(1) 查询速度

假定我们将数据全部存储在一个普通文件中(data.txt)_(以逗号间隔)

代码语言:javascript
复制
......
"Eminem",male,1972,"USA"
"Rihanna",female,1988,"Barbados"
"Taylor Swift",1989,female,"USA"
"Aavril Lavigne",1984,female,"Canada"
......

如果在我们的数据极为庞大的情况下,我们需要查询其中的一些数据,例如,查询Eminem的国籍,我们一般会使用遍历,但是毫无疑问,这个响应时间会变得极其缓慢,但是使用数据库后,它所提供的一些索引技术等就可以解决这样的问题

(2) 数据完整有效

代码语言:javascript
复制
"Rihanna",female,1988,"Barbados"
"Rihanna",female,1995,"USA"

如果数据中出现了重名的情况,又如何判断是不是同一个人呢?

如果data.txt文件中的数据被错误的修改,例如出生年份被修改为其他类型字符串这种无效表达怎么办?

或许你可以在程序中写一些逻辑判断语句进而筛选处理这些问题,但是仍旧在数据较为庞大的情况下,会出现各种各样的问题,增加了开发者的开发难度,而数据库本身就制定了一些约束,从而保证了数据的完整且,有效,从而使开发者只需要更加注重于程序本身的设计,而不用花费过多的时间去处理数据上的一些细节问题

(3) 数据共享

常用来简单存储数据的 txt/excel 等均属于单一文件,并且都是无法共享的,只支持当前用户使用并且修改

数据库允许用户共享,不同的用户可以同时存取数据库中的数据,用户也可以用各种方式通过接口使用数据库,并提供数据共享

(4) 数据的安全性

在我们前者中,数据的修改是很随意的 但是在实际开发中,我们有时候需要面临,多个用户检索、修改同一文件中的数据,或者在并发情况下,写同一文件或者记录,而数据库基于锁等的一些技术便可以帮助我们解决这些问题

(5) 故障恢复

由于逻辑或者物理上的错误,导致了系统的错误操作,从而使得数据被破坏,如何快速恢复数据,我们上面的单一文件系统显然无法帮助我们解决问题,而数据库却有相关机制去弥补、处理相关问题

上面我们仅仅从几个常见的点分析了为什么使用数据库,当然远远不止这些,所以总的来说就是数据库其特殊的存储以及管理方式,既提高了效率,也极大的减少了开发人员的负担

总结一下:数据库 em… 是个好东西!

(三) 数据库系统概述

(1) 四个基本概念

A:数据(Data)

数据是信息的表现形式和载体,同样也是数据库中存储的基本对象

数据的定义:描述事物的符号记录

数据的种类:文本、图形、图像、音频、视频、学生的档案记录、货物的运输情况等

数据的语义:数据的含义称为数据的语义,数据与其语义是不可分的,这同样呼应了前面所说:“ 数据是信息的表现形式和载体 ”

B:数据库(Database)

定义:数据库(Database,简称DB)是长期储存在计算机内、有组织的、统一管理的、可共享的大量相关数据的集合

简单点说:数据库就是一个以某种有组织的方式存储的数据集合(理解为数据的仓库也可以),并且能为各种用户共享

特别特别要注意一点:例如 MySQL 、Oracle 等数据库软件不能被称作数据库,他们确切的叫法是 DBMS(数据库管理系统),当然了我们口语一般都习惯了,叫XXX数据库,从理论上来说,是不准确的,自行有个区分的概念就好了,怎么叫就你哈

C:数据库管理系统(DBMS)

朋友们,这几个货理论上叫做,数据库管理系统,要和数据库的概念区别好了喔

定义:它是位于用户与操作系统之间的一层数据管理软件,用于建立、使用和维护数据库,简称 DBMS(Database Management System)

看一下他的功能:

① 数据库定义功能
  • DBMS提供数据定义语言(Data Definition Language,DDL)来对数据库中的数据对象进行定义,指定其结构和约束等。
② 数据操纵功能
  • DBMS提供数据操纵语言(Data manipulation Language,DML)来实现对数据库的基本操作,包括查询数据库以获得所需数据、更新数据库以反映现实世界的变化等
③ 数据的组织存储管理
  • 分类组织、存储和管理各种数据,包括数据字典(存放数据库的定义、数据库运行时的统计信息等)、 用户数据、数据的存取路径等
  • 确定以何种文件结构和存取方式在磁盘上组织这些数据。
  • 实现数据之间的联系。
④ 数据库事务管理和运行管理(控制)
  • 对数据库的建立、运用和维护等进行统一管理、统一控制,保证数据的安全性、完整性、多用户的并发操作和发生故障后的系统恢复。
⑤ 数据库维护
  • 数据库数据的载入、转换数据库的转储、恢复数据库的重组和性能监视、分析

总结一下

  • 它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性
  • 用户通过 DBMS 访问数据库中的数据,数据库管理员也通过 DBMS 进行数据库的维护工作
  • 它可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库

D:数据库系统(DBS)

在计算机系统中引入数据库后的系统构成

数据库系统包括:① 数据库 ② 数据库管理系统(及其开发工具)③ 应用系统 ④数据库管理员

(2) 数据管理技术的产生和发展

数据管理,就是对数据进行分类、组织、编码、存储、检索和维护

数据管理技术的发展过程 ① 人工管理阶段(20世纪40年代中--50年代中)

  • 人工管理阶段,数据面向应用,且不能保存,不能共享,同时不具有数据独立性
  • 数据面向应用:数据需要由应用程序自己定义说明以及管理,也就是说,程序员需要自己规定数据的存储结构,方法,输入方式等等
  • 数据独立性:是指用户的应用程序与数据的逻辑结构和物理结构是相互独立的

② 文件系统阶段(20世纪50年代末--60年代中)

  • 文件系统管理数据,数据可以长期保存,同时具有了一定的共享性,但是不具有数据独立性

③ 数据库系统阶段(20世纪60年代末--现在)

(3) 数据库系统的特点

前面简单介绍了 人工管理阶段,以及文件系统阶段的一些优缺点,而数据库系统作为他们的进化产物,自然对前者的不足做出了一定的完善,下面简单先将其特点列出来

  • 数据结构化
  • 数据的共享性高,冗余度低,易扩充
  • 数据独立性高
  • 数据由DBMS统一管理和控制

A:数据结构化

数据结构化是数据库系统文件系统的根本区别。在文件系统中,独立文件内部的数据一般是有结构的,但文件之间不存在联系,因此从数据的整体来说是没有结构的

数据库系统虽然也常常分成许多单独的数据文件,并且文件内部也具有完整的数据结构,但是它更注意同一数据库中各数据文件之间的相互联系

简单的认为就是:整体结构化+ 数据结构化(数据模型)

B:数据的共享性高,冗余度低,易扩充

数据库系统从整体角度看待和描述数据,数据面向整个系统,可以被多个用户、多个应用共享使用

减少了数据冗余,同时节约存储空间,避免数据之间的不相容性与不一致性,使系统易于扩充

这样的特点不仅,减少了数据冗余,同时节约存储空间,也避免数据之间的不相容性与不一致性,使系统易于扩充

C:数据独立性高

① 物理独立性

  • 指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的,即:当数据的物理存储改变了,应用程序不用改变

② 逻辑独立性

  • 指用户的应用程序与数据库的逻辑结构是相互独立的 数据的逻辑结构改变了,用户程序也可以不变
  • 数据独立性是由DBMS的二级映像功能来保证的

③ 数据由DBMS统一管理控制

  • 数据的安全性(Security)保护
  • 数据的完整性(Integrity)检查
  • 并发(Concurrency)控制
  • 数据库恢复(Recovery)

(四) 数据库系统结构

从数据库管理系统角度看,数据库系统通常采用三级模式结构,是数据库系统内部的系统结构

从数据库最终用户角度看(数据库系统外部的体系结构),数据库系统的结构分为:

  • 单用户结构
  • 主从式结构
  • 分布式结构
  • 客户/服务器
  • 浏览器/应用服务器/数据库服务器多层结构等

(1) 几个基本概念

A:“型” 和“值” 的概念

型(Type):对某一类数据的结构和属性的说明

值(Value):是型的一个具体赋值

例如,员工记录定义为(编号,姓名,性别,部门,年龄,籍贯)这样的记录型

而(20200417,汤姆,男,技术部,40,北京)则是该记录型的一个记录值

B:模式(Schema)

模式是数据库中全体数据的逻辑结构和特征的描述(数据的结构和联系),它仅仅涉及到型的描述,不涉及到具体的值,并且模式是相对稳定的

C:实例(Instance)

模式的一个具体值,反映数据库某一时刻的状态同一个模式,可以有很多实例,实例随数据库中的数据的更新而变动

模式是相对稳定的,而实例是相对变动的,因为数据库中的数据是在不断更新。模式反映的是数据的结构及其联系,而实例反映的是数据库某一时刻的状态。

学生表:

课程表:

中间表(可能叫法不是很准确,不过能理解意思即可)

分别看完模式和实例的配图,这两者的概念就很好区分了,就比如上例中,就是一个学生选课的数据库模式,其中包含学生的记录,还有课程的记录,以及学生选课的记录,而下面我随便举了一些例子,例如他是 2020年的学生选课数据库实例,当然前面还有2019年的 2018年的 等等,每个实例就是不同的了,虽然都是学生选课数据库模式

(五) 数据库系统的三级模式结构

数据库系统分为三级模式,简单做了一个图,让大家看起来直观一点,当然啦,大家最好先去简单看一下下面概念的介绍再回过头食用 ~

先讲模式,再讲上下两个

(1) 模式(逻辑模式)

定义数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图,综合了所有用户的需求,同时一个数据库只有一个模式

举个例子:我的数据库中,存在很多关系模式,例如用户关系模式中(用户编号,用户名称),权限关系(权限编号,权限名称)等,数据库中所有关系模式的集合就组成了逻辑模式

模式所处位置(三层模式中):是数据库系统模式结构的中间层

与数据的物理存储细节和硬件环境无关

与具体的应用程序、开发工具及高级程序设计语言无关

(2) 外模式(子模式/用户模式)

定义:数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述,是与某一应用有关的数据的逻辑表示

外模式所处位置(三层模式中):介于模式与应用之间

模式外模式的关系:一对多,外模式通常是模式的子集 (看图记忆就行了 - - ),不同的外模式反映了不同的用户的应用需求、看待数据的方式、对数据保密的要求

外模式应用的关系:一对多,同一外模式也可以为某一用户的多个应用系统所使用,但一个应用程序只能使用一个外模式

(3) 内模式 (存储模式)

是数据物理结构和存储方式的描述,它定义了数据库内部记录类型、记录寻址技术、索引和文件的组织方式、以及数据控制方面的内容

数据在数据库内部的表现方式:

  • 记录的存储方式(顺序存储,按照B树结构存储,按hash方法存储)
  • 索引的组织方式
  • 数据是否压缩存储
  • 数据是否加密
  • 数据存储记录结构的规定
  • 一个数据库只有一个内模式

网图,侵删

(六) 数据库的二级映像

这二级映像分为:

  • 外模式与模式之间的映像
  • 模式和内模式的映像

(1) 外模式与模式之间的映像

保证了数据的逻辑独立性

模式改变时,数据库管理员修改有关的外模式/模式映像,使外模式保持不变

应用程序是依据数据的外模式编写的,从而应用程序不必修改保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。

(2) 模式和内模式的映像

保证了数据的物理独立性 当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映像,使模式保持不变,应用程序不受影响保证了数据与程序的物理独立性,简称数据的物理独立性。

(3) 二级映像总结

  • 保证了数据库外模式的稳定性
  • 从底层保证了应用程序的稳定性,除非应用需求本身发生变化,否则应用程序一般不需要修改
  • 数据与程序之间的独立性,使得数据的定义和描述可以从应用程序中分离出去
  • 数据的存取由DBMS管理,用户不必考虑存取路径等细节,简化了应用程序的编制,大大减少了应用程序的维护和修改

(七) 数据库系统的组成

数据库,数据库管理系统(及其开发工具),应用系统,数据库管理员,硬件平台及数据库 ,软件 ,人员

这一块,不是很重点,也比较好理解,就不细细展开说了 知道这几个点就好了

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 理想二旬不止 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • (二) 为什么使用数据库?
    • (1) 查询速度
      • (2) 数据完整有效
        • (3) 数据共享
          • (4) 数据的安全性
            • (5) 故障恢复
            • (三) 数据库系统概述
              • (1) 四个基本概念
                • A:数据(Data)
                • B:数据库(Database)
                • C:数据库管理系统(DBMS)
                • D:数据库系统(DBS)
              • (2) 数据管理技术的产生和发展
                • (3) 数据库系统的特点
                  • A:数据结构化
                  • B:数据的共享性高,冗余度低,易扩充
                  • C:数据独立性高
              • (四) 数据库系统结构
                • (1) 几个基本概念
                  • A:“型” 和“值” 的概念
                  • B:模式(Schema)
                  • C:实例(Instance)
              • (五) 数据库系统的三级模式结构
                • (1) 模式(逻辑模式)
                  • (2) 外模式(子模式/用户模式)
                    • (3) 内模式 (存储模式)
                    • (六) 数据库的二级映像
                      • (1) 外模式与模式之间的映像
                        • (2) 模式和内模式的映像
                          • (3) 二级映像总结
                          • (七) 数据库系统的组成
                          相关产品与服务
                          对象存储
                          对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档