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


    (一) 引言

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

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

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

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

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

    (1) 查询速度

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

    ......
    "Eminem",male,1972,"USA"
    "Rihanna",female,1988,"Barbados"
    "Taylor Swift",1989,female,"USA"
    "Aavril Lavigne",1984,female,"Canada"
    ......
    

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

    (2) 数据完整有效

    "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管理,用户不必考虑存取路径等细节,简化了应用程序的编制,大大减少了应用程序的维护和修改

    (七) 数据库系统的组成

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

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

    (八) 结尾

    如果文章中有什么不足,欢迎大家留言交流,感谢朋友们的支持!

    如果能帮到你的话,那就来关注我吧!如果您更喜欢微信文章的阅读方式,可以关注我的公众号

    在这里的我们素不相识,却都在为了自己的梦而努力 ❤

    一个坚持推送原创开发技术文章的公众号:理想二旬不止

  • 相关阅读:
    One SQL to Rule Them All – an Efficient and Syntactically Idiomatic Approach to Management of Streams and Tables(中英双语)
    Spark 公共篇-InterfaceStability
    ANTLR v4 专业术语集
    Apache Spark as a Compiler: Joining a Billion Rows per Second on a Laptop(中英双语)
    Deep Dive into Spark SQL’s Catalyst Optimizer(中英双语)
    What’s new for Spark SQL in Apache Spark 1.3(中英双语)
    Scala 隐式(implicit)详解
    Introducing Apache Spark Datasets(中英双语)
    darknet-yolov3训练自己的数据集(转)
    NVIDIA显卡,显卡驱动版本,CUDA版本,cudnn版本之间兼容关系及如何选择
  • 原文地址:https://www.cnblogs.com/ideal-20/p/12724533.html
Copyright © 2020-2023  润新知