SQL Server数据库考试重点
Chapter1
数据处理是对数据进行收集、存储、加工、传播等一系列活动的总和。
数据管理指对数据的收集、整理、组织、存储、维护、检索和传输等操作。
数据管理是数据处理的中心活动。
利用计算机进行数据管理经历的三个阶段
人工管理阶段 应用程序管理数据
文件系统阶段 文件系统对数据进行管理
特点 1数据共享性差,冗余度大2数据独立性差
数据库系统阶段 数据库管理系统(DBMS )管理数据
特点 1数据共享性高、冗余度低、易于扩充
数据库是面向整个系统,而不是面向某个特定用户的,因此数据能够被多个用户、多个应用程序共享。
2 数据独立性高 (必考)
数据独立性是指数据的组织(逻辑结构)和存储结构(物理组织)与应用程序之间互不依赖,彼此独立的特性。数据库独立性包括物理独立性和逻辑独立性。物理独立性是指应用程序与存储于外存储器上的数据是相互独立的,即数据在外存上的存储结构由DBMS 管理的,应用程序无须了解;当数据的物理结构发生变化时,应用程序不需改变。逻辑独立性是指应用程序与数据的逻辑结构是相互独立的,当数据的逻辑结构发生变化时,应用程序可以不改变。
数据库系统(DataBase System,DBS )是指带有数据库并利用数据库技术进行数据管理的计算机系统。 数据库系统=计算机系统+数据管理技术
数据库系统一般由数据库、数据库管理系统(及其开发工具)、数据库管理员(DataBase Administrator ,DBA )、数据库应用系统和用户组成。(记忆)
数据库,数据库管理系统,数据库系统是三个不同的概念,数据库强调的是相互关联的数据,数据库管理系统强调的是管理数据库的系统软件,而数据库系统强调的是基于数据库技术的计算机系统。
数据库系统采用三级模式结构,并提供两级映像功能。
数据库系统的三级模式结构是指数据库系统是由外模式、模式和内模式三级构成,二级映像指外模式/模式映像、模式/内模式映像。
应用2应用1应用3应用4应用5 „„
外模式A 外模式B 外模式/模式映像
模式 模式/内模式映像
模式
数据库
模式也称逻辑模式或概念模式,是数据库中全体数据的逻辑结构和特征的描述,模式是面向所有用户的公共数据图,是数据库的全局试图,一个数据库只有一个模式,它既不涉及物理存储细节,也不涉及应用程序和程序设计语言。
外模式也称子模式或用户模式,是模式的子集。外模式是具体面向应用的,是数据库用户所能使用的局部数据的逻辑结构的特征的描述,是数据库用户的视图模式。由于不同的应用有不同的外模式,因此一个数据库可以有多个外模式。
内模式也称存储模式,它是数据库的物理结构,是数据库在存储介质上的存储结构。内模式主要描述数据的物理结构和存储方式。一个数据库只有一个内模式。
外模式/模式映像保证了数据的逻辑独立性。当模式发生改变时(如增加新的数据类型或数据项),只要对各外模式/模式映像作相应修改,就可以使外模式保持不变,从而不必修改应用程序。(必考)
模式/内模式映像保证了数据库的物理独立性。当数据库的存储结构发生改变时,对模式/内模式映像作相应的修改,就可以使模式保持不变,从而应用程序也不必修改。(必考)
开发、管理和使用数据库系统的人员主要包括:数据库管理员、系统分析员和数据库设计人员、应用程序员和最终用户。
数据库管理员(DBA )是指对数据库和DBMS 进行管理的一个或一组人员,负责全面管理和控制数据库系统。
(1)参与数据库设计。(2)数据完整性和安全性管理。(3)数据库运行维护和性能评价。
(4)数据库改进和重构。
系统分析员负责应用系统的需求分析和规格说明,要和用户及DBA 协商,确定系统的软/硬件配置,并参与数据库系统的概要设计。
数据库设计人员 是数据库设计的核心人员,负责数据库中数据内容及结构的确定、数据库各级模式的设计。
应用程序员负责设计和开发数据库应用程序,并负责进行调试和安装。
最终用户(End User) 通过应用程序的用户接口使用数据库。常用的接口方式有菜单驱动、表格操作、图形显示等。
数据模型的层次
概念数据模型(Conceptual Data Model ),也称概念模型或信息模型。它是面向用户的模型,是现实世界到机器世界的一个中间层次。其基本特征是按用户观点对信息进行建模,与具体DBMS 无关。
概念模型的表示方法:E-R 图 三要素 实体(Entity )属性(Attribute )联系(Relationship ) 用矩形框表示实体型,矩形框内写明实体名;用椭圆形表示实体型的属性;用无向线段连接实体与属性。
两个实体型间的联系有三种:一对一联系、一对多联系、多对多联系。(判断是何种联系)
逻辑数据模型(Logical Data Model),也称结构数据模型,其特征是按计算机系统的观点(面向计算机)对数据建模,服务于DBMS 的应用实现。
逻辑数据模型三要素
1数据结构是对系统静态特性的描述,主要描述数据库组成对象以及对象之间的联系。 2数据操作指对数据库中各种对象(型)的实例(值)允许执行的操作及有关的操作规则,它是对数据库动态特性的描述。
3完整性约束是数据的一组完整性规则的集合。保证数据的正确、有效、相容。(正确、有
效、相容指的分别是什么)
物理数据模型(Physical Data Model),用于描述数据在存储介质上的组织结构,它与具体DBMS 有关,也与操作系统和硬件有关,是物理层次上的数据模型。
Chapter2
关系是规范化的二维表中行的集合。关系具有以下性质 (必考)
(1)列是同质的(Homogeneous ),即每列中的分量必须是同一类型的数据。
(2)不同的列可以出自同一个域,但不同的属性必须赋予不同的属性名。
(3)列的顺序可以任意交换。交换时,应连同属性名一起交换。
(4)任意两个元组不能完全相同。
(5)关系中元组的顺序可任意,即可任意交换两行的次序。
(6)分量必须取原子值,即要求每个分量都是不可再分的数据项。
码(判断码的类型 找码!)
候选码(Candidate key ) 候选码应满足惟一性和最小性两个性质 惟一性 对关系R 的任两个元组,其在属性集K 上的值是不同的。最小性属性集K =(A i ,A j ,„,A k )是最小集,即若删除K 中的任一属性,K 都不满足最小性。
主码 若一个关系有多个候选码,则选定其中一个为主码(Primary key)主码的诸属性称为主属性(Prime attribute)。不包含在任何侯选码中的属性称为非主属性(Non-key attribute) 外码 如果关系R1的属性或属性组K 不是R1的主码,而是另一关系R2的主码,则称K 为关系R1的外码(Foreign Key )并称关系R1为参照关系(Referencing Relation )关系R2为被参照关系(Referenced Relation)
关系代数(考计算题)运算可分为两类:
(1)传统的集合运算。其运算是以元组作为集合中元素来进行的,从关系的“水平”方向即行的角度进行。包括并、差、交和笛卡尔积。
(n+m)列的元组的集合 (k1*k2)个元组
(2)专门的关系运算。其运算不仅涉及行,也涉及列。这类运算是为数据库的应用而引进的特殊运算,包括选择、投影、连接和除法等。
关系完整性
实体完整性规则(Entity Integrity )若属性A 是基本关系R 的主属性,则属性A 不能取空值。(主码要有值,不能为空)
参照完整性 指被参照关系的主码和参照关系的外码必须定义在同一个域上,并且参照关系的外码的取值只能为1或者取空值2或者取被参照关系的主码所取得值
用户定义完整性用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。
Chapter3
SQL 的特点
(1) 综合统一(2) 是高度非过程化(3) 面向集合的操作方式(4) 以同一种语法结构提供两种使用方法(5) 语言简洁,易学易用。
基本表是独立存在于数据库中的表,是“实表”。
视图是从一个或多个基本表(或视图)导出的表,是“虚表”。它本身不独立存在于数
据库中,数据库中只存放视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中。当基本表中的数据发生变化时,从视图中查询出来的数据也随之改变。
数据库的所有信息都保存在存储文件中。
一个基本表可以用一个或多个存储文件存储。
SQL 语句按其功能可分为四类
(1)数据定义:其功能是创建、更新和撤销模式及其对象。包含的语句动词主要有:CREATE 、DROP 、ALERT 。
(2)数据查询:其功能是进行数据库的数据查询。包含的语句动词主要有:SELECT 。
(3)数据操纵:其功能是完成数据库的数据更新。包含的语句动词主要有:INSERT 、UPDATE 、DELETE 。
(4)数据控制:其功能是进行数据库的授权、事务管理和控制。包含的语句动词主要有:GRANT 、REVOKE 、COMMIT 、ROLLBACK 等。
定义索引的作用在数据库中建立索引是为了提高数据查询速度。
索引分类:聚簇索引和非聚簇索引
聚簇索引(Clustered Index )对表的物理数据页中的数据按索引关键字进行排序,然后重新存储到磁盘上,即聚簇索引与数据是一体的。
非聚簇索引(Nonclustered Index)具有完全独立于数据的索引结构。
Chapter4
逻辑设计是在数据库概念设计的基础上,将概念结构设计阶段得到的独立于DBMS ,独立于计算机系统的概念模型转换成特定DBMS 所支持的数据模型的过程。
如何把E-R 图转换成关系模式
E-R 图转换成关系模式主要涉及两方面内容:
(1)实体型转换成关系模式:关系模式中的属性和键码均与实体集中的属性和键码一一对应。
(2)联系转换成关系模式,构成连接关系。若联系本身有属性,则成为连接关系的属性。关键是连接关系的键:若联系为1,1,则每个实体型的键码均为其键;若联系为1:n ,则n 端实体型的键码为其键;若联系为m :n .则各实体型键组合为其键。
Chapter6
数据冗余与操作异常
① 插入异常 本应被插入进的数据未被插入
② 删除异常 不该删除的数据被删除了
③ 修改异常
2NF :对于关系模式R ,若R ∈1NF ,且每一个非主属性完全函数依赖于码,则R 是第二范式的,记作:R ∈2NF 。
3NF :在关系模式R 中,若不存在这样的码X 、属性组Y 和非主属性Z (Z 不包含于Y ),使得X → Y ,Y → Z (这里X → Y )成立,则称R 是第三范式的,记作:R ∈3NF 。
BCNF :设关系模式R ∈1NF ,若X →Y ,Y ⊄X 时,X 必含有码,则R 是BC 范式的,记作:R ∈ BCNF。
Chapter9
事务(Transaction )是一系列数据库操作的有限序列,是数据库的基本执行单元。 事务的ACID 性质
(1)原子性(Atomicity )事务必须是数据库的逻辑工作单元,即事务中包括的诸操作要么全执行,要么全不执行。
(2)一致性(Consistency )事务在完成时,必须使所有的数据都保持一致状态。
(3)隔离性(Isolation )一个事务的执行不能被其它事务干扰。
(4)持久性(Durability )指一个事务一旦提交,则它对数据库中数据的改变就应该是永久的。即使以后出现系统故障也不应该对其执行结果有任何影响。
事物的活动过程
事物开始、事物读写、事物提交、事物回滚。
一个事物一般由事物开始至事物提交或事物回滚结束。
事务并发执行时的数据访问冲突,表现为以下三个问题:丢失更新、读“脏”数据和不可重复读。
丢失更新(lost update )(一级封锁协议),指当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,由于每个事务都不知道其他事务的存在,因此最后的更新将重写由其他事务所做的更新,这将导致前面事务更新的数据丢失。
读“脏”数据也称脏读(dirty read)(二级封锁协议),指事务T1修改数据,将其写回,事务T2读取了该数据,但T1随后又与某种原因被撤销了,使得T2读取的数据与数据库中的数据不一致,即T2读取的是“脏”(不正确)数据。
当事务T1读取某数据后,事务T2对该数据执行了更新操作,使得T1无法再次读取与前一次相同的数据。这种数据不一致情况称为不可重复读(unrepeateable read)。
封锁(Lock )机制是并发控制的主要技术,其基本思想是:如果事务T1要修改数据A ,则在读A 之前先封锁A ;封锁成功后再修改,直到T1写回并解除封锁后,其他事务才能读取A 。
DBMS 通常提供的封锁类型主要有排他锁和共享锁。
排他锁也称写锁或X 锁。若事务T 对数据A 加上排他锁,则T 可A 进行读写,其他事务只有等到T 解除对A 的封锁后,才能对A 进行封锁和操作。
共享锁也称读锁或S 锁。若事务T 对数据A 加上共享锁,则T 对A 只能读取而不能修改,其他事务可对A 加S 锁但不能加X 锁。
活锁(Live Lock )指在封锁过程中,系统可能使某个事务永远处于等待状态,得不到封锁机会。
死锁(Dead Lock )指若干事务都处于等待状态,相互等待对方释放锁,结果造成这些事务都无法进行,系统进入对锁的循环等待。
解决“死锁”问题一般可采取以下的方法:
(1)预防法:即采用一定的封锁申请方式以避免死锁现象的出现,常用的有顺序申请法,一次申请法等。
(2)解除法:即允许出现死锁,但在系统中有一个死锁检测程序去检查死锁现象的发生,并在死锁产生后通过解锁程序以解除死锁。
封锁协议 在使用X 锁和S 锁给数据对象加锁时,还需要约定一些规则,如何时请求封锁、锁定时间、何时释放锁等,称这些规则为封锁协议(Locking Protocol)。
一级封锁协议指事务T 在对数据A 进行写操作之前,必须对A 加X 锁;直到事务结束(包括Commit 和Rollback )才可释放X 锁。 一级封锁协议可防止“丢失更新”所产生的数据不一致。
二级封锁协议指在一级封锁协议的规则上再增加一条规则,即事务T 在读数据A 之前必须先对A 加S 锁,读完后即释放该S 锁。这样形成的规则集就是二级封锁协议。二级封锁协议包含了一级封锁协议的内容,因此它可以防止出现丢失更新的问题。同时由于在读操作之前须使用S 锁,所以它还能解决读“脏”数据问题。
三级封锁协议指在一级封锁协议的规则上再增加一条规则,即事务T 在读数据A 之前必须先对A 加S 锁,直到事务结束才释放该S 锁。这样形成的规则集就是三级封锁协议。 三级封锁协议包含了二级封锁协议的内容,因此它可以防止出现丢失更新、读“脏”数据的问题。同时由于X 锁和S 锁都是在事务结束后才释放的,所以它还可以解决不可重复读的问题。