文章目录
- 一,数据库与数据库管理系统定义
- 二,数据视图(View of Data)
- 三,数据模型
- 四,数据库语言
- 五,数据库引擎(Database Engine)
- 六,数据库体系结构(Database Architecture)
- 七,应用程序体系结构(Database Applications)
- 八,关系和关系模式
- 九,键(Keys)
- 十,关系查询语言(Relational Query Languages)
- 六个基本运算
- 1,选择运算(Select)
- 2,投影运算(Project)
- 3,并运算(Union)
- 4,差运算(Set difference)
- 5,广义笛卡尔积(Cartesian product)
- 6,更名运算(Rename)
- 7,复合运算
- 附加运算
- 扩展关系代数运算
- 十一,空值(null)
- 十二,数据库的修改
一,数据库与数据库管理系统定义
数据库(DB)
- 与企业相关的数据集合
- 具有完整性和持久性的数据集合
- 长期存在的信息集合
- 长期存储在计算机内,有组织的,可共享的数据集合
数据库管理系统(DBMS)
- 数据库 + 一组用于访问、更新和管理这些数据的程序
DBMS的主要特性
- 数据访问的高效和可扩展性
- 缩短应用开发时间
- 数据独立性(物理数据独立性 / 逻辑数据独立性)
- 数据完整性和安全性
- 并发访问和鲁棒性(恢复)
二,数据视图(View of Data)
1,数据抽象(Levels of Abstraction)
如何使用数据库系统:不同的用法需要不同层次的抽象(如,学生成
绩管理系统)
数据抽象的三层结构:
- 物理层(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,数据库系统的模式结构
4,物理独立性和逻辑独立性
修改一层的结构定义不影响更高层的结构定义
物理数据独立性(Physical Data Independence)
修改物理结构而不需要改变逻辑结构的能力
- 应用程序依赖于逻辑结构
- 应用程序独立于数据的结构和存储
- 这是使用DBMS最重要的好处
逻辑数据独立性
数据逻辑结构的改变不影响应用程序
- 逻辑数据独立性一般难以实现,因为应用程序严重依赖于数据的逻辑结
构
三,数据模型
数据模型是一个概念工具的集合,用于描述:
- 数据结构
- 数据关系
- 数据语义
- 数据约束
数据抽象的不同层次需要不同的数据模型来描述:
- 实体 - 关系模型
- 关系模型
- 其他模型
1,实体 – 联系模型
E-R(Entity – Relationship)模型
实体(对象)
- 例如,客户、帐户、银行分支机构
- 实体由属性描述
联系:是几个实体之间的关联
- 例如,帐号 A-101 是由客户 Johnson 拥有,联系设定存款关联客户的帐户
E-R模型数据库设计中使用广泛
- ER模型通常将数据库设计转化为关系模型的设计
- 最早由Peter Chen提出
实体-联系模型示例
2,关系模型(仅引入概念)
将E-R图转换为关系模式
来举个“栗子” ↓
四,数据库语言
数据库语言:
- 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
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)
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架构/数据异构性
SQL Server 体系结构
七,应用程序体系结构(Database Applications)
两层体系结构(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
- 例如:
3,笛卡尔积示例
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)
实例:
九,键(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)
大学数据库模式
模式↑ —— ↓模式图
十,关系查询语言(Relational Query Languages)
查询语言:用户用来从数据库中请求获取信息的语言
- “纯”查询语言(“Pure” languages):
– 关系代数 - SQL的基础
– 元组关系演算
– 域关系演算 - “纯”查询语言奠定了人们使用查询语言的基础,如SQL
在某种程度上是过程化语言(procedural language)
六个基本运算
- Select 选择
- Project 投影
- Union 并
- set difference 差(集合差)
- Cartesian product 笛卡儿积
- Rename 更名(重命名)
用户输入一个或两个关系,并得到新的关系
1,选择运算(Select)
2,投影运算(Project)
3,并运算(Union)
4,差运算(Set difference)
5,广义笛卡尔积(Cartesian product)
6,更名运算(Rename)
7,复合运算
附加运算
- Set intersection 交
- Natural join 自然连接
- Division 除
- Assignment 赋值
1,交运算(Set intersection)
2-1,自然连接(Natural join)
2-2,theta连接
3,除运算(Division)
4,赋值运算(Assignment)
扩展关系代数运算
- 广义投影
- 聚集函数
- 外连接
1,广义投影
2,聚集函数
3,外连接
十一,空值(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是关系代数查询
来看个例子理解一下吧~
插入
- 为了将数据插入关系中:
– 要么指明一个要插入的元组
– 要么写出一个查询,其结果是要插入的元组集合 - 使用关系代数,插入可表达为:
r ← r ∩ E
其中,r 是关系,E是关系代数表达式 - 如果让E是一个只包含元组的常量关系,就可以表达为向关系中插入单一元组
来看个例子理解一下吧~
更新
- 某些情况下,可能只希望改变元组中的某个值,而不希望改变元组中
的所有值 - 可以用广义投影运算来完成这个任务:
r ← π F1, F2, …, FI,(r)
– 其中,当第i个属性不被修改时, Fi 表示的是r的第i个属性
– 当第i个属性将被修改时, Fi 表示的是一个只涉及常量和r的属性的表达式,表达式给出了此属性的新值
来看个例子理解一下吧~
(2020年3月30日21:06:12 数据库初学)