数据库系统概述
数据库系统为我们提供了一种把与我们的工作和生活紧密相关的信息集合在一起的方法它还提供了在某个集中的地方存储和维护这些信息的方法数据库系统主要由三大部分组成数据库管理系统(DBMS:它是专门负责组织和管理数据信息的程序)数据库应用程序(它使我们能够获取显示和更新由DBMS存储的数据)数据库(按一定结构组织在一起的相关数据的集合)
一般来说DBMS和数据库应用程序都驻留在同一台计算机上并在同一台计算机上运行很多情况下两者甚至结合在同一个程序中以前使用的大多数数据库系统都是用这种方法设计的但是随着DBMS技术的发展目前的数据库系统正向客户/服务器模式发展客户/服务器数据库将DBMS和数据库应用程序分开从而提高了数据库系统的处理能力数据库应用程序运行在一个或多个用户工作站(客户机)上并且通过网络与运行在其它计算机上(服务器)的一个或多个DBMS进行通信
下面是数据库系统中一些概念和述语
数据库管理系统(DBMS)
数据库管理系统(DBMS)是用于描述管理和维护数据库的程序系统是数据库系统的核心组成部分它建立在操作系统的基础上对数据库进行统一的管理和控制其主要功能有
描述数据库描述数据库的逻辑结构存储结构语义信息和保密要求等
管理数据库控制整个数据库系统的运行控制用户的并发性访问检验数据的安全保密与完整性执行数据检索插入删除修改等操作
维护数据库控制数据库初始数据的装入记录工作日志监视数据库性能修改更新数据库重新组织数据库恢复出现故障的数据库
数据通信 :组织数据的传输
DBMS主要有四种类型文件管理系统层次数据库系统网状数据库系统和关系数据库系统因为目前关系数据库系统应用最为广泛所以我们重点对关系数据库系统中的几个概念进行介绍
关系数据库(Relational Database)一个关系数据库是由若干表组成在Delphi中数据库概念对应到物理文件上是有一些不同的对于dBASEFoxProParadox这三种数据库系统数据库对应于某一个子目录而其它类型如MS AccessBtrieve则是指某个文件这是因为前者的表为单独的文件而后者的表是聚集在一个数据库文件中的
表(Table)一个表就是一组相关的数据按行排列象一张表格一样比如一个班所有学生的期末考试成绩存在一个表中每一行对应一名学生在这一行中包括学生的学号姓名以及各门课程的成绩
字段(Field)在表中每一列称为一个字段每一个字段都有相应的描述信息如数据类型数据宽度等
记录(Record)在表中每一行称为一条记录
索引(Index)为了加快访问数据库的速度许多数据库都使用索引
数据库应用程序
DBMS中存储了大量的数据信息其目的是为用户提供数据信息服务而数据库应用程序正是与DBMS进行通信并访问DBMS中的数据它是DBMS实现其对外提供数据信息服务这一目的的唯一途径简单地说数据库应用程序是一个允许用户插入修改删除并报告数据库中的数据的计算机程序数据库应用程序在传统上是由程序员用一种或多种通用或专用的程序设计语言编写的但是近年来出现了多种面向用户的数据库应用程序开发工具这些工具可以简化使用DBMS的过程并且不需要专门编程Delphi就是一种强有力的数据库应用程序开发工具
用来生成数据库应用程序的语言主要分为三大类型
过程化语言
标准的计算机程序设计语言如PascalBasic和C都是过程化语言这些语言可以通过某种应用程序接口(API)来创建数据库应用程序这种API由一组标准的函数(或调用)组成这些函数和调用则扩展了语言的功能使之能访问数据库中的数据当程序设计人员用过程化语言创建数据库应用时必须把应用的代码编写成一系列的过程每个过程执行应用的某一部分的工作如一个过程查询数据库而另一过程更新数据库中的数据然后不同的过程通过其他的用户界面过程(例如菜单系统)联系在一起并且在应用中的适当地方运行
上述这些过程化语言一般用来创建非数据库应用程序它们通常被称为第三代语言(GL)还有一些过程化程序设计语言是某种特定的DBMS专用的这些语言一般被称为第四代语言(GL)即数据库专用语言常见的数据库专用的过程化语言如dBASE语言Paradox数据库的PAL语言等等
结构化查询语言(SQL)
结构化查询语言(Structure Query Language)是基于关系模型的数据库查询语言它是一种非过程化的程序语言也就是说没有必要写出将如何做某事情只需写出做到什么就可以了写出的语句可看作是一个问题称为查询(Query)针对这个查询得到所需的查询结果下面是一个例子
Select NameTotal from Class where Total>
这个查询意为从数据库表Class中将总分(Total)大于的所有人选出来并列出他们的姓名(Name)和总分(Total)
把SQL描述为子语言更适当一些因为它没有任何屏幕处理或用户输入/输出的能力它的主要目的是为了提供访问数据库的标准方法而不管数据库应用的其余部分是用什么语言编写的它既是为数据库的交互式查询而设计的(因此被称为动态SQL)同时也可在过程化语言编写的数据库应用程序中使用(因此被称为嵌入式SQL)
[] [] [] []