数据库原理与应用
数据库原理与应用
目录:
第一章 绪论
重点
1.数据模型:组成要素(三要素)是数据结构,数据操作和完整性约束条件
[!success]
- 数据结构:描述数据库的组成对象以及对象之间的关系
- 数据操纵:对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则。主要操作是查询和更新(包括插入、删除和修改)。
- 完整性约束:是一组完整性规则(即给定的数据模型中数据及其联系所具有的制约和依存规则)。限定了符合数据模型的数据库状态以及状态的变化,以保证数据的正确、 有效和相容。
2.数据、数据库、数据库管理系统和数据库系统
[!success]
- 数据(data)是数据库存储的基本对象
- 数据库(database简称DB)是长期存储在计算机内有组织、可共享的大量数据的集合
- 数据库管理系统(DBMS):是位于用户与操作系统之间的一层数据管理软件,是计算机的基础软件,是一个大型复杂的软件系统
- 数据库系统由数据库(DB)、数据库管理系统(及外围的应用开发工具)(DBMS)、应用程序与数据库管理员构成
3.数据库系统特点:模式、三级模式结构和二级映像功能与数据独立性
[!success]
1.数据库模式(即全局逻辑结构)
①是数据库的中心和关键
②独立于数据库的其他层次
③设计数据库模式时应首先确定数据库逻辑模式
2.三级模式结构:模式,内模式,外模式
- 数据库的内模式
①依赖于模式(全局逻辑结构)
②独立于数据库的用户视图,即外模式
③独立于具体的存储设备
④将全局逻辑结构中所定义的数据结构及其联系按照一定的物理存储策略进行组织,以达到较好的时间和空间效率
- 数据库的外模式
①面向具体的应用程序
②定义在逻辑模式之上
③独立于存储模式和存储设备
④当应用需求发生较大变化,相应外模式不能满足其视图要求时,该外模式就得做相应改动
⑤设计外模式时应充分考虑应用的扩充性
3.数据库的二级映像功能(外模式/模式映像,模式/内模式映像)
①保证了数据库外模式的稳定性
②从底层保证了应用程序的稳定性,除非应用需求本身发生变化,否则应用程序一般不需要修改
4.数据独立性:指数据与程序之间的独立性,使得数据的定义和描述可以从应用程序中分离出去
- 外模式/模式映像的作用是:保持数据的逻辑独立性
①当模式改变时,数据库管理员对外模式/模式映像作相应改变,使外模式保持不变。应用程序是依据数据的外模式编写的,应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性
- 模式/内模式映像的作用是:保持数据的物理独立性
②当数据库的存储结构改变时(例如选用了另一种存储结构),数据库管理员修改模式/内模式映像,使模式保持不变。模式保持不变,则应用程序不必改变。保证了数据与程序的物理独立性,简称数据的物理独立性
数据库的4个基本概念
数据(Data)、数据库(DataBase,DB)、数据库管理系统(DataBase Management System,DBMS)、数据库系统(DataBase System,DBS)
- 数据(data)是数据库存储的基本对象
- 数据库(database简称DB)是长期存储在计算机内有组织、可共享的大量数据的集合
数据库的基本特征
1.数据按一定的数据模型组织、描述和储存
2.较小的冗余度
3.较高的数据独立性
4.可扩展性
- 数据库管理系统(DBMS):是位于用户与操作系统之间的一层数据管理软件,是计算机的基础软件,是一个大型复杂的软件系统
数据库管理系统的主要功能
1.数据定义功能
①提供数据定义语言(DDL)
②定义数据库中的数据对象的组成和结构
2.数据组织、存储和管理功能
①分类组织、存储和管理各种数据
②确定组织数据的文件结构和存取方式
③实现数据之间的联系
④提供多种存取方式提高存取效率
3.数据操纵功能
①提供数据操纵语言(DML)
②实现对数据库的基本操作(查询、插入、删除和修改)
4.数据库的事务管理与运行功能
①数据库在建立、运行和维护时由数据库管理系统统一管理和控制
②保证数据的安全性、完整性
③多用户对数据的并发使用及发生故障后的系统恢复
5.数据库的建立与维护功能
①数据库初始数据的输入和转换
②数据库转储和恢复功能
③数据库的重组织、性能监视和数据分析等
6.其他功能
①数据库管理系统与网络中其它软件系统的通信
②数据库管理系统系统之间或与文件系统的数据转换
③异构数据库之间的互访和互操作
- 数据库系统由数据库(DB)、数据库管理系统(及外围的应用开发工具)(DBMS)、应用程序与数据库管理员构成
数据模型
- 定义
1.数据模型是对现实数据特征的抽象,是现实世界的模拟
2.数据模型是用来描述数据、组织数据和对数据进行操作的
3.数据模型应满足三方面要求
①能比较真实地模拟现实世界
②容易为人所理解
③便于在计算机上实现
4.数据模型是数据库系统的核心与基础
- 信息世界中的基本概念
1.信息世界的基本概念
①实体(entity):客观存在并可相互区别的事物
②属性(attribute):尸体所具有的某一特性,一个实体可以由若干属性刻画
③码(key):唯一标识实体的属性集
④实体型(entity type):用实体名及其属性名集合来抽象和刻画同类实体称为实体型
⑤实体集(entity set):同一类型实体的集合
⑥联系(relationship):现实世界中事物内部以及事物之间的联系在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系
a.实体内部的联系指组成实体的各属性之间的联系
b.实体之间的联系指不同实体集之间的联系
c.实体之间的联系可以是一对一、一对多、多对多等
- 概念模型的一种表示方法:实体-联系模型(Entity-Relationship,简称E-R)
抽象了学校中的学生和课程两个客观事物:学生实体和课程实体
抽象了现实世界中事物之间的联系:
一门课程可以有多名学生选修,一个学生可以选修多门课程
用课程实体与学生实体多对多(m:n)联系来描述
数据建模的两个层次:概念模型与数据模型
- 概念模型:按照用户的观点对数据和信息建模
- 数据模型:按照计算机系统的观点对数据建模
数据模型的三要素:数据结构,数据操纵和完整性约束
- 数据结构:描述数据库的组成对象以及对象之间的关系
描述的内容:与对象的类型,内容和性质有关,也与数据之间的联系有关
数据结构是对系统静态特性的描述
- 数据操纵:对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则。主要操作是查询和更新(包括插入、删除和修改)。
数据模型必须定义:
①操作的确切含义
②操作符号
③操作规则(如优先级)
④实现操作的语言
数据操纵是对系统动态特性的描述
- 完整性约束是一组完整性规则(即给定的数据模型中数据及其联系所具有的制约和依存规则)。限定了符合数据模型的数据库状态以及状态的变化,以保证数据的正确、 有效和相容。
层次模型
层次模型是数据库系统中最早出现的数据库模型,用树形结构来表示各类实体以及实体间的联系
①实体用记录表示
②实体的属性对应记录的数据项(或字段)
③实体之间的联系转换成记录之间的两两关系
④数据结构的单位是基本层次关系:指两个记录以及他们之间的一对多(包括一对一)的联系
1.层次模型的数据结构
①有且只有一个结点没有双亲结点,这个结点称为根节点
②根以外的其他结点有且只有一个双亲结点
一个结点对应一个记录类型(实体),字段对应属性,联系对应连线
2.层次模型的数据操纵与完整性约束
①数据操纵:查询,插入,删除,更新
②完整性约束:
a.无相应的双亲结点值就不能插入子女结点值
b.如果删除双亲结点值,则相应子女结点值也被同时删除
c.更新操作时,应更新所有相应记录,以保证数据一致性
网状模型
1.网状模型的数据结构
①定义
a.允许一个以上的结点无双亲
b.一个结点可以有多于一个双亲
②表示方法
③网状模型与层次模型的区别
2.网状模型的数据操纵与完整性约束
关系模型
1.关系模型中的数据结构
①基本概念
1.关系(relation):一个关系对应一个表
2.元组(tuple):表中的一行即为一个元组
3.属性(attribute):表中的一列即为一个属性,给每个属性起一个名称即属性名
4.码(key):又称码键或键。表中的某一个属性或一组属性,其值可以唯一确定一个元组。
5.域(domain):是一组具有相同数据类型的值的集合。属性的取值范围来自某个域。
6.分量:元组中的一个属性值
7.关系模式:即对关系的描述(表头)。如关系名(属性1,属性2,…, 属性n),学生(学号,姓名,性别,出生日期,主修专业)
②关系必须是规范化的,满足一定的规范条件。最基本的规范条件:关系的每一个分量必须是一个不可分的数据项,不允许表中还有表。如下图的联系方式是可分的数据项,不符合关系模型要求(也就是说每一个分量都是下面没有子标题的标题)
2.关系模型的数据操纵与完整性约束
数据库系统的三级模式结构
数据库系统中模式的概念
1.型和值的概念
①型type:对某一类数据的结构和属性的说明
②值value:是型的一个具体赋值
例如:学生记录(型,也就是表头):(学号,姓名,性别,出生日期,主修专业)。一个记录值:(20180003,王敏,女,2001-8-1,计算机科学与技术)
2.模式(schema)
①是数据库中全体数据的逻辑结构和特征的描述
②是型(表头)的描述,不涉及具体值
③反映的是数据结构及其联系
④模式是相对稳定的
3.实例(instance)
①是模式的一个具体值
②反映数据库某一时刻的状态
③同一个模式可以有很多实例
④实例随数据库中数据的更新而变动
数据库系统的三级模式结构
数据库系统三级模式结构:模式、外模式和内模式
1.模式(schema)
1.内容(也称逻辑模式)
①是数据库中全体数据的逻辑结构和特征描述
②所有用户的公共数据视图
一个数据库只有一个模式
2.模式的地位:是数据库系统结构的中间层
①与数据的物理存储细节和硬件环境无关
②与具体的应用程序、开发工具和高级程序设计语言无关
3.模式的定义
①数据的逻辑结构(数据项的名字、类型、取值范围等)
②数据之间的联系
③数据有关的安全性、完整性要求
数据库管理系统提供模式数据定义语言(模式DDL)严格定义模式
2.外模式(external schema)
1.外模式定义(也称子模式或用户模式)
①数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述
②数据库用户的数据视图,是与某一应用有关的数据的逻辑表示
2.一个数据库可以有多个外模式:不同在用户的应用需求、看待数据的方式、对数据保密的要求等方面存在差异
3.对模式中的同一数据,在外模式中的结构、类型、长度、保密级别等都可以不同
4.同一外模式也可以为某一用户的多个应用系统使用,但一个应用程序只能使用一个外模式
5.外模式的用途
①保证数据库安全性的一个有力措施
②每个用户只能看见和访问所对应的外模式中的数据
6.数据库管理系统提供外模式数据定义语言(外模式DDL)来严格定义外模式
3.内模式(internal schema)(也称物理模式或存储模式)
1.定义
①是数据物理结构和组织方式的描述
②是数据在数据库内部的表现方式
数据库的两级映像与数据独立性
三级模式是对数据的三个抽象级别,而两级映像在数据库管理系统内部实现三个抽象层次的联系和转换:外模式/模式映像,模式/内模式映像
1.外模式/模式映像
1.模式:描述的是数据的全局逻辑结构
2.外模式:描述的是数据的局部逻辑结构
3.同一个模式可以有任意多个外模式
4.对于每一个外模式,数据库系统都有一个外模式/模式映像用于定义外模式与模式之间的对应关系
5.映像定义通常包含在各自外模式描述中
6.外模式/模式映像的作用是:保持数据的逻辑独立性
①当模式改变时,数据库管理员对外模式/模式映像作相应改变,使外模式保持不变
②应用程序是依据数据的外模式编写的,应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性
2.模式/内模式映像
1.模式/内模式映像定义了数据全局逻辑结构与存储结构之间的对应关系
例如:说明逻辑记录和字段在内部是如何表示的
2.数据库中模式/内模式映像是唯一的
3.该映像定义通常包含在模式描述中
4.保证数据的物理独立性
①当数据库的存储结构改变时(例如选用了另一种存储结构),数据库管理员修改模式/内模式映像,使模式保持不变
②模式保持不变,应用程序不必改变。保证了数据与程序的物理独立性,简称数据的物理独立性
数据库系统的组成
数据库+数据库管理系统(及其应用开发工具)+应用系统+数据库管理员
关系模型
重点
1.关系的完整性:实体完整性,参照完整性,用户定义完整性
2.什么是关系
3.关系的性质
4.实体标识符
5.码的定义
6.关系代数
4种传统集合运算:并,差,交,广义笛卡尔积
4种专门关系运算:选择,投影,连接(掌握),除
其中基本运算有5个:并,差,笛卡尔积,投影,选择
连接、外连接
会使用关系代数表达查询
关系模型的数据结构及形式化定义
关系
1.单一的数据结构——关系:现实世界的实体以及实体间的各种联系均用关系来表示
2.逻辑结构——二维表:从用户角度,关系模型中数据的逻辑结构是一张二维表
3.分为域(domain)、笛卡尔积(Cartesian product)和关系(relation)
4.域(domain)
①域是一组具有相同数据类型的值的集合
例:整数,实数,介于某个取值范围的整数,长度小于25B的变长字符串集合,{男,女}……
5.笛卡尔积
①是所有域的所有取值的一个不能重复的组合
给定一组域D1,D2,…,Dn,允许其中某些域是相同的。笛卡尔积为:
$D_1\times D_2\times ... \times D_n={(d_1,d_2,...,d_n)\ |d_i\in D_i,\ i=1,2,...,\ n }$
②元组(tuple):笛卡尔积中每一个元素$(d_1,d_2,...,d_n)$叫做一个n元组(n-tuple)或简称元组。如{a同学,计算机科学与技术,a老师}
③分组(Component):笛卡尔积元素$(d_1,d_2,...,d_n)$中的每一个值$d_i$都叫做一个分量,如a同学,计算机科学与技术,a老师
④基数(cardinal number):是一个域允许的不同取值个数。
若$D_i(i=1,2,...,n)$为有限集,其基数为$m_i(i=1,2,...,n)$,则$D_1\times D_2 \times ... \times D_n$的基数$M$为:$M=\prod_{i=1}^{n}m_i $
⑤笛卡尔积的表示方法:二维表,表中每行对应一个元组,每列对应一个域
6.关系
①关系模型中$D_1,D_2,...,D_n$的笛卡尔积一般没有实际语义,只有某个真子集才有实际含义
②关系的定义:$D_1 \times D_2 \times ...\times D_n$的子集叫做在域$D_1,D_2,...,D_n$上的关系,表示为$R(D_1,D_2,...,D_n)$。其中R是关系名,n是关系的度
③元组:关系中的每个元素是关系中的元组,通常用t表示
④单元关系与二元关系
⑤关系的表示:关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域
⑥属性
⑦三类关系
a.基本关系(基本表或基表):实际存在的表,是实际存储数据的逻辑表示
b.查询结果:查询执行产生的结果对应的临时表
c.视图表:由基本表或其他视图表导出的虚表,不存储实际数据
⑧基本关系的性质
关系模式
1.关系模式的定义:关系模式是对关系的描述,描述了关系元组集合的结构:如属性构成,属性来自的域,属性与域之间的映像关系;也描述了关系的完整性约束
关系模式是型,关系是值
2.定义关系模式
3.关系模式中的各种码
(1)候选码(candidate key):关系模式中的某一个属性或者一组属性的值能唯一地标识一个元组,而它的真子集不能唯一地标识一个元组,则称该属性或属性组为候选码。最简单的情况就是候选码只包含一个属性
(2)全码(all-key):最极端的情况下关系模式中的所有属性才能成为这个关系模式的候选码,这个时候的码就是全码(all-key)
(3)主码:若一个关系有多个候选码,则选定其中一个为主码(primary key)
(4)主属性:候选码的主属性称为主属性(prime attribute)
相对应的不包含在任何候选码中的属性称为非主属性(non-prime attribute)或非码属性(non-key attribute)
4.关系模式与关系
①关系模式是对关系的描述,是静态的、稳定的
②关系是关系模式在某一时刻的状态或内容,是动态的、随时间不断变化的
③关系模式和关系往往笼统称为关系,具体由上下文区别
关系数据库
关系模型的存储结构
关系操作
关系的完整性
实体完整性
1.实体完整性规则(entity integrity):若属性(指一个或一组属性)A是基本关系R的主属性,则A不能取空值(空值就是“不知道”不存在”或“无意义”的值)
2.实体完整性规则说明
①实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集
②现实世界中的实体是可区分的,具有某种唯一性标识
③关系模型中以主码作为唯一性标识
④主码中的属性不能去空值(如果取了空值,就说明存在某个不可标识的实体,即存在不可区分的实体,而②中实体是可区分的也就矛盾了,因此规则命名为实体完整性)
参照完整性
1.关系间的引用
2.外码(foreign key)
①外码的定义:设F是基本关系R的一个或一组属性,但不是关系R的码,Ks是基本关系S的主码。如果F与Ks对应,则称F是R的外码
基本关系R称为参照关系(referencing relation)
基本关系S称为被参照关系(referenced relation)或目标关系(target relation)
总结
[!success]
1.参照关系、被参照关系就看谁是模仿者,谁是被模仿者,如果一个关系中某个属性模仿了另一个属性那ta既是参照关系也是非参照关系
2.外码不一定要与主码同名,也就是模仿者不一定啥都要跟被模仿者一样,比如先修课(模仿者,外码)和课程(被模仿者,主码)
3.参照完整性约束
若属性(或属性组)F是基本关系R的外码,ta与基本关系S的主码Ks相对于(R和S可以是同一个关系也可以是不同关系),则对于R中每个元组在F上的值必须为:空值(F的每个属性值均为空值)或等于S中某个元组的主码值
用户定义的完整性
1.定义:针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不需由应用程序承担这一功能。
关系代数
传统的集合运算
1.并(union)
(1)R和S要求:具有相同的目n(即两个关系都有n个属性)且相应的属性取自同一个域
属性与域的区别
- 属性:用于描述实体的特性 。比如学生实体,有学号、姓名、年龄等属性,体现学生不同方面特征。
- 域:是属性的取值范围 。像学号属性,域可能是特定长度的数字集合;性别的域是 {男,女} 。
简言之,属性是实体特征描述,域限定属性取值,是属性的规则。
(2)$R \cup S$:仍为n目关系,由属于R或属于S的元组组成(取属于R或S的元组,且去重)。
$R \cup S={t \ | \ t \in R \ \vee t \in S}$
去重是以一行一行来看的,只有S第二行是R中没出现过的。
2.差(difference)
(1)R和S要求:具有相同的目n(即两个关系都有n个属性)且相应的属性取自同一个域
(2)$R - S$:仍为n目关系,由属于R或属于S的元组组成(去掉R中同属于R和S的元组)。
$R - S={t \ | \ t \in R \ \vee t \notin S}$
3.交(intersection)
(1)R和S要求:具有相同的目n(即两个关系都有n个属性)且相应的属性取自同一个域
(2)$R \cap S$:仍为n目关系,由属于R或属于S的元组组成(取R中同属于R和S的元组)。
$R \cap S={t \ | \ t \in R \ \wedge t \in S}$
4.(广义)笛卡尔积((extended) Cartesian product)
专门的关系运算
1.记号的引入
(1)$R,t\in R,t[A_i]$
设关系模式$R(A_1,A_2,...,A_n)$
一个关系设为R,则$t\in R$表示$t$是R的一个元组,$t[A_i]$则表示元组t中相应于属性$A_i$的一个分量
(2)$A,t[A],\overline{A}$
(3)$\widehat{t_r t_s} $
(4)象集$Z_x$
相当于已知一个分量,把另一个基于该分量得到的分量结果输出出来(相当于筛选)
2.选择
选择又称为限制(restriction)。在关系R中选择满足给定条件的诸元组$\sigma_F(R)={t\ |t \in R \ \wedge \ F(t)='真'}$
其中F是选择条件,是一个逻辑表达式,取值为‘真’或‘假’
选择运算是从关系R中选取使逻辑表达式F为真的元组,是从行(hang)的角度进行的运算
3.投影
从R中选择出若干属性组成新的关系$\pi_A(R)={t[A]\ | \ t \in \ R}$
A是R中的属性列。投影操作主要是从列的角度进行运算。投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)
4.连接(join)
①定义
连接也成为θ连接,是从两个关系的笛卡尔积中选取属性间满足一定条件的元组
$R \mathbin{\underset{A \theta B}{\bowtie}} S = { \widehat{t_r t_s} \mid t_r \in R \land t_s \in S \land t_r[A] \mathbin{\theta} t_s[B] }$
A和B:分别为R和S上度数相等且可比的属性组,θ是比较运算符
连接运算从R和S的广义笛卡尔积中选取R关系在A属性组上的值与S关系在B属性组上的值满足比较关系θ的元组
②两种常用连接运算
1.等值连接(equijoin)
θ为“=”的连接运算称为等值连接。从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值连接为$R \mathbin{\underset{A = B}{\bowtie}} S = { \widehat{t_r t_s} \mid t_r \in R \land t_s \in S \land t_r[A] = t_s[B] }$
2.自然连接(natural join)
自然连接是一种特殊等值连接,两个关系中进行比较的分量必须是同名的属性组,同时在结果中把重复的属性列去掉。其含义为:R和S具有相同的属性组B,U为R和S的全体属性集合。
$R \mathbin{\Join} S = { \widehat{t_r t_s}[U - B] \mid t_r \in R \land t_s \in S \land t_r[B] = t_s[B] }$
S第五行b2 2应为b5 2
连接理由:保证C的值小于E
也就是进一步把B列合并而不分R.B和S.B
③悬浮元组(dangling tuple)
两个关系R和S在做自然连接时,关系R中某些元组有可能在S中不存在公共属性上值相等的元组,从而造成R中这些元组在操作上被舍弃了,这些被舍弃的元组称为悬浮元组。
④外连接(outer join)
如果把悬浮元组也保存在结果关系中,其他属性上填空值(NULL),就叫做外连接。
左外连接(left outer join或left join):只保留左边关系R中的悬浮元组
右外连接(right outer join或right join):只保留右边关系S中的悬浮元组
也就是外连接强行合并同类项并把所有信息聚合起来,左外连接就是只根据左边的合并同类项聚合信息而不管左边没有右边有的信息
5.除
给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同属性名,但必须出自相同的域集.R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含在S在Y上投影的集合,记作:
$R / S = { t_r[X] \mid t_r \in R \land \pi_Y(S) \subseteq Y_x }$
SQL语言
重点
1.数据定义:基本表的定义(完整性约束的定义)、修改和删除、索引的建立和删除、索引建立的目的
2.数据更新:insert,delete,update
3.视图:create view
4.查询:写SQL语句及理解其含义
①单表查询:distinct,between and,in,like,is,and,or,order,集函数,group by,having的用法
②连接查询:max,min,average,sum,count
③嵌套查询:带in谓词的,带比较运算符的
SQL概述
1.SQL(Structured Query Language)结构化查询语言,是关系数据库的标准语言,包括数据查询、数据库模式创建、数据库数据的增删改、数据库安全性和完整性定义与控制等
2.SQL的特点
3.SQL的基本概念
(1)基本表的概念
①是本身独立存在的表
②关系数据库管理系统中一个关系就对应一个基本表
③一个或多个基本表对应一个存储文件
④一个表可以带若干索引
(2)存储文件
①逻辑结构和物理结构组成了关系数据库的内模式
②物理文件结构是由数据库管理系统设计决定的
(3)视图
①是从基本表或其他视图中导出的表
②数据库中只存放视图的定义而不存放视图对应的视图
③视图是一个虚表
④用户可以在视图上再定义视图
数据定义
1.模式的定义与删除
(1)定义模式
①为用户WANG定义一个“学生选课”模式S-C-SC
create schema "S-C-SC" authorization WANG;
②下面的模式没有指定模式名,模式名隐含为用户名WANG
create schema autorization WANG;
(2)定义模式实际上定义了一个命名空间。在这个空间中可以定义该模式包含的数据库对象,例如基本表,视图,索引等。也就是说
在create schema
中可以接受create table,create view和grant
子句
create schema <模式名> authorization <用户名>[<表定义子句>|<视图定义子句>|<授权定义子句>]
create chema Test authorization Zhang
create table Tab1(Col1 smallint,
Col2 int,
Col3 char(20)
Col4 numeric(10,3)
Col5 decimal(5,2)
);
(2)删除模式
drop schema <模式名> <cascade|restrict>
①cascade(级联)——连坐
删除模式的同时把该模式中所有的数据库对象全部删除。
②restrict(限制)
如果该模式中定义了数据库对象(如表、视图等),则拒绝该删除语句的执行。
仅当该模式中没有任何下属的对象时才能执行
例3.4 drop schema Test cascade;
删除模式Test,同时该模式中定义的表Tab1也被删除
2.基本表的定义、删除和修改
(1)定义基本表
create table <表名>
(<列名><数据类型>[<列级完整性约束>])
[,<列名><数据类型>[<列级完整性约束>]]
...
[,<表级完整性约束>]);
<表名>:所要定义的基本表的名字。
<列名>:组成该表的各个属性(列)。
<列级完整性约束>:涉及相应属性列的完整性约束。
<表级完整性约束>:涉及一个或多个属性列的完整性约束。
如果完整性约束涉及该表的多个属性列,则必须定义在表级上,否则可以定义在列级也可以定义在表级
(2)数据类型
(3)模式与表
(4)修改基本表
alter table <表名>
[add [column] <新列名> <数据类型> [完整性约束]]
[add <表级完整性约束>]
[drop [column] <列名> [cascade|restrict]]
[drop constraint <完整性约束名> [restrict|cascade]]
rename column <列名> to <新列名>
[alter column <列名> type <数据类型>];
1.<表名>是要修改的基本表,
2.add子句用于增加新列、新的列级完整性约束和新的表级完整性约束
3.drop column子句用于删除表中的列
①如果指定了cascade短语,则自动删除引用了该列的其他对象
②如果指定了restrict短语,则如果该列被其它对象引用,关系数据库系统将拒绝删除该列
4.drop constraint子句用于删除指定的完整性约束
5.rename column子句用于修改列名
6.alter column子句用于修改列的数据类型
alter(改变) table Student add Semail varchar(30);
不论基本表中原来是否已有数据,新增加的列一律为空值
alter table Student alter column Sbirthdate type varchar(20);
alter table Course add unique(Cname);
(5)删除基本表
drop table <表名> [restrict|cascade]
restrict:删除表是有限制的
- 想要删除的基本表不能被其他表的约束所引用。如果存在依赖该表的对象,则此表不能被删除
cascade:删除该表没有限制
- 在删除表的同时,相关依赖对象也一并删除
drop table Student cascade
- 基本表定义被删除,数据被删除
- 表上建立的索引,视图,触发器等一般也被删除
create view CS_Student
/Student表上建立计科学生视图/
as
select Sno,Sname,Ssex,Sbirthdate,Smajor
from Student
where Smajor='计算机科学与技术'
drop table Student restrict;
/删除Student表/
3.索引的建立与删除
(1)建立索引目的:加快查询速度
(1)建立索引
create [unique] [cluster] index <索引名> on <表名>(<列名>[<次序>][,<列名>[<次序>]]...);
<表名>:要建立索引的基本表的名字
索引:可以建立在该表的一列或多列上,各列明之间用逗号分隔
<次序>:指定索引值的排列顺序,升序asc,降序desc,默认升序asc
unique:此索引的每一个索引值只对应唯一的数据记录
cluster:建立的索引是聚簇索引
create unique index Idx_StuSname on Student(Sname);
/保证了Sname取唯一值的约束****/
create unique index Idx_CouCname on Course(Cname);
/*加上Cname取唯一值的约束*****/
create unique index Idx_SCCno on sc(Sno asc,Cno desc);
(2)修改索引
alter index <旧索引名> rename to <新索引名>
alter index Idx_SCCno rename to Idx_SCSnoCno;
(3)删除索引
drop index <索引名>
删除索引时,系统会从数据字典中删去有关该索引的描述
(4)数据字典
数据查询
数据库安全性
重点
1.数据库安全性是指保护数据库,防止因用户非法使用数据库造成数据泄露、更改或破坏。作用是防止恶意的破坏和非法的存取
2.视图的作用
3.GRANT和REVOKE
数据库完整性
重点
1.数据库完整性是指数据的正确性和相容性;数据库的完整性是为了防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据
2.如何定义几种完整性
3.插入、更新、修改能否被执行的判断
关系数据理论
重点
1.1NF的关系模式存在的问题:插入异常,删除异常,数据冗余度高,修改异常(复杂)
2.函数依赖,能写出函数依赖
3.规范化理论
4.范式(各级范式的特征,会求范式级别)
5.属性集关于函数依赖集的闭包
6.码的求解方法
数据库设计
重点
1.六个步骤
①需求分析:数据字典及其内容
②概念结构设计
③逻辑结构设计:E-R图转换成关系模型
④数据库物理设计
⑤数据库实施
⑥数据库运行与维护:重组织与重构造
2.概念设计中E-R模型设计方法(掌握)
3.逻辑设计中E-R模型向关系模型的转换方法(重点掌握)
数据库设计概述
1.数据库设计定义:是指对于一个给定的应用环境,构造优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,是指能够有效存储管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。
信息管理要求:在数据库中应该存储和管理哪些数据对象
数据操作要求:对数据对象需要进行哪些操作,如查询、增加、删除、修改、统计和分析等操作
2.数据库设计目标:是为用户和各种应用系统提供一个信息基础设施和高效的运行环境
3.数据库设计的特点
4.数据库设计的方法
5.数据库设计的基本步骤
六个阶段
1.需求分析
2.概念结构设计
3.逻辑结构设计
4.物理结构设计
5.数据库实施
6.数据库运行与维护
- 需求分析和概念设计独立于任何数据库管理系统
- 逻辑设计和物理设计与选用的数据库管理系统密切相关
需求分析
1.数据字典
(1)数据字典是关于数据库中数据的描述,即元数据,不是数据本身
(2)数据字典在需求分析阶段建立,在数据库设计过程中不断修改、充实、完善
(3)数据字典是进行详细的数据收集和数据分析所获得的主要成果
(4)数据字典的内容
①数据项
②数据结构
③数据流
④数据存储
⑤处理过程
(5)数据项是数据的最小组成单位
(6)若干个数据项可以组成一个数据结构
(7)数据字典通过对数据项和数据结构的定义来描述数据流、数据存储的逻辑内容
2.数据项
(1)数据项是不可再分的数据单位
(2)对数据项的描述
3.数据结构
4.数据流
5.数据存储
6.处理过程
概念结构设计
实体型就是具体的一个个主体,联系/关系就是要执行的事件
E-R图:提供了表示实体型、属性和联系的方法
(1)实体型:用矩形表示,矩形框内写明实体名
(2)属性:用椭圆形表示,并用无向边将其与相应的实体型连接起来
(3)联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁标上联系的类型(1:1,1:n或m:n)
- 联系可以具有属性
逻辑结构设计
1.E-R图向关系模型的转换
(1)转换内容
①E-R图由实体型,实体的属性和实体型之间的联系三个要素组成
②关系模型的逻辑结构也是一组关系模式的集合
③将E-R图转换为关系模型:将实体型、实体的属性和实体型之间的联系转化为关系模式
(2)转换原则
①一个实体型转换为一个关系模式:关系的属性<-实体的属性,关系的码<-实体的码
②实体型间的联系
数据库物理设计
数据库管理系统常用存取办法
B+树索引、哈希索引、聚簇的存取方法
(第十一章)数据库恢复技术
重点
1.事务概念及ACID特性、commit rollback
2.几种故障,各自恢复方法
3.数据转储和日志文件,登记日志文件原则
4.事务日志
(第十二章)并发控制
重点
1.并发控制:就是用正确的方法调度并发操作,以免不同事务的执行会互相带来干扰
2.主要解决那四类数据不一致的问题
3.事务隔离级别
4.并发控制基本方法:封锁(何为封锁):X锁,S锁
5.封锁协议及其作用
6.死锁
7.两段锁协议