数据库系统概论学习笔记(一):基本概念

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/credolhcw/article/details/54988591

  我只知道数据库很biang,为什么biang?好吧,从新过一遍说不定就知道了。教材:《数据库系统概论》第四版,王珊、萨师煊,高等教育出版社


最最最基本的概念(绪论)


数据、数据库、数据库管理系统、数据库系统

数据Data):数据是数据库中的基本对象,作为数据的并不只是数字。任何事物都可以作为数据,套用尤瓦尔·赫拉利的《未来简史》的话说,信数据者得永生(这样的套用有点小牵强啊<( ̄3 ̄)> !)。

数据库Database,简称DB):存放数据的仓库,听说还要打上有组织、可共享、永久有效的标签。

数据库管理系统Database Management System,简称DBMS):首先,DBMS是一个软件,而且很复杂。其次,她位于User和操作系统之间。最后,应该具有以下功能:
  ①、数据定义,提供数据定义语言Data Definition Language,简称DDL
  ②、数据组织、存储和管理
  ③、数据操纵,提供数据操纵语言Data Manipulation Language,简称DML
  ④、数据库的事物管理和运行管理
  ⑤、数据库的建立和维护功能
  ⑥、DBMS与其他软件或系统通信的功能
  
数据库系统Database System,简称DBS):这是一个统称,在DBS中包括了:
  ①、DB
  ②、DBMS
  ③、相应的开发应用环境
  ④、数据库管理人员(Database Administrator,简称DBA)


使用数据库系统有神马好处咧?

有没有发现我其实是在做课后习题O(∩_∩)O

数据管理技术发展历程:人工管理→文件系统→数据库系统,从整体上看当然是越来越好啦啦啦啦。

人工管理:反正我没经历过这个时代,书上说是20世纪50年代中期以前,那就是了。用纸带、卡片什么的存储,一不小心就给老鼠啃了。所以数据不保存(我觉得光知道这一条就够了),必然say goodbye。

文件系统:书上说时20世纪50年代后期到60年代中期,有磁盘、磁鼓可以长期保存并且直接存取,也有相应的管理软件了(嗯,当时我爸妈都还在玩泥巴,完全无法想象的年代)。总的来说,文件系统的进步就是数据可以长期保存了。

对比现在,人工管理、文件系统一点好处都没有ヽ(ˋДˊ)ノ!!!

数据库系统:比较而言,从头到脚都是好处(@^_^@),最大的好处就是”共享“!!!

  ①、数据结构化,这是与文件系统的本质区别!!!数据库系统中的数据不再针对某一应用,而是面向全组织;同时数据之间是具有联系的。所以在数据库系统中不仅要描述数据,而且要描述数据之间的关系。
  
  ②、数据的共享性高、冗余度低、易扩充。正是由于共享性高,使数据的冗余度变低,从而更容易避免数据之间的不相容性与不一致性,这就使得数据库更有弹性,易扩充。
  
  ③、数据独立性高(这是一个常用术语,目的是让外行人觉得逼格非常之高)。主要包括两个方面分别是物理独立性和逻辑独立性(个人觉得计算机的任何一个领域都要从物理和逻辑两个方面同时考虑呢)。数据独立性是由DBMS的二级映像功能来保证的
    物理独立性:简单说就是用户应用程序不需要知道数据是以怎样的物理方式存储的。
    数据独立性:简单说就是用户应用程序不需要知道数据的逻辑模式结构是怎样的。

扫描二维码关注公众号,回复: 3783030 查看本文章

  ④、数据由DBMS统一管理和控制。为了保证数据的并发共享,DBMS必须提供数据安全性(Security)保护、数据完整性(Integrity)检查、并发(Concurrency)控制、数据库恢复(Recovery)等功能。


DBS的核心和基础 —— 数据模型(Data Model)

  数据模型也是一种模型,具有模型的共性,即对现实世界的数据特征的抽象。其作用是用来描述数据、组织数据和对数据进行操作。

数据模型的3要素

  ①、数据结构,描述数据库的组成对象和对象间的联系。是刻画数据库性质的最重要方面,因此人们通常参照数据结构的类型来为数据模型命名,如层次模型、网状模型和关系模型。
  ②、数据操作,对数据库中各种对象的实例允许的操作集合,是对系统动态特性的描述。
  ③、数据的完整性约束条件,保证数据的正确、有效、相容。

数据模型根据应用目的可分为两类。第一类是概念模型(Conceptual Model),主要用于数据库设计;第二类是逻辑模型和物理模型。


从现实世界到信息世界 —— 概念模型

  概念模型是现实世界到信息世界的第一层抽象,用于信息世界的建模。同时也是唯一能够让外行人觉得他们有能力掌控数据世界的一个领域了╮(╯▽╰)╭。So,让我们更有逼格一点吧,作为一个PM(Programmer Monkey,请不要理解成Project Manager),能够迅速提高逼格的就是掌握专业术语和简称。

实体Entity):描述的对象,可以是看得见的人、物,也可以是看不见的关系。比如,某个学校,学校里的学生,老师,课程都可以看做实体。

属性Attribute):实体所具有的的特性。比如,学生的姓名,年龄,性别,学号。

实体型Entity Type):我个人理解就是用实体名及其属性对同一类实体的抽象。比如,对学生的抽象,学生(学号,姓名,性别)就是一个实体型。

实体集Entity Set):同一类型的实体的集合就是实体集。全体学生就是一个实体集。

Key):唯一标识实体的属性集,我有的时候也称其为“键”。比如,学生的学号就可以作为码,因为学号可以唯一标识一个学生。

Domain):我觉得可以理解成数学中的“定义域”,表示一个值得集合。就以上述实体集“学生”为例,“学号”的域可以定义为“8位整数”,“姓名”的域可以定义为“字符串的集合”,“性别”的域可定义为(男,女,不男不女…)。

联系Relationship):顾名思义,包括事物内部联系和事物之间的联系。主要有一对一、一对多、多对多三种联系。

E-R图Entity-Relationship Diagram):是概念模型的一种表示方法,用方框表示实体型,椭圆形表示实体型的属性,菱形表示联系。


DBMS的实现 —— 逻辑模型

依据教材概述一下层次模型、网状模型、关系模型,至于面向对象模型和对象关系模型我也不知道今后我会不会接触到,呵呵呵呵……另外,书中还提到“格式化模型”这一概念,在逻辑模型中层次模型网状模型统称为格式化模型。

等级鲜明 —— 层次模型(Hierarchical Model)

  数据结构:层次模型是树形结构,所以表示一对一或者一对多的联系非常方便自然,每一个结点表示一个实体型。那么层次模型就不能表示多对多的联系了吗?当然能,只是需要付出更多的代价。通过冗余结点法或者虚拟结点法就可以做到,正如这两种方法名字描述一样,层次模型描述多对多关系时需要将这类关系先分解成一对多的关系,用数倍于实体数量的空间来描述
  
  数据操纵及完整性约束:主要有查询插入删除更新等操作。
    执行“插入”操作时,没有双亲结点就不能插入子结点。
    执行“删除”操作时,当删除双亲结点时必须同时删除其子结点。
  
  存储结构
    邻接法,按照先序遍历的顺序将结点存储在连续的物理空间内。
    链接法,用指针来反应结点之间的联系。每个结点设两个指针“L_P”和“R_P”,L_P指向第一个子女结点,R_P指向兄弟节点。可以参考任何一本关于数据结构的书中树形结构章节的子女-兄弟表示法
    
  优点
    树形结构最简单,谁都看得懂。
    查询效率高,因为树形的存储结构决定了其查询效率O(mlogn)。
    有良好的完整性支持。
  缺点
    描述多对多关系必产生冗余
    程序复杂
    命令趋于程序化
  

心乱如麻 —— 网状模型(Network Model)

  数据结构:网状模型是一种比层次模型更普遍的结构,它去掉了层次模型的两个限制,即允许多个结点没有双亲,允许结点有多个双亲。同层次结构一样每一个结点表示一个结点型。类似一个有向图
  
  数据操纵及完整性约束
    支持“”的概念,唯一标识记录的码不可重复。
    保证双亲和子女间是一对多的联系。
    可以支持双亲和子女间某些约束条件,比如没有双亲就不能插入子女。

  存储结构:一般通过链接法

  优点
    因为支持多对多联系,相较层次模型,能够更直接的描述现实世界。
    同时继承了层次模型的优点,相较于关系模型存储效率高
  缺点
    结构复杂,和层次结构比一眼就看出来了。
    DDL、DML不仅复杂,而且需要嵌入到高级语言中,不容易使用
  

建立在严格数学概念的基础上的模型 —— 关系模型(Relational Model)

  数据结构二维表Table
  
  高逼格术语
    关系Relationship):在关系模型中,每一个关系就是一张二维表,就是我们现在常用的table
    元组Tuple):一条记录就是一个元组。
    分量:元组(记录)中的一个属性值
    关系模式:对关系的描述,同前文概念模型中的实体型
  
  数据操纵及完整性约束:主要有查询插入删除更新等操作。
    这些操作必须满足实体完整性参照完整性用户定义完整性这三大类完整性约束条件。

  存储结构:二维表

  优点
    建立在严格的数学概念上。(研究一下“关系演算”就知道为什么严格了,反正我浏览一遍后的状态就是不明觉厉○_○)
    概念单一,只有表嘛!!!
    透明,用户并不需要知道关系模型的存取路径。
  缺点
    查询效率往往不如格式化模型,因此必须进行查询优化


三加二,这不是那什么饼干 —— 数据库系统的模式结构

模式Schema):数据库中全体数据的逻辑结构和特征的描述,它仅仅涉及到型的描述,不涉及到具体的值。模式的一个具体的值是一个实例Instance)。模式是相对稳定的,而实例是不断变动的。模式反映的是数据的结构及其联系,而实例是反映数据库某一时刻的状态。

三级模式

  外模式External Schema):亦称子模式Subschema)或者用户模式
    可以看成是数据库的最终用户接口
    外模式通常是模式的子集,一个数据库可以有多个外模式
    每一个应用程序只能对应一个外模式。
    DBMS可以通过严格定义外模式,让最终用户仅能访问其权限所允许的数据,从而有力的保证数据库安全性
  
  模式Schema):也称逻辑模式
    是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
    是三级模式结构的中间层,既不涉及数据的物理存储细节和硬件环境,也与具体应用程序、开发工具及高级程序设计语言无关。
    一个数据库只有一个模式。我使用较多的是MySQL,据我所知MySQL的database和schema是一个概念。
    定义模式时不仅要定义数据的逻辑结构,而且要定义数据之间的联系,以及与数据有关的安全性、完整性要求。
    
  内模式Internal Schema):也称存储模式Storage Schema)。
    是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。
    一个数据库只有一个内模式

二级映像

  外模式/模式映像:定义外模式与模式之间的关系。当模式改变时,由DBA对各个外模式/模式映像做相应修改,从而使外模式保持不变,进而无需改变应用程序。这就保证的数据与程序的逻辑独立性,简称数据的逻辑独立性
  
  模式/内模式映像:由于模式和内模式都是唯一的,所以该映像也唯一。当数据库的物理存储结构改变了,DBA仅需对模式/内模式映像进行调整,就可以是模式不变,从而应用程序也无需改变。保证了数据与程序的物理独立性,简称数据的物理独立性

猜你喜欢

转载自blog.csdn.net/credolhcw/article/details/54988591