数据库培训.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数据库(DATABASE)培训目录一、数据库介绍二、数据库系统组成三、数据库系统架构四、数据库设计(范式)五、数据库对象六、数据库操纵语言(SQL)七、数据库应用数据库简介•定义:数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。数据库指的是以一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度的特点、是与应用程序彼此独立的数据集合。•类型:数据库通常分为层次式数据库、网络式数据库和关系式数据库三种。•主流数据库:ORACLESQLServerDB2MySQLMongoDB•数据库系统(DatabaseSystem)数据库系统,是由数据库及其管理软件组成的系统。数据库系统是为适应数据处理的需要而发展起来的一种较为理想的数据处理系统,也是一个为实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质、处理对象和管理系统的集合体。•数据库系统一般包括4个部分组成(1)数据库(database,DB):是指长期存储在计算机内的,有组织,可共享的数据的集合。(2)硬件:构成计算机系统的各种物理设备,包括存储所需的外部设备。(3)软件:包括操作系统、数据库管理系统及应用程序。(4)人员:数据库管理员(databaseadministrator,DBA)、开发人员等。•数据库系统一般由数据库、数据库管理系统(DBMS)、应用系统、数据库管理员和用户构成。DBMS是数据库系统的基础和核心。数据库系统⑴实现数据共享数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享。⑵减少数据的冗余度同文件系统相比,由于数据库实现了数据共享,从而避免了用户各自建立应用文件。减少了大量重复数据,减少了数据冗余,维护了数据的一致性。⑶数据的独立性数据的独立性包括逻辑独立性(数据库中数据库的逻辑结构和应用程序相互独立)和物理独立性(数据物理结构的变化不影响数据的逻辑结构)。⑷数据实现集中控制文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系。⑸数据一致性和可维护性,以确保数据的安全性和可靠性主要包括:①安全性控制:以防止数据丢失、错误更新和越权使用;②完整性控制:保证数据的正确性、有效性和相容性;③并发控制:使在同一时间周期内,允许对数据实现多路存取,又能防止用户之间的不正常交互作用。⑹故障恢复由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。数据库系统能尽快恢复数据库系统运行时出现的故障,可能是物理上或是逻辑上的错误。比如对系统的误操作造成的数据错误等。数据库特点•Client/Server架构,即服务器/客户端架构。数据库系统架构•B/S架构即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过浏览器实现。系统架构数据库设计•范式设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。第一范式•第一范式(1NF)所谓第一范式(1NF)是指在关系模型中,对域添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。即实体中的某个属性有多个值时,必须拆分为不同的属性。在符合第一范式(1NF)表中的每个域值只能是实体的一个属性或一个属性的一部分。数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。在当前的任何关系数据库管理系统(DBMS)中,傻瓜也不可能做出不符合第一范式的数据库,因为这些DBMS不允许你把数据库表的一列再分成二列或多列。因此,你想在现有的DBMS中设计出不符合第一范式的数据库都是不可能的。第二范式•第二范式第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。简而言之,第二范式就是在第一范式的基础上属性完全依赖于主键。把所有这些信息放到一个表SelectCourse中(学号,学生姓名、年龄、性别、课程名称、课程学分、系别、课程成绩,系办地址、系办电话)下面存在如下的依赖关系。(学号,课程名称)→(学生姓名,年龄,课程成绩,课程学分)•解决方案把选课关系表SelectCourse改为如下三个表:学生:Student(学号,学生姓名,年龄,性别,系别,系办地址、系办电话)课程:Course(课程名称,课程学分);选课关系:SelectCourse(学号,课程名称,课程成绩)。第三范式•第三范式在2NF基础上,任何非主属性不依赖于其它非主属性[在2NF基础上消除传递依赖]第三范式(3NF)是第二范式(2NF)的一个子集,即满足第三范式(3NF)必须满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个关系中不包含已在其它关系已包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性,也就是在满足2NF的基础上,任何非主属性不得传递依赖于主属性。前面的学生表Student(学号,学生姓名,年龄,性别,系别,系办地址、系办电话),关键字为单一关键字学号,因为存在如下决定关系:•(学号)→(学生姓名,年龄,性别,系别,系办地址、系办电话)•但是还存在下面的决定关系•(学号)→(系别)→(系办地点,系办电话)•解决方案把选课关系表Student改为如下二个表:•学生:(学号,学生姓名,年龄,性别,系别);•系别:(系别,系办地址、系办电话)。数据库对象•表数据库中的表与我们日常生活中使用的表格类似,它也是由行(Row)和列(Column)组成的。•索引索引是根据指定的数据库表列建立起来的顺序。它提供了快速访问数据的途径•视图视图是一个虚拟的表,在数据库中并不实际存在。视图是由查询数据库表产生的,它限制了用户能看到和修改的数据。•完整性约束数据库表中数据信息的存储的规则和限制•存储过程存储过程是为完成特定的功能而汇集在一起的一组SQL程序语句,经编译后存储在数据库中的SQL程序。•触发器触发器由事件来触发,是特殊的存储过程。当对一个表进行插入、更改、删除时,这组命令就会自动执行。•用户所谓用户就是有权限访问数据库的人。表(TABLE)•表类型1.普通堆表2.索引组织表3.分区表4.簇表5.临时表6.外部表•分区表类型1.范围分区表:按字段数据范围分区的表2.列表分区表:按字段数据列表固定可枚举值分区的表3.哈希分区表:按字段数据Hash值分区的表4.组合分区表:在分区中可以再建立子分区,以实现分区组合。可任意对上述各类分区进行组合分区。索引(INDEX)•索引类型1.B-树索引2.位图索引3.HASH索引4.反转键索引5.基于函数的索引6.分区索引•应该建索引列的特点:1.在经常需要搜索的列上,可以加快搜索的速度;2.在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构;3.在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度;4.在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的;5.在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间;6.在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。索引(INDEX)•优点:1.通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2.可以大大加快数据的检索速度,这也是创建索引的最主要的原因。3.可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。4.在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。5.通过使用索引,可以在查询的过程中,使用查询优化器,提高系统的性能。•缺点:1.创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。2.索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。3.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。视图(VIEW)•视图视图是一个虚拟表,视图并不在数据库中存储数据值,数据库中只在数据字典中存储对视图的定义。•优点:1.为用户集中数据,简化用户的数据查询和处理。2.屏蔽数据库的复杂性,用户不必了解数据库的复杂性。3.简化用户权限的管理,只授予用户使用视图的权限。4.便于数据共享,多个用户不必都定义所需的数据。5.可以重新组织数据,以便关联到其他应用中。完整性约束(CONSTRAINT)•约束约束是强加在表上的规则或条件。确保数据库满足业务规则。保证数据的完整性。当对表进行DML或DDL操作时,如果此操作会造成表中的数据违反约束条件或规则的话,系统就会拒绝执行这个操作。约束可以是列一级别的也可以是表级别的。•分类:1.非空(NOTNULL)约束:顾名思义,所约束的列不能为NULL值。否则就会报错2.唯一(UNIQUE)约束:在表中每一行中所定义的这列或这些列的值都不能相同。必须保证唯一性。否则就会违法约束条件。3.主键(PRIMARYKEY)约束:唯一的标识表中的每一行,不能重复,不能为空。需要注意的是:每个表只能有且有一个主键约束。4.外键(FOREIGNKEY)约束:用来维护从表(ChildTable)和主表(ParentTable)之间的引用完整性.外键约束是个有争议性的约束,它一方面能够维护数据库的数据一致性,数据的完整性。防止错误的垃圾数据入库;另外一方面它会增加表插入、更新等SQL性能的额外开销。5.条件(CHECK)约束:表中每行都要满足该约束条件。条件约束既可以在表一级定义也可以在列一级定义。在一列上可以定义任意多个条件约束。存储过程(PROCEDURE)•存储过程存储过程(StoredProcedure)是一组为了完成特定功能的SQL语句集,存储在数据库中经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。•优点:1.重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。2.提高性能。存储过程在创建的时候在进行了编译,将来使用的时候不再重新翻译。一般的SQL语句每执行一次就需要编译一次,所以使用存储过程提高了效率。3.减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。4.安全性。参数化的存储过程可以防止SQL注入式攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。•缺点:1.移植问题,数据库端代码当然是与数据库相关的。不能跨数据库。2.重新编译问题,因为后端代码是运行前编译的,如果带有引用关系的对象发生改变时,受影响的存储过程、包

1 / 29
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功