当前位置:文档之家› 数据库培训讲义.

数据库培训讲义.


索引(INDEX)
• 优点: 1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 2. 可以大大加快数据的检索速度,这也是创建索引的最主要的原因。 3. 可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有 意义。 4. 在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和 排序的时间。 5. 通过使用索引,可以在查询的过程中,使用查询优化器,提高系统的性能 。 • 缺点: 1. 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。 2. 索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一 定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。 3. 当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这 样就降低了数据的维护速度。
(1) 数据库(database,DB):是指长期存储在计算机内的,有组织,可共享的数据的集合。 (2) 硬件:构成计算机系统的各种物理设备,包括存储所需的外部设备。 (3) 软件:包括操作系统、数据库管理系统及应用程序。 (4) 人员:数据库管理员(data base administrator,DBA)、开发人员等。
பைடு நூலகம்
数据库对象
表 数据库中的表与我们日常生活中使用的表格类似,它也是由行(Row) 和列 (Column)组成的。 • 索引 索引是根据指定的数据库表列建立起来的顺序。它提供了快速访问数据的途径 • 视图 视图是一个虚拟的表,在数据库中并不实际存在。视图是由查询数据库表产 生的,它限制了用户能看到和修改的数据。 • 完整性约束 数据库表中数据信息的存储的规则和限制 • 存储过程 存储过程是为完成特定的功能而汇集在一起的一组SQL 程序语句,经编译后 存储在数据库中的SQL 程序。 • 触发器 触发器由事件来触发,是特殊的存储过程。当对一个表进行插入、更改、删 除时,这组命令就会自动执行。 • 用户 所谓用户就是有权限访问数据库的人。 •
表(TABLE)
• 表类型 1. 普通堆表 2. 索引组织表 3. 分区表 4. 簇表 5. 临时表 6. 外部表
分区表类型 1. 范围分区表:按字段数据范围分区的表 2. 列表分区表:按字段数据列表固定可枚举值分区的表 3. 哈希分区表:按字段数据Hash值分区的表 4. 组合分区表:在分区中可以再建立子分区,以实现分区组合。可任意对上 述各类分区进行组合分区。 •
第三范式
• 第三范式
在2NF基础上,任何非主属性不依赖于其它非主属性[在2NF基础上消除传递依赖] 第三范式(3NF)是第二范式(2NF)的一个子集,即满足第三范式(3NF)必须满足 第二范式(2NF)。简而言之,第三范式(3NF)要求一个关系中不包含已在其它关系已 包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门有部门编号(dept_id )、部门名称、部门简介等信息。那么在员工信息表中列出部门编号后就不能再将部门名 称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据 第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。简而言之,第三范式就是 属性不依赖于其它非主属性,也就是在满足2NF的基础上,任何非主属性不得传递依赖于 主属性。 前面的学生表Student(学号,学生姓名,年龄,性别,系别,系办地址、系办电话) ,关键字为单一关键字"学号",因为存在如下决定关系: • (学号)→ (学生姓名,年龄,性别,系别,系办地址、系办电话) • 但是还存在下面的决定关系 • (学号) → (系别)→(系办地点,系办电话) • 解决方案 把选课关系表Student改为如下二个表: • 学生:(学号,学生姓名,年龄,性别,系别); • 系别:(系别,系办地址、系办电话)。
索引(INDEX)
• 索引类型 1. B-树索引 2. 位图索引 3. HASH索引 4. 反转键索引 5. 基于函数的索引 6. 分区索引

应该建索引列的特点: 1. 在经常需要搜索的列上,可以加快搜索的速度; 2. 在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构; 3. 在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度; 4. 在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指 定的范围是连续的; 5. 在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用 索引的排序,加快排序查询时间; 6. 在经常使用在WHERE 子句中的列上面创建索引,加快条件的判断速度。

数据库系统一般由数据库、数据库管理系统(DBMS)、应用系统、数据库管理 员和用户构成。DBMS是数据库系统的基础和核心。
数据库特点
⑴ 实现数据共享
数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口 使用数据库,并提供数据共享。
⑵ 减少数据的冗余度
同文件系统相比,由于数据库实现了数据共享,从而避免了用户各自建立应用文件。减少 了大量重复数据,减少了数据冗余,维护了数据的一致性。
存储过程(PROCEDURE)
• 存储过程
存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,存储在数据 库中经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参 数(如果该存储过程带有参数)来执行它。

优点:
1. 重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。 2. 提高性能。存储过程在创建的时候在进行了编译,将来使用的时候不再重新翻译。 一般的SQL语句每执行一次就需要编译一次,所以使用存储过程提高了效率。 3. 减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以 及参数就可以了,因此降低了网络传输的数据量。 4. 安全性。参数化的存储过程可以防止SQL注入式攻击,而且可以将Grant、Deny以 及Revoke权限应用于存储过程。
系统架构
• Client/Server架构, 即服务器/客户端架构。 数据库系统架构 B/S架构 即Browser/Server (浏览器/服务器) 结构,是随着 Internet技术的兴起,对C/S结构 的一种变化或者改进的结构。在 这种结构下,用户界面完全通过 WWW浏览器实现。

数据库设计
数据库(DATABASE)培训
目 录
一、数据库介绍 二、数据库系统组成 三、数据库系统架构 四、数据库设计(范式) 五、数据库对象 六、数据库操纵语言(SQL)
七、数据库应用
数据库简介
• 定义:数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。数 据库指的是以一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度 的特点、是与应用程序彼此独立的数据集合。 • 类型:数据库通常分为层次式数据库、网络式数据库和关系式数据库三种。 • 主流数据库: ORACLE SQL Server DB2 MySQL MongoDB
⑸数据一致性和可维护性,以确保数据的安全性和可靠性
主要包括:①安全性控制:以防止数据丢失、错误更新和越权使用;②完整性控制:保证数 据的正确性、有效性和相容性;③并发控制:使在同一时间周期内,允许对数据实现多路存取, 又能防止用户之间的不正常交互作用。
⑹ 故障恢复
由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。数 据库系统能尽快恢复数据库系统运行时出现的故障,可能是物理上或是逻辑上的错误。比如对 系统的误操作造成的数据错误等。
完整性约束(CONSTRAINT)
• 约束
约束是强加在表上的规则或条件。确保数据库满足业务规则。保证数据的完整性。当对 表进行DML或DDL操作时,如果此操作会造成表中的数据违反约束条件或规则的话,系统 就会拒绝执行这个操作。约束可以是列一级别的 也可以是表级别的。

分类:
1. 非空(NOT NULL)约束:顾名思义,所约束的列不能为NULL值。否则就会报错 2.唯一(UNIQUE)约束:在表中每一行中所定义的这列或这些列的值都不能相同。必 须保证唯一性。否则就会违法约束条件。 3. 主键(PRIMARY KEY)约束:唯一的标识表中的每一行,不能重复,不能为空。 需要注意的是:每个表只能有且有一个主键约束。 4. 外键(FOREIGN KEY)约束:用来维护从表(Child Table)和主表(Parent Table )之间的引用完整性. 外键约束是个有争议性的约束,它一方面能够维护数据库的数据一致 性,数据的完整性。防止错误的垃圾数据入库; 另外一方面它会增加表插入、更新等SQL 性能的额外开销。 5. 条件(CHECK)约束:表中每行都要满足该约束条件。条件约束既可以在表一级定 义也可以在列一级定义。在一列上可以定义任意多个条件约束。
数据库系统
数据库系统(Database System) 数据库系统,是由数据库及其管理软件组成的系统。 数据库系统是为适应数据处理的需要而发展起来的一种较为理想的数据处理系统, 也是一个为实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质 、 处理对象和管理系统的集合体。 • • 数据库系统一般包括4个部分组成
⑶ 数据的独立性
数据的独立性包括逻辑独立性(数据库中数据库的逻辑结构和应用程序相互独立)和物理 独立性(数据物理结构的变化不影响数据的逻辑结构)。
⑷ 数据实现集中控制
文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件 之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组 织以及数据间的联系。
第二范式
第二范式 第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指 不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的 这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。 为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。简而言之, 第二范式就是在第一范式的基础上属性完全依赖于主键。 • 把所有这些信息放到一个表SelectCourse中(学号,学生姓名、年龄、性别 、课程名称、课程学分、系别、课程成绩,系办地址、系办电话)下面存在如下 的依赖关系。 (学号, 课程名称) → (学生姓名, 年龄, 课程成绩, 课程学分) • 解决方案 把选课关系表SelectCourse改为如下三个表: 学生:Student(学号,学生姓名,年龄,性别,系别,系办地址、系办电话) 课程:Course(课程名称,课程学分); 选课关系:SelectCourse(学号,课程名称,课程成绩)。
相关主题