
四个基本定义1.数据数据库中存储的基本对象描述事物的符号记录2.数据库DB:是长期存储在计算机内、有组织的、可共享的大量数据的集合基本特征数据按一定的数据模型组织、描述和存储、可为各种用户共享、冗余度较小、数据独立性较高、易扩展3.数据库管理系统DBMS位于用户与操作系统之间的一层数据管理软件数据定义语言DDL、数据操纵语言DML、数据控制语言DCL4.数据库系统DBS由数据库、数据库管理系统、应用程序、数据库管理员构成数据库系统的特点数据结构化数据的共享性高冗余度低且易扩充数据独立性高数据独立性由数据库管理系统的二级映像功能保证物理独立性用户的应用程序与数据库中的物理存储是相互独立的。当数据的物理存储改变了应用程序不用改变逻辑独立性指用户的应用程序与数据库的逻辑结构是独立的。当数据的逻辑存储改变了应用程序不用改变数据由数据库管理系统统一管理和控制数据安全性保护、数据完整性、并发、数据库恢复数据模型对现实世界数据特征的抽象概念模型信息-》图E-R图逻辑模型图-》二维表数据模型二维表-》0/1实体、属性、码唯一标识实体的属性数据模型的组成要素数据结构、数据操作、数据的完整性约数条件常用的数据模型层次模型、网状模型、关系模型、面向对象数据模型、对象关系数据模型、半结构化数据模型层次模型优点数据结构比较清晰、查询效率高、有良好的完整性支持缺点节点之间多对多联系表示不自然、插入删除限制多、查询节点必须通过双亲结点、层次命令趋于程序化网状模型不适合大量数据的存储关系模型数据的逻辑结构是一张二维表关系二维表元组、域一行属性一列码表中可以唯一确定一行的属性要求不允许表中有表数据库系统的三级模式结构和二级映像三级模式结构模式、外模式、内模式1模式逻辑模式一个数据库中只有一个模式数据库中全体数据的逻辑结构和特征的描述是所有用户的公共视图2外模式子模式/用户模式一个数据库有多个外模式数据库中用户能够看见和使用的局部数据的逻辑结构和特征的描述是数据库的用户的数据视图3内模式存储模式一个数据库只有一个内模式是数据结构和存储结构的描述是数据在数据库内部的组织方式二级映像保证了数据的安全性、独立性外模式/模式映像保证了数据逻辑独立性内模式/模式映像保证了数据物理独立性简述关系模型的数据结构以及关系模型的优缺点关系模型的数据结构就是关系关系模型的特点优缺点优点关系模型是严格建立在数学基础上的关系模型概念单一关系模型的存取路径对用户透明从而具有更高的数据独立性更好的安全保密性缺点由于存取路径对用户透明查询效率不如非关系模型关系数据库域一组具有相同数据类型的值的集合笛卡尔积所有域的所有取值的一个组合不能重复关系-》二维表表的每行对应一个元组表的每列对应一个域候选码非空、无重复关系中某一组属性的值能唯一地标识一个元组则称为属性组为候选码主属性候选码的属性叫做主属性三类关系基本表、查询表、视图表虚表由基本表和其他视图的表导出的数据关系模式关系模式是对关系的描述关系模式与关系关系模式是描述静态的稳定的关系是关系模式在某一时刻的状态或内容是动态的、随时间不断变化的关系数据库以二维表为结构的数据库关系操作基本关系操作查询操作选择、投影、连接、除、并、差、交、笛卡尔积标红的为基本操作数据更新插入、删除、修改关系的完整性实体完整性主属性不能取空置参照完整性用户定义完整性根据用户需求定义关系代数抽象的查询语言用对关系的运算来表达查询运算对象和运算结果都是关系选择、投影、连接、除连接内连接:只连接匹配的行左外连接:包含左边表的全部行不管右边的表中是否存在与它们匹配的行以及右边表中全部匹配的行右外连接:包含右边表的全部行不管左边的表中是否存在与它们匹配的行以及左边表中全部匹配的行全外连接:包含左、右两个表的全部行不管另外一边的表中是否存在与它们匹配的行。关系数据库标准语言SQL功能查询数据库模式的创建、数据库的插入与修改、数据库的安全性定义与控制特征SQL集DDL、DML、DCL功能于一体可独立完成数据库生命周期的全部活动高度非过程化只提出做什么而不说明怎么做面向集合的操作方式SQL既可以是独立的语言又是嵌入式语言存储过程存储过程就像我们编程语言中的函数一样封装了我们的代码逻辑结构组成了关系数据库的内模式物理结构对用户是隐蔽的存储过程的优点能够将代码封装起来保存在数据库之中让编程语言进行调用存储过程是一个预编译的代码块执行效率比较高一个存储过程替代大量T_SQL语句 可以降低网络通信量提高通信速率存储过程的缺点每个数据库的存储过程语法几乎都不一样十分难以维护不通用业务逻辑放在数据库上难以迭代视图def.是从一个或多个基本表也可能包括其他视图中检索出的虚拟表它本身不存储数据。视图可以看作是基于基本表的查询结果集的临时表。视图可以进行查询操作但不能直接进行数据修改。视图的定义存储在数据库中。优点简化用户的操作用多种角度看数据提供了逻辑独立性保障了安全性更清晰的表达查询不可更新的视图1若视图是由两个以上基表导出的此视图不允许更新2若视图的字段来自字段表达式或常数则不允许对此视图执行INSERT和UPDATES作但允许DELETE操作3若视图的字段来自聚集函数则此视图不允许更新4若视图定义中含有GROUP BY子句则此视图不允许更新5若视图定义中含有DISTINCT短语则此视图不允许更新6若视图定义中有嵌套查询并且内层查询的 FROM子句中涉及的表也是导出该视图的基本表则此视图不允许更新7一个不允许更新的视图上定义的视图也不允许更新数据定义删除CASCADE级联删除RESTRICT限制删除建立表时外码的定义建立索引的目的加快查询速度顺序文件上的索引、B树索引、散列hash索引、位图索引数据字典关系数据库管理系统内部的一组表它记录了数据库中所有定义信息数据查询单表查询选择表中若干列选择表中若干元组distinct:去重、all:全部查询满足条件的元组用where字符匹配3.ORDER BY语句可以按一个或多个属性列排序AES升序DESC降序4.聚集函数5.GROUP BY连接查询同时涉及两个表以上的查询外连接嵌套查询子查询不能使用order by不相关子查询子查询的条件不依赖于父查询相关子查询子查询的条件依赖于父查询集合查询并union交intersect差except数据更新数据库安全性用户身份鉴别、多层存取控制、审计、视图、数据加密1用户身份鉴别2存取控制定义用户权限合法性检查自主存取方法GRANT和REVOKE语句实现强制存取控制MAC等级更高用敏感度标记仅当主体的许可证级别大于或等于客体的密级时该主体才能读取相应的客体仅当主体的许可证级别小于或等于客体的密级时该主体才能写相应客体3视图机制把要保密的数据对无权存取这些数据的用户隐藏起来对数据提供一定程度的安全保护4审计功能AUDIT启用一个专用的审计日志将用户对数据库的所有操作记录在上面监控员监控数据库中的各种行为找出非法存取数据的人、时间或内容5加密方法存储加密传输加密数据库的完整性规则有哪几类实体完整性主属性不为空、参照完整性主码与外码、用户定义完整性1实体完整性主码要求每个表中的主键必须具有唯一性和非空性。也就是说表中的每个 实体必须能构被唯一的标识并且要求主键列不能包含空值。2 参照完整性外码两个表之间建立外键关系时要求引用表中的外键必须与被引用表中的主键值相匹配。也就是说如果一个表中的外键引用了另一个表中的某个主键值那么被引用的主键值必须存在于被引用表中。3用户定义的完整性创建表时定义约束条件用户定义的完整性规则是根据具体业务需求而定义的规则。这些规则可通过触发器、自定义约束或存储过程等方式实现。例如限制某个字段的取值范围、检查复杂的业务逻辑规则等。完整性约束命名子句断言可以定义多个表或聚集操作的比较复杂的完整性约束任何断言不为真的都会被拒绝执行简述数据库完整保护的主要任务和措施主要任务是保障数据的正确性有效性提高数据对用户的可用性其措施如下适时检查完整约束条件保证语句完整。控制并发系统操作使其不破坏完整性。在系统出现故障候即时恢复系统。触发器1触发器触发器是与表有关的数据库对象在满足预定义条件时会被触发从而执行触发器中定义的语句集合。2触发条件数据库变更、插入、删除、修改数据时3触发器的作用强制数据完整性当插入或者修改表中数据的时候触发器可以检查数据的有效性并拒绝不合规定的操作。数据验证和转换对即将插入、更新、删除的数据进行验证和转换日志记录和审计可以用于记录数据操作的日志自动化业务逻辑执行复杂的业务逻辑数据依赖关系看数据库是否有问题数据库冗余增删改查异常主属性候选码中的每个属性1.函数依赖完全vs部分|传递依赖|平凡vs非平凡依赖一个x对应一个yyf(x)2.多值依赖一个x对应多个y求解候选码只在右边出现不属于候选码只在左边出现必属于候选码左右均不出现必属于候选码求必属于属性集的闭包闭包U,则必为候选码若仍未找到左右两边出现的属性依次与必选属性组和求属性闭包合集若闭包U则为候选码范式def.符合某一种级别的关系模式的集合第一范式1NF不能大表套小表二维表中的数据不能再分解第二范式2NF每一个非主属性完全依赖于任何一个候选码非主属性对主属性没有部分函数依赖第三范式3NF每一个非主属性对任何候选码没有传递依赖BC范式BCNF消除主属性对码的部分和传递依赖第四范式4NFR属于BCNF并且没有非平凡且非函数依赖的多值依赖数据依赖的公理系统闭包的求解闭包def.在关系模式U,F中为F所蕴含的函数依赖的全体叫做F的闭包函数依赖集等价-》两个闭包相同eg. U{A,B,C,D,E}F{AB-C,B-D,C-E,EC-B,AC-B}求解AB的闭包ABABCDABCDEABCDE所以AB的闭包为ABCDE求解最小依赖集/极小依赖集1确保右部为单属性拆2把每个拿掉看看有无冗余删除后等价的去掉也就是看去除之后左部的闭包是否在里面仍然可以推出3看左部不为单属性确保完全函数依赖数据库设计需求分析-概念结构设计画E-R图-逻辑结构设计转二维表规范化-物理结构设计建立索引E-R图向关系模型转化逻辑结构设计1.一个实体转换为一个关系模型关系的码是实体的码2.联系转换为关系模型11-1联系转换为一个独立的关系模式属性与其相连实体的码以及联系本身的属性码每个实体的码可以与任意一端对应的表合并属性对应关系的码和联系本身的属性码不变21-n联系转换成独立的关系模式属性与该联系相连的各实体的码以及联系本身的属性码n端实体的码与n端对应的关系模式合并属性对应关系的码和联系本身的属性码不变3m-n联系必须转换为独立的关系模式属性与其相连实体的码以及联系本身的属性码各实体码的组合优化数据模型逻辑结构设计确定数据依赖-对数据依赖进行极小化处理-规范化数据库管理系统的存取方法--常用B树索引1B树索引2HASH索引3聚簇索引什么是游标游标是系统为用户开设的一个数据缓冲区存放SQL语句的执行结果每个游标区都有一个名字用户可以用SQL语句逐一从游标中获取记录并赋给主变量交由主语言进一步处理不用游标的SQL语句说明性语句数据定义语句数据控制语句查询结果为单记录的SQL语句非CURRENT形式的增删改查语句必须使用游标的SQL语句查询结果为多条记录的SELECT语句CURRENT形式的UPDATE语句CURRENT形式的DELETE语句只想修改/删除其中的某个记录什么是存储过程由过程化SQL语句书写的过程经编译和优化后存储在数据库服务器中使用时只要调用优化即可优点1运行效率高2降低了客户机和服务器之间的通信量3方便实施企业规则ODBC编程原因由于不同数据库管理系统的存在在某个关系数据库管理系统下编写的应用程序不能在另一个关系数据库管理系统下运行许多应用程序需要共享多个部门的数据资源访问不同的·关系数据库资源定义提供了一组访问数据库的应用程序编程接口简述事务的概念及事务的四个特征事务一个不可分割的工作单位这些操作要么全做要么不做1原子性要么全做要么全不做2一致性事务执行的结果必须是使数据库从一个一致性状态变换到另一个一致性状态3隔离性一个事务的执行不能够被另一个事务干扰4持久性数据库的改变是永久的事务的ACID特性怎么保证REDO/UNDO机制事务开始时数据库会记录操作的原始数据状态前镜像用于 UNDO和修改后的数据状态后镜像用于 REDO。事务提交前所有修改通常会先写入内存并记录到日志中事务提交后数据库通过日志将已提交的修改持久化到磁盘上确保即使系统崩溃已提交的事务也能恢复通过 REDO。事务失败或回滚时数据库使用 UNDO 日志将数据恢复到事务开始前的状态。简述故障的种类1事务内部的故障采用REDO或者UNDO撤销技术2系统故障DBMS系统突然停转要重启不会破坏数据库3介质故障硬件损坏破坏数据库4计算机病毒什么是数据库恢复恢复原则是什么恢复如何实现数据库恢复当数据库系统发生故障时通过一些技术使数据库从不正确的状态恢复到最近一个正确的状态恢复的基本原则冗余即数据的重复存储恢复常用的方法1数据转储对失败的事务重新执行2日志文件记录事务对数据的更新操作的文件简述恢复策略中的各个故障时如何恢复1事务故障事务异常终止就撤销之前的操作2系统故障还没执行的UNDO丢失的REDO3介质故障重装数据库重做已经完成的事务并发操作可能会产生哪些问题用什么方法能避免各种不一致的情况1丢失数据两个事务都对一个数据进行修改一个先修改另一个随后修改第二个修改覆盖了第一个的修改。两个事务更新相同的数据源如果第一个事务被提交第二个却被撤销那么连同第一个事务做的更新也被撤销。2读脏数据当一个事务读取另一个事务尚未提交的修改时产生脏读。3不可重复读T1读取一个数据T2对该数据做了修改。如果 T1再次读取这个数据此时读取的结果和第一次读取的结果不同。**一个事务对同一行数据重复读取两次但是却得到了不同的结果。**同一查询在同一事务中多次进行由于其他提交事务所做的修改或删除每次返回不同的结果集。4幻影读事务在操作过程中进行两次查询第二次查询的结果包含了第一次查询中未出现的数据用并发控制封锁方法避免不一致的情况什么是封锁基本的封锁类型有哪些封锁事务在对某个数据对象操作之前先向系统发出请求对其加锁在事务释放他的锁之前其他事务不能更新或读取此数据对象1排他锁写锁X锁可以读取和修改数据2共享锁读锁S锁只可以读取不可修改数据简述封锁协议1一级封锁协议修改时必须加X锁直到结束解决丢失修改2二级封锁协议读的时候加S锁用完就释放解决读脏数据3三级封锁协议读的时候加S锁直到结束解决不可重复读什么是死锁预防死锁的方法T1等待T2而T2等待T1T1和T2两个事务永远不能结束形成死锁预防死锁的方法1一次封锁法每个事务必须一次将所有要使用的数据全部加锁否则就不能继续执行2顺序封锁法预先对数据对象规定一个封锁顺序所有事务都按这个顺序实行封锁什么是活锁简述活锁产生的原因和解决方案活锁的状态是变化的只是无法达到目的。产生原因当一系列封锁不能按照其先后顺序执行时就可能导致一些事务无限期等待某封锁从而导致活锁。避免活锁的简单方法采用先来先服务的策略。死活与活锁的区别1处于活锁的实体是在不断的改变状态而处于死锁的实体表现为等待2活锁有可能自行解开死锁则不能要解决数据的不一致性可以采取以下措施合理设计数据库结构使用约束和规则来确保数据的一致性。使用事务和锁机制来控制并发访问防止数据的不一致性。实施严格的访问权限控制限制用户对数据的访问和修改。定期进行数据清理和校验及时发现和修复数据的不一致性问题。