数据库系统管理数据具有以下特点
- 使用数据模型表示复杂的数据库结构,用户可以使用实体关系模型对数据进行建模,不仅可以表达数据本身,还可以描述数据之间的关系,这使得存储在数据库中的数据更容易理解和维护。
- 数据库系统将数据的逻辑结构与为物理结构分离,用户可以简单的使用逻辑结构操作数据库,而不用考虑物理存储结构,简化了数据库操作的复杂性。
- 数据库系统提供了数据的控制功能,它提供了多用户并发机制,防止数据库数据被非法更改,数据库系统会提供数据的备份和恢复功能,可以避免出现灾难性事件导致的数据丢失。数据库提供数据完整性功能,并且提供了必要的安全机制
一个数据库管理系统通常提供如下的几项功能
- 定义数据库结构:提供数据定义预演来定义数据库结构,用来搭建数据库框架,并被保存在数据字典中
- 存取数据库内容:提供数据操作预演,实现对数据库数据的基本存取操作——检索、插入、修改和删除
- 数据库的运行管理:提供数据控制功能,即数据的安全性、完整性和并发控制等对数据库运行进行有效的控制和管理,以确保数据正确有效
- 数据库的建立和维护:包括数据库初始数据的装入数据库的转储、回复、重组、系统星能监视、分析等功能
- 数据库的传输:提供处理数据的传输,实现用户程序与数据库之间的通信,通常与操作系统协调完成
使用SQL语言管理数据库,一般分为6大类
- 数据查询语言(DQL):用于从表中获得数据,确定数据怎样在应用程序给出。关键字 select 是DQL用的最多的语句,其他DQL常用的关键字有 where、order by、group by、和having。这些DQL关键字常与其他类型的SQL语句一起使用。
- 数据操作预演(DML):分别用于添加、修改和删除表中的行。也称为动作查询语言
- 事务处理语言(TPL):能确保被DML语句影响的表的所有行及时得以更新,TPL语句包括begin transaction、commit 和 rollback
- 数据控制语言(DCL):通过 grant 或 revoke 获得许可,确定单个用户和用户组对数据库对象的访问
- 数据定义语言(DDL):在数据库中创建新表或删除表,为表加入索引等。DDL包括许多与数据库目录中获得数据有关的保留字,它也是动作查询的一部分
- 指针控制语言(CCL):用于对一个或多个表的单独行进行操作,比如declare cursor、fetch into 和 update where current 等语句
数据库范式
目前关系型数据库中共有6哥范式,一般来说数据库只需要满足前面3个范式即可
- 第一范式:字段必须具有单一属性特性,不可再拆分,比如员工名称字段必须具有单一的属性,不可以在一个字段中包含员工中文名与英文名,必须考虑拆分为两个字段
- 第二范式:表要具有唯一性的主键列,也就是说表中的每一行要具有一个唯一性的标识列,比如通常使用 guid 或自动增长的数字编号来唯一的标识一行,或者使用身份证号码来唯一的标识员工表中的员工
- 第三范式:表中的字段不能包含在其他表中已出现的非主键字段,比如员工表中已经包含了部门的名称,而部门表中部门编号为主键,部门名称为非主键,那么这就不符合第三范式。
范式是一个逐步升级的过程,也就是说只有在满足了第一范式的情况下,第二范式才能继续进行。通过对数据库对象应用范式,消除了数据的冗余,使得整个数据库的设计具有最佳效率和性能,它会带来如下一些好处
- 使数据变得更有组织
- 将数据的修改量变得更少,比如当一个表的具体字段记录更新时,其他引用到该表中的字段的表会自动得到更新
- 需要存储数据的物理空间变得更少
oracle数据库系统的组成
常常将oracle实例和oracle的数据库系统文件统称为一个oracle数据库,对于数据库和数据库实例的具体描述如下
- 数据库:是指位于操作系统磁盘上的文件,用于存储数据,这些文件可以独立于数据库实例而存在
- 数据库实例:是管理数据库文件的一组进程和内存结构,它包含一个叫做系统全局区(SGA)的内存组件和一系列的后台进程(在windows中以线程的方式表示),实例可以独立于数据库而存在
当数据库服务器启动时,会现在内存中分配SGA系统全局区,并启动一系列的后台进程或线程,这称为实例启动。当启动了数据库实例后,oracle会将实例与特定的数据库进行关联,这个过程称为数据库装载(MOUNT),接下来就可以打开数据库,使其保持open状态。
oracle数据库的实例结构由内存结构和进程结构组成,它们用来管理和访问数据库,应用程序连接到数据时,实际上是连接到一个oracle实例,由oracle实例中的进程和内存来为应用程序提供服务,oracle的进程结构由如下几大类组成:
- 客户端进程:这些进程主要用来运行应用程序代码或oracle的工具,比如SQL*Plus会创建一个客户端进程,一个使用oracle的应用程序会在客户端中创建一个客户端进程。这些通常创建在使用oracle数据库的其他计算机。
- 后台进程:这是oracle保持数据平稳运行的核心进程,它整合了多种功能,以避免为每个客户端进程运行多个oracle数据库程序,这些进程以异步的方式执行I/O操作,并监控其他数据库进程,以提供更大的并行度,达到更好的性能和可靠性。常见的后台进程有数据库写进程DBWn、进程监视器PMON、系统监视器SMON、检查点进程CKPT、日志写进程LGWR、以及归档日志进程ARCn。
- 服务器进程:它在用户建立到服务器的连接时启动,这些服务器端的进程与客户端进行通信,并与oracle数据库实例进行交互以完成用户的请求。服务器进程会处理用户的操作,比如用户要查询数据时,服务器进程会在SGA内存区中的数据库缓冲区高速缓存中查找数据,如果未找到,则会从数据文件中读取数据并写入到缓冲区高速缓存中。
oracle创建和使用内存结构的目的,是用来在多个用户之间共享程序代码和数据的内存,并且每个已经连接的用户具有自己的私有数据区域。与实例相关的内存结构如下所示
- 系统全局区(SGA):包含一个数据库实例的数据和控制信息。比如在SGA中包含了数据库缓冲区高速缓存、重做日志缓冲区、共享池、大池、Java池及stream池等内存分类。
- 程序全局区(PGA):专用于每一个服务器进程或后台进程,每一个进程使用一个PGA来存储其控制信息。
oracle的实例结构和存储结构共同构成了oracle数据库,因此提及oracle数据库时,不能单单认为它只是包含了几个数据文件,应该想到的是它的进程结构、内存结构及物理存储结构。
注意:oracle中的每一个实例只能访问属于自己的物理数据库,但是在同一台计算机上可以并发的执行多个数据库实例。大多数情况下,oracle的实例与数据库都是一对一的关系,即单实例单库
本文介绍了数据库系统的特点,如数据模型、逻辑与物理结构分离、数据控制功能。详细讲解了数据库管理系统的功能,以及SQL语言的六大类。讨论了数据库范式的概念,特别是前三范式的重要性。最后,深入探讨了Oracle数据库系统,包括其组成、实例与数据库的区别以及内存和进程结构。
3791

被折叠的 条评论
为什么被折叠?



