数据库 - 数据库系统原理(基础)

文章目录

  • 一,数据库与数据库管理系统定义
  • 二,数据视图(View of Data)
    • 1,数据抽象(Levels of Abstraction)
    • 2,实例和模型(Instances and Schemas)
    • 3,数据库系统的模式结构
    • 4,物理独立性和逻辑独立性
      • 物理数据独立性(Physical Data Independence)
      • 逻辑数据独立性
  • 三,数据模型
    • 1,实体 – 联系模型
    • 2,关系模型(仅引入概念)
  • 四,数据库语言
    • 1,数据定义语言 - DDL
    • 2,数据操纵语言 - DML
    • 3,SQL语言 - 介绍
    • 4,数据库用户(Database Users)
    • 5,数据库管理员(Database Administrator)
  • 五,数据库引擎(Database Engine)
    • 1,存储管理器(The storage manager)
    • 2,查询处理器(Query Processor)
    • 3,事务管理(Transaction Management)
  • 六,数据库体系结构(Database Architecture)
  • 七,应用程序体系结构(Database Applications)
    • 两层体系结构(Two-tier architecture)
    • 三层体系结构(Three-tier architecture)
  • 八,关系和关系模式
    • 1,属性与元组(Attributes and Tuple)
    • 2,关系基本结构(Structure of Relational Databases)
    • 3,笛卡尔积示例
    • 4,关系的概念
      • 关系模式(Relation Schema)
      • 关系实例(Relation Instance)
  • 九,键(Keys)
  • 十,关系查询语言(Relational Query Languages)
    • 六个基本运算
      • 1,选择运算(Select)
      • 2,投影运算(Project)
      • 3,并运算(Union)
      • 4,差运算(Set difference)
      • 5,广义笛卡尔积(Cartesian product)
      • 6,更名运算(Rename)
      • 7,复合运算
    • 附加运算
      • 1,交运算(Set intersection)
      • 2-1,自然连接(Natural join)
      • 2-2,theta连接
      • 3,除运算(Division)
      • 4,赋值运算(Assignment)
    • 扩展关系代数运算
      • 1,广义投影
      • 2,聚集函数
      • 3,外连接
  • 十一,空值(null)
    • 概念与性质
    • 使用特殊值unknown的三值逻辑:
  • 十二,数据库的修改
    • 删除
    • 插入
    • 更新

一,数据库与数据库管理系统定义

数据库(DB)

  • 与企业相关的数据集合
  • 具有完整性持久性的数据集合
  • 长期存在的信息集合
  • 长期存储在计算机内,有组织的可共享的数据集合

数据库管理系统(DBMS)

  • 数据库 + 一组用于访问、更新和管理这些数据的程序

DBMS的主要特性

  • 数据访问的高效可扩展性
  • 缩短应用开发时间
  • 数据独立性(物理数据独立性 / 逻辑数据独立性)
  • 数据完整性安全性
  • 并发访问鲁棒性(恢复)

二,数据视图(View of Data)

1,数据抽象(Levels of Abstraction)

如何使用数据库系统:不同的用法需要不同层次的抽象(如,学生成
绩管理系统)

数据抽象的三层结构:
数据库 - 数据库系统原理(基础)_第1张图片

  • 物理层(physical level):描述数据实际上是怎样存储的
  • 逻辑层(logical leve):描述数据库中存储什么数据及这些数据间存在什么关系
    例如 ↓
type instructor = record
	ID : char(5); 
	name : char(20);
	dept_name : char(20);
	salary : numeric(8,2);
end;
  • 视图层(view level):应用程序能够隐藏数据类型的详细信息。视图也可以出于安全目的隐藏数据信息(例如,员工的薪水)

2,实例和模型(Instances and Schemas)

类似编程语言中的类型(types)和变量(variables)

  • 类型↔模式,变量↔实例

模式(Schema):数据库的总体设计

  • 类似于程序中变量的类型信息
  • 物理模式:在物理层描述数据库的设计
  • 逻辑模式:在逻辑层描述数据库的设计

实例(Instance):特定时刻存储在数据库中的信息的集合

  • 类似于程序中变量的值

3,数据库系统的模式结构

数据库 - 数据库系统原理(基础)_第2张图片

4,物理独立性和逻辑独立性

修改一层的结构定义不影响更高层的结构定义

物理数据独立性(Physical Data Independence)

修改物理结构而不需要改变逻辑结构的能力

  • 应用程序依赖于逻辑结构
  • 应用程序独立于数据的结构和存储
  • 这是使用DBMS最重要的好处

逻辑数据独立性

数据逻辑结构的改变不影响应用程序

  • 逻辑数据独立性一般难以实现,因为应用程序严重依赖于数据的逻辑结

三,数据模型

数据模型是一个概念工具的集合,用于描述:

  • 数据结构
  • 数据关系
  • 数据语义
  • 数据约束

数据抽象的不同层次需要不同的数据模型来描述:

  • 实体 - 关系模型
  • 关系模型
  • 其他模型

1,实体 – 联系模型

E-R(Entity – Relationship)模型

实体(对象)

  • 例如,客户、帐户、银行分支机构
  • 实体由属性描述

联系:是几个实体之间的关联

  • 例如,帐号 A-101 是由客户 Johnson 拥有,联系设定存款关联客户的帐户

E-R模型数据库设计中使用广泛

  • ER模型通常将数据库设计转化为关系模型的设计
  • 最早由Peter Chen提出
    数据库 - 数据库系统原理(基础)_第3张图片
    实体-联系模型示例
    数据库 - 数据库系统原理(基础)_第4张图片

2,关系模型(仅引入概念)

将E-R图转换为关系模式
数据库 - 数据库系统原理(基础)_第5张图片
来举个“栗子” ↓
数据库 - 数据库系统原理(基础)_第6张图片

四,数据库语言

数据库语言:

  • Data Definition Language(DDL,数据定义语言)
  • Data Manipulation Language(DML,数据操纵语言)
  • Data Control Language(DCL,数据控制语言)

1,数据定义语言 - DDL

传送门:细品 SQL语言

  • 指定一个数据库模式作为一组关系模式的定义
  • 指定存储结构访问方法一致性约束
  • DDL语句经过编译,得到一组存储在一个特殊文件中的表,特殊文件即数据字典(data dictionary),其中包含元数据(metadata)

定义资料库架构的表示方法

create table instructor ( 
	ID char(5), 
	name varchar(20), 
	dept_name varchar(20), 
	salary numeric(8,2))

数据字典(data dictionary)包含元数据(metadata),包括:

  • 数据库模式(Database schema)
  • 数据存储结构
  • 访问方法和完整性约束(Integrity constraints)
  • 统计信息
  • 授权(Authorization)

2,数据操纵语言 - DML

  • 从数据库中检索数据
  • 插入/删除/更新数据
  • DML也称为查询语言
  • 两类基本的数据操作语言:
    过程化DML(Procedural DML):要求用户指定需要什么数据,以及如何获得这些数据(C,Pascal,Java,…)
    声明式DML(Declarative DML):也称为非过程化DML,只要求用户指定需要什么数据,而不指明如何获得这些数据(SQL,Prolog)

3,SQL语言 - 介绍

SQL = DDL + DML + DCL

SQL是使用最广泛的查询语言。有三种用法:

  • 直接在交互环境中使用:
    SQL Server:查询分析器
    Oracle:SQL*Plus、Work Sheet
    MySQL:命令行客户端
  • 在宿主语言中,通过ODBC(开放式数据库连接)、JDBC使用
  • 在宿主语言中使用嵌入式SQL
    数据库 - 数据库系统原理(基础)_第7张图片

4,数据库用户(Database Users)

  • 无经验的用户(Naive users):他们通过激活事先已经写好的应用程序同系统进行交互
    (普通用户)
    – 例如,人们通过网络、银行出纳员、文员访问数据库
  • 应用程序员(Application programmers):通过SQL调用与系统进行交互
  • 富有经验的用户(Sophisticated users):用数据库查询语言或数据分析软件等工具来表达他们
    的要求。例如,联机分析处理(OLAP)、数据挖掘。
  • 特殊用户(Specialized users):编写专门的,不适合于传统数据处理框架的数据库应用。例
    如计算机辅助设计系统(CAD)、知识库系统(KDB),专家系统(ES)。

5,数据库管理员(Database Administrator)

数据库管理员(DBA):对数据库系统进行集中控制的特殊用户

  • DBA拥有管理数据库的最高权限
  • DBA协调数据库系统的所有活动
  • DBA控制所有用户访问数据库的权限
  • DBA对企业的信息资源和需求有很好的理解

数据库管理员的工作包括:

  • 模式定义
  • 存储结构与存取方法定义
  • 模式及物理组织的修改
  • 数据访问授权
  • 日常维护:监视数据库的运行,确保数据库的性能数据库安全(如,定期备份数据库,数据库恢复)

五,数据库引擎(Database Engine)

1,存储管理器(The storage manager)

  • 在底层数据存储与应用程序及查询之间,提供接口
  • 对数据库中的数据进行高效存储,检索与更新
  • 包括:
    – 事务管理(Transaction manager)
    – 授权和完整性管理(Authorization and integrity manager)
    – 文件管理 (File manager 管理文件系统与数据文件,数据字典,索引文件之间的交互)
    – 缓存管理(Buffer manager)

2,查询处理器(Query Processor)

  • 接收数据库语言输入,经过解析、优化、执行,输出相应结果给用户
  • 包括:
    – 解析和翻译(Parsing and translation)
    – 优化(Optimization)
    – 执行(Evaluation)
    数据库 - 数据库系统原理(基础)_第8张图片

3,事务管理(Transaction Management)

  • 并发的使用很重要,但也会带来一些问题
  • 事务(Transaction):是在数据库应用中完成单一逻辑功能的操作集合
  • 事务的要求: Atomicity (原子性), Consistence (一致性), Isolation (隔离性), Durability (持久性) / ACID
  • 事务管理组件(Transaction-management component):确保系统在出现故障(例如断电或操作系统宕机),或事务失败的情况下,数据库都能保持一致性(正确性)
  • 并发控制管理器(Concurrency-control manager):控制并发事务之间的交互

六,数据库体系结构(Database Architecture)

  • Centralized databases集中数据库
    • 一到几个核心,共享内存
  • Client-server,客户机-服务器
    • 一台服务器机器代表多台客户机执行工作。
  • Parallel databases并行数据库
    • Many core shared memory多核共享内存
    • Shared disk共享磁盘
    • Shared nothing无共享内容
  • Distributed databases分布式数据库
    • Geographical distribution地理分布
    • Schema/data heterogeneity架构/数据异构性

数据库 - 数据库系统原理(基础)_第9张图片
SQL Server 体系结构
数据库 - 数据库系统原理(基础)_第10张图片

七,应用程序体系结构(Database Applications)

数据库 - 数据库系统原理(基础)_第11张图片

两层体系结构(Two-tier architecture)

  • 像ODBC和JDBC这样的应用程序接口标准被用于进行客户端和服务器的交互
  • 該應用程序駐留在客戶端電腦上,在客戶端電腦上調用在伺服器上資料庫系統功能

三层体系结构(Three-tier architecture)

  • 如基于web的应用程序及采用“中间件”构建的应用
    程序
  • 客戶端電腦充當前端,並且不包含任 何直接的資料庫調用。
    • 客戶端通常通過forms interface與application server通信。
    • application server又與資料庫系統通信以存取資料。

八,关系和关系模式

1,属性与元组(Attributes and Tuple)

属性类型

  • 关系的每个属性都有一个名称
  • 域(domain):每个属性的取值集合称为属性的域
  • 属性值必须是原子的,即不可分割(1NF,第一范式)
    — 多值属性值不是原子的
    — 复合属性值不是原子的
  • 特殊值null是每一个域的成员
  • 空值给数据库访问和更新带来很多困难,因此应尽量避免使用空值
  • 我们先假设不存在空值,在后面的章节中,再讲解空值对不同操作的影响

元组的无序性(tuples)

  • 元组的顺序性是无关紧要的(元组能够以任意顺序存储)
  • 但一个关系中不能有重复的元组

2,关系基本结构(Structure of Relational Databases)

  • 一般地,给出集合D1,D2,…,Dn ,(Di=aij | j=1…k)
    — 关系(relation)R 是:D1 x D2 x … x Dn 的子集,即一系列Di域的笛卡尔积
  • 因而关系是一组n元组(a 1j,a 2j,…,a nj)的集合,其中每个a ij∈D i
  • 例如:
    数据库 - 数据库系统原理(基础)_第12张图片

3,笛卡尔积示例

数据库 - 数据库系统原理(基础)_第13张图片

4,关系的概念

关系涉及两个概念:关系模式关系实例

  • 关系模式描述关系的结构:
    — 例:
    Instructor-schema =(ID:string,name:string,dept_name: string, salary: int)
    或 Instructor-schema=(ID,name,dept_name,salary)
  • 关系实例表示一个关系的特定实例,也就是所包含的一组特定的行
  • 关系、关系模式、关系实例区别:
    — 变量↔关系
    — 变量类型↔关系模式
    — 变量值↔关系实例

关系模式(Relation Schema)

  • A1, A2, …, An是属性
  • 一般地:R = (A1, A2, …, An ) 是一个关系模式
    例,Instructor-schema = (ID, name, dept_name, salary)
  • r(R)是在关系模式R上的关系
    例,instructor(Instrutcor-schema)= instructor(ID, name, dept_name, salary)

关系实例(Relation Instance)

  • 关系的当前值(关系实例)由表指定
  • 一个元组t代表表中的一行
  • 如果元组变量t代表一个元组,那么t[name]表示属性name的t的值
  • 例,
    关系:instructor (ID, name, dept_name, salary)
    实例:数据库 - 数据库系统原理(基础)_第14张图片

九,键(Keys)

  • 使K ⊆ R
  • 如果K值能够在一个关系中唯一地标志一个元组,则K是R的超码 (superkey)
    例,{instructor-ID, instructor-name}和{instructor-ID}都是instructor的超键
  • 如果K是最小超码,则K是候选码(candidate key)
    例,{instructor-ID}是instructor的候选码。因为它是一个超码,并且它的任意真子集都不能成为一个超码
  • 如果k是一个候选码,并由用户明确定义,则K是一个主键(primary key)。主键通常用下划线标记
  • 假设存在关系r和s:r(A , B, C), s(B , D),则在关系r上的属性B称作参照s的外码(Foreign key),r也称为外码依赖的参照关系(Referencing relation),s叫做外码被参照关系(Referenced relation)
    数据库 - 数据库系统原理(基础)_第15张图片
    大学数据库模式
    数据库 - 数据库系统原理(基础)_第16张图片
    模式↑ —— ↓模式图
    数据库 - 数据库系统原理(基础)_第17张图片

十,关系查询语言(Relational Query Languages)

查询语言:用户用来从数据库中请求获取信息的语言

  • ”查询语言(“Pure” languages):
    – 关系代数 - SQL的基础
    – 元组关系演算
    – 域关系演算
  • “纯”查询语言奠定了人们使用查询语言的基础,如SQL

在某种程度上是过程化语言(procedural language)

六个基本运算

  • Select 选择
  • Project 投影
  • Union 并
  • set difference 差(集合差)
  • Cartesian product 笛卡儿积
  • Rename 更名(重命名)

用户输入一个或两个关系,并得到新的关系

1,选择运算(Select)

数据库 - 数据库系统原理(基础)_第18张图片
数据库 - 数据库系统原理(基础)_第19张图片

2,投影运算(Project)

数据库 - 数据库系统原理(基础)_第20张图片数据库 - 数据库系统原理(基础)_第21张图片

3,并运算(Union)

数据库 - 数据库系统原理(基础)_第22张图片数据库 - 数据库系统原理(基础)_第23张图片

4,差运算(Set difference)

数据库 - 数据库系统原理(基础)_第24张图片数据库 - 数据库系统原理(基础)_第25张图片

5,广义笛卡尔积(Cartesian product)

数据库 - 数据库系统原理(基础)_第26张图片数据库 - 数据库系统原理(基础)_第27张图片数据库 - 数据库系统原理(基础)_第28张图片

6,更名运算(Rename)

数据库 - 数据库系统原理(基础)_第29张图片

7,复合运算

数据库 - 数据库系统原理(基础)_第30张图片

附加运算

  • Set intersection 交
  • Natural join 自然连接
  • Division 除
  • Assignment 赋值

1,交运算(Set intersection)

数据库 - 数据库系统原理(基础)_第31张图片数据库 - 数据库系统原理(基础)_第32张图片

2-1,自然连接(Natural join)

数据库 - 数据库系统原理(基础)_第33张图片数据库 - 数据库系统原理(基础)_第34张图片

2-2,theta连接

数据库 - 数据库系统原理(基础)_第35张图片

3,除运算(Division)

数据库 - 数据库系统原理(基础)_第36张图片
数据库 - 数据库系统原理(基础)_第37张图片数据库 - 数据库系统原理(基础)_第38张图片数据库 - 数据库系统原理(基础)_第39张图片数据库 - 数据库系统原理(基础)_第40张图片数据库 - 数据库系统原理(基础)_第41张图片

4,赋值运算(Assignment)

数据库 - 数据库系统原理(基础)_第42张图片

扩展关系代数运算

  • 广义投影
  • 聚集函数
  • 外连接

1,广义投影

数据库 - 数据库系统原理(基础)_第43张图片

2,聚集函数

数据库 - 数据库系统原理(基础)_第44张图片数据库 - 数据库系统原理(基础)_第45张图片数据库 - 数据库系统原理(基础)_第46张图片数据库 - 数据库系统原理(基础)_第47张图片

3,外连接

数据库 - 数据库系统原理(基础)_第48张图片数据库 - 数据库系统原理(基础)_第49张图片数据库 - 数据库系统原理(基础)_第50张图片

十一,空值(null)

概念与性质

  • 元组的某些属性值是可以为空的
  • null表示未知值或值不存在
  • 涉及空的任何算术表达式的结果为空
  • 聚集函数会忽略空值
    – 可以返回空值作为结果
    – 我们遵循SQL对空值的处理语义
  • 为了消除重复和分组,空值和其他值同等对待
    – 一种方法是两个空值被认为是相同的
    – 另一种方法是假设每个空值都是不同的
    – 这两种方法都可行,但我们更愿意遵循SQL对空值的处理语义与空值的比较将返回一个特殊值:unknown
  • 如果用false代替unknown,那么not(A<5)与 A>=5 的结果就会不相等
  • 在SQL中,如果谓词P的值为unknown,那么“P is unknown”的值为真
  • 如果选择谓词的值为unknown,那么选择谓词的结果被认为false

使用特殊值unknown的三值逻辑:

OR:

  • (unknown or true) = true
  • (unknown or false = unknown
  • (unknown or unknown) = unknown

AND:

  • (true and unknown) = unknown
  • (false and unknown) = false
  • (unknown and unknown) = unknown

NOT:

  • (not unknown) = unknown

十二,数据库的修改

数据库的内容可以使用下面的操作来修改:

  • 删除
  • 插入
  • 更新

所有这些操作都使用赋值操作表示

删除

  • 删除请求的表达与查询的表达非常相似,不同的是,前者不是要将找出的元组显示给用户,而是要将它们从数据库中去除
  • 这样只能将元组整个地删除,而不能仅删除某些属性上的值
  • 使用关系代数,删除可表达为
    r ← r – E
    其中,r 是关系,E是关系代数查询

来看个例子理解一下吧~
数据库 - 数据库系统原理(基础)_第51张图片

插入

  • 为了将数据插入关系中:
    – 要么指明一个要插入的元组
    – 要么写出一个查询,其结果是要插入的元组集合
  • 使用关系代数,插入可表达为:
    r ← r ∩ E
    其中,r 是关系,E是关系代数表达式
  • 如果让E是一个只包含元组的常量关系,就可以表达为向关系中插入单一元组

来看个例子理解一下吧~
数据库 - 数据库系统原理(基础)_第52张图片

更新

  • 某些情况下,可能只希望改变元组中的某个值,而不希望改变元组中
    的所有值
  • 可以用广义投影运算来完成这个任务:
    r ← π F1, F2, …, Fi,(r)
    – 其中,当第i个属性不被修改时, Fi 表示的是r的第i个属性
    – 当第i个属性将被修改时, Fi 表示的是一个只涉及常量和r的属性的表达式,表达式给出了此属性的新值

来看个例子理解一下吧~
数据库 - 数据库系统原理(基础)_第53张图片
(2020年3月30日21:06:12 数据库初学)
(2020年4月11日19:11:48 复习 1)

你可能感兴趣的:(数据库,数据库,sql)