1、数据库原理与应用重要知识点总结三级模式模式:模式又称逻辑模式,是数据库中全体数据的整体逻辑结构和特征的描述。是所有用户的公共数据视图。外模式:外模式又称为子模式或用户模式,是数据库用户能看见和使用的局部数据的逻辑结构和特征的描述 。是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。内模式:内模式又称存储模式,是数据物理结构和存储方式的描述。是数据在数据库内部的表示方式。两级映像外模式/模式映像:对于每一个外模式,数据库系统都有一个外模式/模式映像,它定义了该外模式与模式的对应关系。当模式改变时,由数据库管理员对各个外模式/模式映像做相应的修改,可以使外模式不变,保证了数据与程序的逻辑独
2、立性数据的逻辑独立性。模式/内模式映像:一个数据库只有一个模式,也只有一个内模式。这一映像是唯一的,用于定义数据全局逻辑结构与存储结构之间的对应关系。当数据库存储结构改变时,由数据库管理员对模式/内模式映像做相应的修改即可,可以使模式保持不变,从而应用程序也不必改变,保证了数据与程序的物理独立性数据的物理独立性。存取控制机制:定义用户权限,并将用户权限存入数据字典中(这些定义被称为安全规则或授权规则)。权限即用户对某一数据对象的操作权力。合法性检查,当用户发出存取数据库操作的请求后,DBMS查找数据字典,根据安全规则进行合法性检查,若用户的请求超出了定义的权限/密级/角色,系统将拒绝执行此操作
3、。视图机制:视图-虚表-导出表为不同用户定义不同的视图,把数据对象限制在一定的范围。通过视图机制把要保密的数据对无权操作的用户隐藏起来。审计系统提供的一种事后检查的安全机制。建立审计日志,用以记录用户对数据库的所有操作。检查审计日志,找出非法存取数据的人、时间和内容。审计很浪费时间和空间,主要用于安全性要求较高的部门。RBAC(基于角色的存取控制) role-based access control特点:由于角色/权限之间的变化比角色/用户关系之间的变化相对要慢得多,减小了授权管理的复杂性,降低管理开销。灵活地支持企业的安全策略,并对企业的变化有很大的伸缩性。强制存取控制MAC mandato
4、ry access control强制存取控制是通过对敏感度标记进行控制的。定义:每一个数据对象都被标以一定的密级,每一个用户也被授予某一级别的许可证,对于任意一个对象,只有具有合法许可证的用户才可以存取。特点:严格,不是用户能够直接感知或进行控制的。适用性:对数据有严格而固定密级分类的部门军事部门,政府部门。敏感度标记:绝密、机密、可信、公开仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体。仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体。自主存取控制discretionary access control 定义:用户对不同的数据库对象有不同的权限,不同
5、的用户对同一数据对象也有不同的权限,而且用户还可以将其拥有的存取权限转授给其他用户。特点:非常灵活权限控制三要素:用户、数据库对象、操作类型数据库安全性:保护数据库以防止不合法的使用所造成的数据泄漏、更改或破坏。实现数据库安全性控制的常用方法和技术用户身份鉴别:静态口令鉴别、动态口令鉴别、生物特征鉴别、智能卡鉴别存取控制视图机制审计数据加密SQL的特点1.综合统一2.高度非过程化3.面向集合的操作4.以同一种语法结构提供两种使用方式(既是自含式语言,又是嵌入式语言)5.语言简单,易学易用SQL的功能和组成:DDL(data definition language)数据定义语言:数据定义功能DM
6、L(data manipulation language)数据操纵语言:数据查询、数据更新功能DCL(data control language)数据控制语言:数据控制功能数据库完整性是指数据的正确性和相容性1.实体完整性:主码唯一且主属性不为空值2.参照完整性:外码或为空,或为对应主码的某个值3.用户定义完整性:针对某一具体应用所涉及的数据必须满足的约束条件DBMS的完整性控制机制应具有哪三方面的功能1.定义功能 2.检查功能 3.违约处理功能触发器定义:触发器是提供给程序员和数据分析员来保证数据完整性的一种方法。一个触发器有三部分组成:事件、条件、动作NoSQL数据库:键值数据库:Riak
7、、 Redis、Memcached、Amazons Dynamo、Project Voldemort主要应用GitHub(Riak)、BestBuy(Riak)、Twitter(Redis和Memcached)、StackOverFlow(Redis)、Instagram(Redis)、Youtube(Mencached)、Wikipedia(Memcached)列存储数据库:Cassandra、Hbase、Hypertable、Amazon SimpleDB主要应用Ebay(Cassandra)、Instagram(Cassandra)、NASA(Cassandra)、Twitter(Cas
8、sandra and Hbase)Facebook(Hbase)、Yahoo!(Hbase)文档型数据库:MongoDB、CouchDB、RavenDB、OrientDB、Terrastore主要应用:SAP(MongoDB)、Codecademy(MongoDB)、Foursquare(MongoDB)、NBC News(RavenDB)图形数据库:Neo4J、InfoGrid、Infinit Graph、OrientDB、HyperGraphDB、FlockDB主要应用Adobe(Neo4J)、Cisco(Neo4J)、T-Mobile(Neo4J)事务是用户定义的一个数据库操作序列,这些
9、操作要么全做,要么全不做,它们是一个不可分割的工作单位。原子性atomicity:事务是数据库的逻辑工作单元,事务中包括的诸操作要么都做,要么都不做,不可分割。一致性consistecy:事务的执行结果必须使数据库从一个一致性状态转变到另一个一致性状态。隔离性isolation:一个事务的执行不能被其他事务干扰。持续性durability:一个事务一旦提交,它对数据库中数据的改变就应该是永久的,接下来的其他操作或故障不应该对其执行结果有任何影响。ACID故障的种类:事物内部故障、系统故障软故障、介质故障硬故障、计算机病毒事物内部故障:余额不足运算溢出并发事务发生死锁违反完整性约束系统故障:造成
10、系统停止运行的任何事件,系统必须重新启动1.特定类型的硬件错误2.CPU故障3.操作系统故障4.DBMS代码错误5.停电介质故障:系统外存故障,破坏性最大1.磁盘损坏2.磁头碰撞3.瞬间强磁场干扰计算机病毒:是一种人为的故障或破坏1.破坏数据2.破坏系统故障对数据库的影响:1.数据库本身的破坏,数据不可访问。介质故障、病毒2.数据库可以访问,但数据不正确。 事物内部故障、系统故障、病毒数据库恢复技术把数据库从错误状态恢复到某一已知的正确状态的功能叫数据库恢复恢复的基本原理:数据冗余*如何建立冗余数据1.数据转储:由DBA定期地将整个数据库复制到磁带或另一磁盘上的过程2.登记日志文件日志文件:记
11、录事务对数据库更新操作的文件。存储过程存储过程是指存储在服务器上的一组预编译的SQL语句,它是封装重复任务操作的一种方法。存储过程的作用:允许模块化的程序设计更快的执行速度有效降低网络流量较好的安全机制ODBC 开放数据库连接 Open DataBase Connectivity微软公司开发的标准的接口协议,包括数据通信方法、数据传输协议、DBMS等多种技术,允许应用程序以SQL为数据存储标准,来存取不同的DBMS管理的数据。1.并发操作可能带来数据的不一致性丢失修改不可重复读读“脏”数据产生数据不一致性的主要原因是并发操作破坏了事务的隔离性。解决办法:封锁,即给事务加锁(1)排它锁(Excl
12、usive Locks,X锁,写锁) 若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直至T释放A上的X锁。(2)共享锁(Share Locks,S锁,读锁) 若事务T对数据对象A加上X锁,则事务T可以读取A但不能修改A,其他事物只能对A加S锁,而不能加X锁,直至T释放A上的S锁。封锁协议一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直至事务结束才释放。防止丢失修改二级封锁协议:在一级封锁协议基础上,若事务T在读取数据R之前必须先对其加S锁,读完后即可释放。防止丢失修改,还可以防止读“脏”数据三级封锁协议:在一级封锁协议基础上,若事务T在读
13、取数据R之前必须先对其加S锁,直至事务结束才释放防止丢失修改及读“脏”数据,还可以防止不可重复读活锁:如果事务T1封锁了数据R,事务T2又请求封锁数据R,于是T2等待;接着T3、T4也请求封锁数据R,T3、T4也等待;当T1释放了R上的锁之后,系统首先批准了T3,T3释放了R上的锁之后,系统接着批准了T4,T2仍然等待,这种现象即活锁。预防办法:等待队列中的元素出队策略采取先来先服务策略。死锁:如果事务T1封锁了数据R1,事务T2封锁了数据R2;然后T1又申请封锁R2,于是T1等待;接着T2又申请封锁R1,于是T2也等待;,造成两个事务无限等待,这种现象即死锁。预防办法:在有多个封锁数据对象时
14、,可采取一次封锁法、顺序封锁法。死锁的诊断:超时法、等待图法死锁的解除:如果发生了死锁,则选择处理死锁代价最小的事务,将其撤销,释放此事务持有的所有的锁,使其它事务得以继续运行下去。并发事务正确性的准则_可串行性_。什么样的并发调度是正确的调度?可串行化的调度室正确的调度 。可串行化的调度的定义:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同,称这种调度策略为可串行化的调度。两段锁协议:1.在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁;扩张阶段2.在释放一个封锁之后,事务不再申请和获得任何其他封锁。收缩阶段封锁粒度:封锁对象的大小多粒度封锁:
15、在一个系统中同时支持多种封锁粒度供不同事务选择意向锁:如果对一个结点加意向锁,则说明该结点的下层结点正在被加锁;对任一结点加锁,必须先对它的上层结点加意向锁。封锁冲突检查:不需检查其下层结点上的锁。X锁与任何其它类型的锁都不相容,如果数据对象被加上X锁,后裔结点不可能被以任何锁的形式访问,因此XIS锁没有意义。完整性约束是否能够保证数据库在处理多个事务时处于一致状态?答:完整性约束能保证操作后的数据满足某种约束条件,并不能使多个事务被正确的调度,无法保证数据库处于一致状态。简答:查询优化的一般准则1.选择运算尽可能先做2.把对同一关系的投影和选择运算同时进行3.把投影预算同其前后的双目运算结合起来4.把某些选择同它前面要执行的笛卡尔积运算结合起来成为一个连接运算5.在执行连接前对关系适当地预处理在连接属性上建立索引或对关系排序;6.找出公共子表达式