Skip to content

Latest commit

 

History

History
275 lines (145 loc) · 12.7 KB

1. 数据库基础.md

File metadata and controls

275 lines (145 loc) · 12.7 KB

一、数据库系统概论

Data:数据,是数据库中存储的基本对象,是描述事物的符号记录。

Database:数据库,是长期储存在计算机内、有组织的、可共享的大量数据的集合。

DBMS:数据库管理系统,是位于用户与操作系统之间的一层数据管理软件系统,用于科学地组织、存储和管理数据、高效地获取和维护数据。

DBS:数据库系统,指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统、应用系统、数据库管理员(DBA)构成。

数据库系统DBS:由数据库DB、数据库管理系统DBMS、应用系统和数据库管理员构成。

数据库就是一个存储结构化数据的仓库。

数据库系统由数据库、数据库管理系统、应用系统和数据库管理员构成。

关系数据库

关系数据库是创建在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。

几乎所有的数据库管理系统都配备了一个开放式数据库连接(ODBC)驱动程序,令各个数据库之间得以互相集成。

典型代表有:MySQL、Oracle、Microsoft SQL Server、Access、PostgreSQL、DB2、MariaDB

非关系型数据库 NoSQL

非关系型数据库也被称为 NoSQL 数据库,NoSQL 并不是某个具体数据库,它泛指所有非关系型数据库。

非关系型数据库种类有很多,我们列举其中较为流行的几种。

  1. 键值(Key-Value)存储数据库

键值数据库主要是使用一个哈希表,表中有一个特定的键和一个指针指向特定的数据。Key/value 模型的键值数据库的优势在于,通过键的 hash 码可以快速查询到 value,并且能够应对高并发。

市面上成熟的产品有,Memcached、Redis、MemcacheDB、Berkeley DB。前两个可能比较有名,做缓存的数据库。

  1. 列存储(Column-oriented)数据库

列存储数据库又被称为面向可扩展性的分布式数据库,它反转了传统的行存储数据库。

最典型的产品应用就是,Hbase,大数据存储用的非常多。

  1. 面向文档数据库

文档数据库是一种非关系数据库,旨在将半结构化数据存储为文档,其中文档包括 XML、YAML、JSON、BSON、office 文档等。

简而言之,就是将数据保存到以上类似格式的文档中,数据库中的每个记录都是以文档形式存在的,相互之间不再存在关联关系。

典型的应用就是,MongoDB、CouchDB。

数据库系统结构

三级模式、二级映象

数据库的三级系统结构:外模式模式内模式

内模式:又称为存储模式,是对数据库物理结构和存储方式的描述,是数据在数据库内部的表示方式。一个数据库只有一个内模式

模式:是对数据库中全体数据的逻辑结构和特征的描述。

外模式:又称为子模式或用户模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图。通常是模式的子集。一个数据库可有多个外模式

二级映像:外模式/模式映像、模式/内模式映像。

数据库三级模式通过二级映象在 DBMS 内部实现这三个抽象层次的联系和转换。

外模式面向应用程序, 通过外模式/模式映象与逻辑模式建立联系, 实现数据的逻辑独立性。 模式/内模式映象建立模式与内模式之间的一对一映射, 实现数据的物理独立性。

数据模型(没整理)

数据模型:是用来抽象、表示和处理现实世界中的数据和信息的工具,是对现实世界的模拟,是数据库系统的核心和基础。

数据模型组成3元素有数据结构数据操作完整性约束

常见的数据模型包括:关系、层次、网状、面向对象、对象关系映射等几种。

关系模型的完整性约束包括:实体完整性参照完整性用户定义完整性

3种数据模型

1.层次模型

定义:层次数据模型是用树状<层次>结构来组织数据的数据模型。

其实层次数据模型就是的图形表示就是一个倒立生长的树,由基本数据结构中的树(或者二叉树)的定义可知,每棵树都有且仅有一个根节点,其余的节点都是非根节点。每个节点表示一个记录类型对应与实体的概念,记录类型的各个字段对应实体的各个属性。各个记录类型及其字段都必须记录。

1.有且只有一个结点没有双亲结点,这个结点称为根节点;2.根以外的其它结点有且仅有一个双亲结点。

在这里插入图片描述

2.网状模型

定义:用有向图表示实体和实体之间的联系的数据结构模型称为网状数据模型。

其实,网状数据模型可以看做是放松层次数据模型的约束性的一种扩展。网状数据模型中所有的节点允许脱离父节点而存在,也就是说说在整个模型中允许存在两个或多个没有根节点的节点,同时也允许一个节点存在一个或者多个的父节点,成为一种网状的有向图。因此节点之间的对应关系不再是1:n,而是一种m:n的关系,从而克服了层次状数据模型的缺点。

1.允许一个以上的结点无双亲;2.一个结点可以有多余一个的双亲

在这里插入图片描述

3.关系模型

关系型数据模型对应的数据库自然就是关系型数据库了,这是目前应用最多的数据库。

**定义:**使用表格表示实体和实体之间关系的数据模型称之为关系数据模型。

关系型数据库是目前最流行的数据库,同时也是被普遍使用的数据库,如MySQL就是一种流行的数据库。支持关系数据模型的数据库管理系统称为关系型数据库管理系统。在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成。

在这里插入图片描述

  • 关系(Relation):一个关系对应通常所说的一张表。
  • 元组(Tuple):表中的一行即为一个元组。
  • 属性(Attrubute):表中的一列即为一个属性,给每一个属性起一个名称即属性名。
  • 码(Key):表中的某个属性组,它可以唯一确定一个元组。
  • 域(Domain):属性的取值范围。
  • 分量:元组中的一个属性值。
  • 关系模式:对关系的描述,如:学生(学号,姓名,年龄,性别,系,年级)
  • 关系数据库: 依照关系模型建立的数据库称为关系数据库。 它是在某个应用领域的所有关系的集合。
  • 主键: 能够唯一地标识一个元组的属性或属性组称为关系的键或候选键。 若一个关系有多个候选键则可选其一作为主键(Primary key)。
  • 外键:如果一个关系的一个或一组属性引用(参照)了另一个关系的主键,则称这个或这组属性为外码或外键(Foreign key)。

关系最基本的规范条件:关系的每一个分量必须是一个不可分的数据项,不允许表中还有表。

在这里插入图片描述

3种约束完整性

关系数据模型定义了三种约束完整性:实体完整性、参照完整性以及用户定义完整性。

1.实体完整性

实体完整性是指实体的主属性不能取空值

实体完整性规则规定实体的所有主属性都不能为空。实体完整性针对基本关系而言的,一个基本关系对应着现实世界中的一个主题,例如上例中的学生表对应着学生这个实体。现实世界中的实体是可以区分的,他们具有某种唯一性标志,这种标志在关系模型中称之为主码,主码的属性也就是主属性不能为空。

  1. 一种定义为列级约束条件,另一种定义为表级约束条件。在create table中用primary key定义。
  2. 完整性检查和违约处理。

2.参照完整性

在关系数据库中主要是值的外键参照的完整性

若A关系中的某个或者某些属性参照B或其他几个关系中的属性,那么在关系A中该属性要么为空,要么必须出现B或者其他的关系的对应属性中。如上表中的选课关系的stu_id和cour_id分别是参考学生和课程的外键,那么对于现实的系统而言,stu_id和cour_id必须分别出现在学生和课程关系中,这就是外键参考的完整性,同时删除的时候根据设置的不同有不同的处理方式。

  • 在create table中用foreign key短语定义哪些列为外码列,用references短语指明这些外码参照哪些表的主码。
  • 对被参照表和参照表进行增删改查操作时很有可能破坏参照完整性,必须进行检查。

img

  • 违约处理:reject(拒绝执行)、cascade(级联)、set-null(设置为空)

img

3.用户定义完整性

用户定义完整性是针对某一个具体关系的约束条件

它反映的某一个具体应用所对应的数据必须满足一定的约束条件。例如,某些属性必须取唯一值,某些值的范围为0-100等。

列值非空:NOT NULL短语

create table sc(
 sno char(7) not null,
 sname char(10) not null);

列值唯一:UNIQUE短语

create table student
    (sname varchar(50) unique,
 sage int);

check:指定列值应该满足的条件

create table student
   (sage int check(sage>19),
 ssex char(10) check(ssex in ('','')));

例如:

学生(学号,姓名,课程号,性别,....) 课程(课程号,课程名,学分); 选修(学号,课程名,成绩)

这里学生的性别只能取“男”,“女”

学分只能取1-...分 成绩只能取1-100分

完整性约束命名子句

提供constraint,用来对完整性命名

constraint <完整性约束条件名> [PRIMARY KEY短语|FOREIGN KEY短语|CHECK短语]

概念模型、逻辑模型、物理模型

  • 数据库及数据仓库模型设计的三个主要步骤

概念模型设计 , 逻辑模型设计 , 物理模型设计 是数据库及数据仓库模型设计的三个主要步骤

概念模型:也称信息模型,是按用户的观点来对数据和信息建模,主要用于数据库设计。

逻辑模型:是按计算机系统的观点对数据建模,用于DBMS实现。

物理模型:是对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法,在磁盘或磁带上的存储方式和存取方法,是面向计算机系统的。


实体和属性:客观存在并可相互区别的事物称为实体。实体所具有的某一特性称为属性。

实体型之间的联系分为一对一、一对多和多对多三种类型。

E-R图:即实体-关系图,用于描述现实世界的事物及其相互关系,是数据库概念模型设计的主要工具。

关系模式:从用户观点看,关系模式是由一组关系组成,每个关系的数据结构是一张规范化的二维表。

型/值:型是对某一类数据的结构和属性的说明;值是型的一个具体赋值,是型的实例。

数据库模式:是对数据库中全体数据的逻辑结构(数据项的名字、类型、取值范围等)和特征(数据之间的联系以及数据有关的安全性、完整性要求)的描述。


四、SQL

SQL:结构化查询语言的简称, 是关系数据库的标准语言。

SQL 是一种通用的、 功能极强的关系数据库语言, 是对关系数据存取的标准接口, 也是不同数据库系统之间互操作的基础。集数据查询、数据操作、数据定义、和数据控制功能于一体。

数据定义:数据定义功能包括模式定义、表定义、视图和索引的定义。

嵌套查询:指将一个查询块嵌套在另一个查询块的 WHERE 子句或 HAVING 短语的条件中的查询。

SQL 数据定义语句的操作对象有:模式、表、视图和索引。

SQL 数据定义语句的命令动词是:CREATE、DROP 和 ALTER。

RDBMS 中索引一般采用 B+树或 HASH 来实现。

索引可以分为唯一索引、非唯一索引和聚簇索引三种类型。

img