数据库基本概念
DDL(数据定义语言:create、alter、drop)、DML(数据操作语言:insert、delete、update)、DQL(数据查询语言:select)、DCL(数据控制语言:grant、revoke)。
模式=逻辑模式:数据库全体数据的逻辑结构和特征描述,所有用户的公共数据视图
外模式=子模式=用户模式:局部数据的逻辑结构和特征描述,数据库用户的视图,某一应用有关的逻辑表示。
逻辑模式决定DBMS的功能。
逻辑模式的基础是数据模型。
数据库系统中概念模式改变,则需将与其有关的子模式映象做出相应改变,否则用户程序需改写。
数据库系统的存储模式如有改变,概念模式无需改动。
如果将职工记录定义为(编号,姓名,性别,部门),(编号,姓名,性别)是(编号,姓名,性别,部门)的视图,是整体逻辑结构的一部分,是外模式。
数据独立性包括逻辑独立性(外模式/模式映像)和物理独立性(模式/内模式映像),不会因为系统数据存储结构与数据逻辑结构的变化而影响应用程序。
分布式数据库系统既支持客户的局部应用,又支持客户的全局应用。
数据库系统的核心是数据库管理系统。
数据库系统不仅包括数据库本身,还要包括相应的硬件、软件和各类相关人员。
数据管理的基本环节是数据处理。
数据库是存储在计算机内的有结构的数据集合。
文件系统和数据库系统的主要区别是数据库系统具有特定的数据模型。
数据库管理技术在人工管理阶段没有专门的软件对数据进行管理。
数据库管理技术是在数据库管理系统上发展起来的。
数据库管理系统的工作不包括为定义的数据库提供操作系统,且需要进行数据通信。
扩展名为 .dbf 的文件是oracle下的数据库文件。
数据库技术的根本目标是解决数据的共享问题。
数据的冗余度是指数据的重复度。
关系数据库不能表示复杂的语义。
数据库系统最基本的特点是数据结构化。
数据库系统的特点是数据共享、数据独立、减少数据冗余、避免数据不一致、增强数据保护。没有数据存储的特点。数据存储是数据库的功能。
文件系统中的数据独立性是指设备独立性。
数据库文件的逻辑结构形式是记录式文件。
一对一的关系可以合并,多对多的关系可拆成两个一对多的关系,因此,表间关系可以都定义为一对多的关系。
DBA要配合前端应用程序的开发。
DBMS属于系统软件,但是DBS不属于系统软件。
数据库在磁盘上的基本组织形式是文件。
数据库中区分不同实体的依据是属性。
数据库管理技术是从文件系统的基础上发展起来的。
并不是任意一张二维表都能表示一个关系,例如嵌套表。
数据库中,产生数据不一致的根本原因是数据冗余。
一定的数据冗余可以使查找更简单,效率更高。
实体之间存在多对一的关系,比如层次结构。
结构模型不是数据库管理系统的发展阶段,对象模型是。
网状模型在查找语句中需要规定存取路径。
从计算机数据管理的角度来看,数据与信息不等价,数据只是信息的一部分,通过处理和分析才能转换成信息。
单进程、多线程(例如SQL server)数据库引擎的优点是内存需求不高。
数据库中没有double类型数据。
Access是一个关系数据库管理系统。
SQL Server是微软的,Oracle、MySQL是甲骨文公司的,DB2是IBM公司的。
Windows Server 2003两种授权模式:每用户、每服务器,如果不能确定网络中有多少台客户端需要访问多少台服务器,建议选择"每服务器"模式,用户可以将许可证模式从"每服务器"转换为"每客户",但是不能从"每客户"转换为"每服务器"模式。
B/S体系结构是一种基于浏览器和服务器之间的通信模式,他是一种典型的三层结构,包括浏览器(客户端)、Web服务器、数据库服务器。
两层体系结构中,业务逻辑一般放在Client端,一部分放在服务器端。
Excel数据库是按照一定组织方式存储在一起的相关数据的集合,是一个数据清单,不是程序化的电子表格。
对某个数据库使用记录单,可以对记录进行新建、删除、还原操作。
并行数据库系统中,对关系进行划分并把他们分布到多个磁盘,所采用的主要技术有三种:轮转法、散列分布、范围分布。
关系数据库
关系模型数据库管理系统中所谓的关系是指满足一定条件的二维表格。
关系通常指一张表,元组指一行数据,所以可以说关系是元组的集合。
关系中元组的行和列都没有先后顺序。
在关系数据模型中把记录类型称为关系模式。
每一个关系仅有一种记录类型。
数据库中的数据项=属性=字段,记录=一条条数据,数据项之间和记录之间都是有联系的。
一个关系模式的主码与该关系模式的任何一个外码的交一定为空(一个属性不能同时是候选码和外码)。
关系模型的基本运算有增删改查四种运算,其中查询还包括选择、投影、连接、除、并、交、差。
关系代数运算分为传统的集合运算和专门的关系运算,传统的集合运算有并、差、交、笛卡尔积。专门的关系运算有选择、投影、连接、除。
关系代数运算是以集合为基础的运算。
基本关系运算包括并、差、笛卡尔积、选择、投影。
数据更新操作包括:增删改。
一个表中的外键可以同时是主键。
关系操作通过关系数据语言(关系代数语言、关系演算语言、SQL)实现,关系数据语言的特点是高度非过程化。
数据库完整性
有效性规则属性是用于限制此字段输入值的表达式,可以防止不合法的数据输入到表中。
约束、规则、事务能实现数据完整性约束。
实体完整性、参考完整性、用户定义完整性都属于静态关系约束。
根据关系模式的完整性规则,一个关系中的主属性可以不唯一(候选码唯一),但不可以为空。
域完整性=列完整性
不能在视图上创建索引,不能在规则、缺省、触发器的定义中引用视图。
参照完整性可以通过建立为唯一约束和外键约束来实现。
实现完整性约束的方法有约束、规则、事务,不包括默认对象。
可以利用企业管理器删除约束。
UNIQUE约束强制了数据的实体完整性(主键约束、唯一约束、自增长约束)。
UNIQUE约束允许值为空。
违反参照完整性规则时系统可以有多种选择的操作,比如置为空值、级联删除等。
违反实体完整性规则时系统只能拒绝该操作。
关系数据库标准语言SQL
SQL是一种面向集合的操作方式。
having字句和where字句有时候可以互相取代。
SQL语言具有两种使用方式,分为交互式SQL和嵌入式SQL。
SQL中的数据控制命令包括:GRANT、COMMIT、REVOKE、ROLLBACK。
SQL Server提供的单行注释语句是使用“--”开始的一行内容。
SQL于1974年由Boyce和Charmberlin提出,1979年IBM公司首次在其关系数据库System R上实现了SQL。
数据描述语言的作用是定义数据库。
varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节),当存储数据为'ahng3456'时,则存储的内容为ahng3456和92个空格。
VARCHAR类型用于存储可变长度字符串,CHAR用于存储固定长度字符串。
char和varchar存储‘abc’实际占用的字节数为10,3。
操作查询包括删除查询、更新查询、追加查询和生成表查询。
将A表的记录复制到B表,且不删除B表的记录,可以使用追加查询。
更新查询一次更新一组数据,且更新之后数据不可恢复。
SELECT查询结果可以按照文本方式显示。
SELECT INTO 语句可以从一个表中选取数据,然后把数据插入另一个表中,常用于创建表的备份复件或者用于对记录进行存档。
在SQL的SELECT 语句中,FROM在关系代数中作为笛卡尔积操作,WHERE作为选择操作(作为谓词、选择动词),SELECT将结果投影。
COMPUTE BY必须和ORDER BY一起使用,且两个子句指定的列及顺序必须相同,不一定要与GROUP BY子句一起使用。
不可以在INSERT语句的VALUES关键字中计算插入列的值。
聚合函数COUNT(*)不能忽略空值。
聚合函数MAX(列名)中的列名不限制数据类型。
在WHILE循环语句中,如果循环语句的条数多于一条,必须使用BEGIN..END。
BETWEEN a AND b代表的区间为[a,b]。
HAVING在查询语句中必须依赖于GROUP BY,且后面应该跟组条件表达式。
IN是谓词,不属于标准SQL语言。
NOT (AGE IS NULL)是合法的。
主键列可以进行更新操作。
可在两个表的相同数据类型的不同名称的字段间创建关联。
导出表是执行查询语句产生的表,是内容,占用物理空间,属于内模式。视图是已经编译好的sql语句,是窗口,没有实际的记录,不占用物理空间,只是逻辑概念的存在,属于外模式。二者不同,也没有同样的结构。
为表建立索引可以提高查询速度,,但是维护索引要付出代价,当对表进行插入、删除和修改等操作时,系统会自动维护索引,也就是说索引会降低插入、删除、修改等操作的速度。
在一个表中主键索引和聚簇索引可以同时存在。
聚集索引是指数据库表中数据的物理顺序和键值的逻辑(索引)顺序相同,一个表只能有一个聚集索引,因为一个表的物理顺序只能有一种情况,所以对应的聚集索引只能有一个,唯一索引和聚集索引都能保持表记录的唯一性。
当建立唯一索引时,若有重复字段值出现,只存储重复出现记录的第一个。
视图的构造基于基本表和视图。
用户视图是用户看到的数据库。
视图名称在数据库中必须是唯一的,不能与其他表或视图同名。
视图<基本表,所以视图的定义功能、数据控制功能强于基本表,操作功能弱于基本表。
若想要对视图更新时必须满足子查询中的条件表达式,应当在CREATE VIEW语句中使用短语WITH CHECK OPTION。
对视图进行update或者insert操作时,保证更新或者插入的行满足图中定义的谓词条件 假如一张表里有个字段是专业。创建视图的时候 create view stu as select 学生 from table where 专业='计算机' with check option 这样where后面就实现了对专业的限定 以后你如果对视图添加记录的时候专业如果不是计算机的话不让添加进去的。
表中的数据发生改变,显示在视图中的数据也会发生改变。同样对视图的更新,会影响到原来表的数据。
修改视图时,使用WITH ENCRYPTION选项,可以对CREATE VIEW的文本进行加密。
只有行列子集的视图才能实现更新操作。
可以在表和临时表上面建立视图。
使用视图可以简化查询语句的编写,但是不能加快查询语句的执行速度。
改变表中的数据时,查询出的数据也会发生相应的改变。
查询出的数据不能修改。
存储过程一般用来完成数据查询和数据处理操作,所以在存储过程中不可以使用创建数据库对象的语句,即在存储过程中一般不能含有以下语句: CREATE TABLE ; CREATE VIEW ; CREATE DEFAULT ; CREATE RULE ;CREATE TRIGGER ;CREATE PROCEDURE。
Unicode 字符串常量格式与普通字符串相似,但它前面有一个 N 标识符。
指向操作系统资源的语句途径或者是提供一系列特定服务的语言程序是API。
元组演算和域演算都属于关系演算,关系演算以数理逻辑中的谓词演算为基础,比较接近于自然演算,表达能力强于关系代数,而关系代数是一种抽象的查询语言。。
关键字执行顺序:FROM->WHERE->GROUP BY->HAVING->SELECT->ORDER BY。
一个数据库有一个或多个文件组,其中主文件组(Primary File Group)是系统自动创建的,用户可以根据需要添加文件组,每个数据库必须要有一个日志文件。
在SQL Server,数据库文件有三类,分别是主要数据文件(.mdf)、次要数据文件(.ndf)、事务日志(.ldf),每个数据库都至少要有一个mdf和ldf,所以至少需要两个关联的存储文件。
每一个文件组管理一个或多个文件,一个文件只能属于一个文件组,其中主文件组中包含主要数据文件(*.mdf),主文件组中也可以包含次要数据文件 。(主要数据文件是系统默认生成的,并且在数据库中是唯一的;次要数据文件是用户根据需要添加的。)
除了主文件组之外,其他文件组只能包含辅助文件。
SQL Server采用的身份验证模式是Windows身份验证模式和混合模式。
嵌入式SQL采用游标机制来指示所取出元组位置。
自然连接:是一种特殊的等值连接。它要求两个关系中进行比较的分量必须是同名的属性组,并且在结果中去除重复的属性列,或者说在关系代数中,选取它们属性间满足一定条件的元组的操作。等值连接不去除重复列。
查询优化策略中,应该先做选择连接,再进行投影操作。
数据库做join操作时可以选择自连接,所以至少涉及一张表。
SELECT可以在一条语句里对多个变量同时赋值,而SET只能一次对一个变量赋值。
关系数据理论
关系模式中,属性A和B存在1对n的关系,则B->A。
关系模式R中的属性全部是主属性,R的最高范式必定是3NF。
消除了非主属性对主属性的部分函数依赖关系的1NF是2NF。
对象-关系数据库中的表都满足第一范式。
关系规范化中的插入异常是指应该被插入的数据没有被插入。
3NF消除主属性对码的部分和传递函数依赖规范化为BCNF。
对象-关系数据库满足一范式,不一定满足二范式,且提供继承机制,安全性好,但是没有达到美国TCSEC的B1标准。
1NF⊃2NF⊃3NF⊃BCNF⊃4NF⊃5NF。
在关系代数中,对一个关系做投影操作之后,会对相同的元组进行合并操作,所以新关系的元组个数小于或等于原来关系的元组个数。
一般对表分解到3NF即可。
数据库安全性
数据库的安全性确保用户被限制在做其想做的事情,完整性确保用户所做的事情是正确的。
存取控制子系统由定义用户权限和合法权限检查组成。
C2级DBMS支持自主存取控制(DAC),B1级DBMS支持强制存取控制(MAC)。
用户的权限是自身权限和所属的多个角色权限的并集,并由数据库对象和操作类型组成。
日志不能记录所有的查询操作,但是会记录所有的更新操作。
在使用计算机通过网络实现对数据库服务器访问时,用户首先要获得客户计算机操作系统的使用权,这属于操作系统安全性。
在用户通过登录认证并允许登录到SQL Server上之后,必须拥有数据库账户。
SQL Server服务器角色是一些系统定义好操作权限的用户组,其中的成员是登录账号。
并发控制
事务的撤销只涉及数据库,不会改变事务中的变量值。
X锁涉及到写操作,所以必须保留到事务终点,因此DML不提供专门的解除X封锁的操作,提供解除S锁的操作,可以增加事务并发操作的程度。
DML不可以实现并发控制。
DML只提供解除S封锁的操作,而不提供解除X锁的操作。
当一个用户对某个数据加排它锁进行修改时,其他用户可以读镜像数据库上的数据,而不必等待该用户释放锁。
回滚一定代表事务不成功结束。
事务的原子性是指数据库从一个一致性状态变成另一个一致性状态,已落实的事务会保证所有操作均已完成,并在事务回滚中,所有操作产生的影响均已恢复。
事务的原子性->事务管理子系统。事务的持久性->恢复管理子系统。一致性->完整性子系统。隔离性->并发控制子系统。
事务隔离级别:未提交读、提交读、可重复读、串行读。
一次封锁法遵循两段锁协议,但是两段锁协议并不要求事务必须一次将所有要使用的数据全部加锁,因此遵守两段锁协议的事务可能发生死锁。
在数据库系统中,读脏数据是指一个事务读了另一个事务未提交的数据。
在某个SQL Server数据库系统中,由于数据大量增加后,经常提示死锁,这时要使用SQL Profiler捕获死锁事件。
SQL中的视图提高了数据库系统的安全性。
当一个查询需要表中的行时,SQL Server自动生成页锁。
封锁导致的问题包括活锁(先来先服务)和死锁。
死锁的预防:一次封锁法、顺序封锁法。
死锁的诊断与解除:超时法、等待图法。
若数据库中只包含成功事务提交的结果,则此数据库此时处于一致性状态、安全状态。
冲突可串行化调度->可串行化调度;遵循两段锁协议->可串行化调度。
数据库恢复技术
事务故障:未commit,不正确状态,undo。
完整性控制是指保护数据库的数据正确性和有效性。
DBMS代码错误、硬件错误(CPU故障)、操作系统故障、系统断电可能会导致系统故障。
数据库恢复机制的关键问题是建立冗余数据,这些冗余数据包括日志文件,数据库后备副本。
转储按照转储时有无事物运行可以分为动态转储和静态转储,按照转储的数据量可以分为海量转储和增量转储,两两组合共有四种转储方式。
事物故障恢复和系统故障恢复必须使用日志文件。
动态转储方式必须建立日志文件。
已经提交的事务要REDO,未提交的事务要UNDO。
分布式数据库的同步复制方法是指所有场地上的副本总是具有一致性。
分布式数据库能够提高某些查询效率是因为其具有数据复本。
对数据库进行备份,主要是为了维护数据库的完整性,其中完整性是指数据在逻辑上的一致性、正确性、有效性、相容性。
在删除数据库之后应该对master数据库进行备份。
空设备不需要建立备份并从中恢复。
使用BACK DATABASE可以对数据库进行完全拷贝。
STORE DATA可以还原整个由BACK UP备份的数据库。
影子分页技术是一种数据库恢复技术。
延迟更新,也被称为 NO-UNDO/REDO 技术。每当执行任何事务时,都不会立即对数据库进行更新。它们首先记录在日志文件中,然后在提交完成后应用这些更改。这称为“重做”过程。回滚完成后,不会对数据库应用任何更改,并且日志文件中的更改也将被丢弃。如果提交是在系统崩溃之前完成的,那么在系统重新启动之后,日志文件中记录的更改就会被应用到数据库中。
即时更新:也称为UNDO/REDO技术。每当执行任何事务时,都会直接对数据库进行更新,并且还会维护包含旧值和新值的日志文件。提交完成后,所有更改都将永久存储到数据库中,因此日志文件中的记录将被丢弃。一旦完成回滚,旧值就会在数据库中恢复,并且对数据库所做的所有更改也将被丢弃。这称为“撤消”过程。如果提交是在系统崩溃之前完成的,那么在系统重新启动后,更改将永久存储在数据库中。
关系数据库设计理论
数据库的概念模型=信息模型,独立于具体的逻辑模型,独立于具体的机器和DBMS,所以概念设计的结果是一个与DBMS无关的概念模型,是现实世界到信息世界的语义抽象。
E-R的冲突包括属性冲突、命名冲突、结构冲突。
E-R图属于信息世界模型,是现实世界到机器世界的一个中间层次。
弱实体集没有码只有分辨符。
实体是信息世界的术语,与之对应的数据库术语为记录。
数据字典是进行详细的数据收集和数据分析所获得主要成果,它是关于数据库中数据的描述,即元数据,而不是数据本身,在需求分析、概念设计阶段建立。
数据字典包括数据项、数据结构、数据流(数据流程图DFD)、数据存储、处理过程、业务活动清单等。数据项是数据最小的组成单位,若干数据项可以组成一个数据结构。
数据库实施阶段的主要工作:建立数据库结构、编制调试应用程序、组织数据入库并进行试运行。
现实世界进行第一层抽象的模型, 称为概念模型;对现实世界进行第二层抽象的模型,称为数据模型。
设计数据库概念结构时,常用的数据抽象方法有三种:分类、聚集、概括。
视图的设计一般由三种设计次序,分别是自顶向下、自底向上、由内向外。
数据库设计者能有效控制的是IO服务和辅助空间;能够有限控制的是封锁延迟,CPU时间和主存空间;完全不能控制的是CPU和IO队列等待时间、数据通信延迟时间。