*写在文前:本文为不定时完善的学习笔记,内容来源广泛,仅供学习交流,相关版权(若存在)则归原作者所有,部分来源将在文中标明,禁止用于任何商业用途。
*声明:文中给出的代码、解决方案和介绍等 往往 并非最优,源于个人学习,不定时更新完善,也鼓励读者多多思考,提出质疑,出现问题请在评论区指出 并 宽容看待,本人会不定期修正,感谢您的理解。
壹、数据库的4个基本概念
一、数据(data)
数据库中存储的基本对象 自然是写到名字中的“数据”,而这里的“数据”不只是数字,也可以是图片、声音、视频等等。
描述事物的符号记录都可被称为数据。
二、数据库(DB)
存储珍贵数据的“仓库”,它特点可以概括为:
1、永久储存:不会轻易丢失,可长期存储。
2、有组织:以一定方式存储,保证使用便捷的同时避免数据不必要重复存储以减少整体大小(即较小冗余),且拥有不完全依赖应用程序的独立性等。
3、可共享:可供多方、多程序共同拥有,甚至同时使用(并发),以方便扩充的同时避免数据的重复存储(即避免不必要冗余)。
三、数据库管理系统(DBMS)
管理数据库的一套系统,包括软件和操作语言。它们能提供包括:数据定义、数据组织/存储和管理、数据操纵、数据库的事务管理和运行管理以及数据库的建立和维护等。
在学习数据库的过程中我们就将扮演 借助数据库管理系统操作数据库的“数据库管理员”,而数据库管理系统自然也就是我们将要着重学习的工具。
四、数据库系统(DBS)
也就是对 数据库、数据库管理系统、应用程序和数据库管理员(即操作员) 组成的运维系统的称呼。
贰、数据模型
数据模型是对现实世界数据特征的抽象,是一种能比较真实地模拟世界、容易为人所理解且便于在计算机上实现的模型的统称。具体介绍请见下。
概念引入-型与值:
型 | 指对某一类数据的结构和属性的说明。 |
值 | 是型的一个具体赋值。 |
一、概念模型(定义简介)
即按用户的观点来对数据和信息建模,用于数据库设计为主(E-R图(即实体-联系图) 等,此部分详见“数据库设计”)。
概念引入-概念模型中 相关部分:
实体 | 客观存在并可相互区别的事物。(如:某一个学生是一个实体) |
属性 | 实体所具有的某一特性。(如:学生实体往往有姓名这一属性) |
码(或称键) | 唯一标识实体的属性集(所有码都是备选码,可从中自定一个主码以便于查找等)。(如:每个人都可以有且有不重复的身份证号等) |
!实体型 | 用实体名及其属性名集合来抽象和刻画同类实体(是对这类结构和属性的说明,类似于自定的一个格式模板)。(如:如学生作为实体型,可以由“学生”-实体名、“姓名”-属性名、“性别”-属性名,等等结合组成。) |
实体集 | 同一类型实体的集合。(如:一个个单独的学生实体同属于“学生”这一实体集) |
联系 | 实体内部通常指 属性之间的联系,实体之间通常指 不同实体集之间的联系。(如:“学生”实体集与“老师”实体集之间的联系) |
二、逻辑模型(模型较多,仅列举3个常用)
*1、层次模型(类似 树 的结构):【*不适用多对多联系的描述】
有且只有一个结点(根节点)没有双亲结点 且 根以外其他结点有且只有一个双亲结点。
*2、网状模型(允许结点任意互连):【*库越大越复杂,越难使用】
允许一个以上的结点无双亲 且 一个节点可以有多于一个的双亲。
!3、关系模型(最常用,往往用二维表存储关系):【*查询效率相对较低】
概念的引入-逻辑模型中 相关部分:
关系 | 一个关系对应通常说的一张表。(其每个分量都必须是一个不可分的数据项,使关系表达完整但不包含多余数据) |
元组 | 表中的一行。(往往也就是一条数据) |
属性 | 表中的一列,每个属性都有一个属性名。(如:定义学生实体型中可以有姓名属性等) |
!码(或称键) | 可唯一确定一个元组的表中属性组。(如:定义每个学生都有且有不重复的身份证号属性 或 多个属性组合成可满足条件的属性组等)【更多具体介绍见下一章笔记】 |
域 | 一组具有相同数据类型的值的集合,即属性的取值范围。(如:定义一个年龄属性,其取值范围可以是1~90等) |
分量 | 元组中的一个属性值。(是指某一条数据中的一个属性的具体值) |
关系模式 | 对关系的描述。 |
(从用户观点看)由一组关系(每个关系都是一张规范化的二维表)组成。
为保证关系模型的正常、稳定,避免出现数据的损坏影响查找。我们在对关系模型数据库进行查询、插入、删除和更新数据这类操作的时候,就要注意一些规范了。而这个规范就被称为:
关系模型完整性约束条件:
- 实体完整性:元组中所有主属性(即主码中涉及的所有属性)都应完整,属性不空缺。
- 参照完整性:关系中 参照中的数据要能与被参照中的数据相互对应,参照不对空。
- 用户定义的完整性:你(操作者)为达到一定合理效果而自行定义的约束,联系不非法。
叁、E-R图(实体-联系图)
一、介绍
实体-联系图,就是一种以相对直观的图画形式,展现并描述实体与实体间联系的一种方式。
*注:通过E-R图描述 关系 时应经过 联系结点(哪怕是描述实体集内部关系也同要)。
基本要素描绘方式:
实体集:▭(用方框表示,内部填写实体名)
属性:◯(用椭圆表示,内部填写属性名)
联系:◊(用菱形表示,内部填写联系名)
它们用“—”直线相连(直线边应写上代表其中联系的特点,如:对多则用n、m等表示,对单则用1表示。
二、两个简单的E-R图:(并不完整,仅用于简单示意)
1、实体集与实体集间的联系:
(一个带有一个属性的实体集与另一个带有两个属性的实体集产生 一对多的联系)
2、实体集内部联系:
(一个带有一个属性的实体集与自身内部产生 一对多/多对一 联系(双线))
!肆、数据库系统的三级模式结构
一、介绍
二映像三级模式示意图
数据库系统的二级映像三级模式结构,是我们需要了解的重要结构,以下是相关概念的具体介绍:
二、三模式
模式 | 也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图(不涉及数据的物理存储细节和硬件环境且与数据库管理系统无关) |
外模式 | 也称子模式/用户模式,是所有用户都能看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某应用有关的数据的逻辑表示。 |
内模式 | 也称存储模式,一个数据库只有一个。是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。 |
三、二级映像
两层映像即:外模式/模式映像 和 模式/内模式映像,它们使得数据库中那个的数据拥有较高逻辑独立性和物理独立性,下面是相关介绍,清结合上方示意图理解:
1、外模式/模式映像:
应对场景:模式或外模式改变
作用:在需要改变模式或外模式时,只需改变映像(类似改变映射的对应关系)即可在模式改变时保持外模式不变 或 外模式改变而不必改变模式,而应用又是根据外模式编写且只与之对应的,所以大幅减少了协调难度和工作量,使两者相对独立,即:保证了数据与程序的逻辑独立性。
2、模式/内模式映像:
应对场景:数据库的存储结构改变
作用:在改变数据库存储结构(包括但不限于改变本文提到的数据模型等)时,只需改变模式/内模式映像(类似改变映射的对应关系)即可保持模式不必改变 或 模式改变时内模式不必改变。而在内模式之上模式的存在又隔绝了应用与数据的直接联系,即保证了数据与程序的物理独立性。
四、概括:
拥有二级映像三模式结构的数据库系统就可以保证在修改 模式、外模式、内模式 其中任何一者时都只需要改变映像和改动本身即可,而不必牵连改变应用 或 数据库等,同时也提高了数据库系统的安全性和稳定性,便于管理和维护。
本章结束,感谢阅读。
参考资料:
[1]王珊,萨师煊.数据库系统概论[M].北京:高等教育出版社,2014.9