数据库程序

更新时间:2022-08-25 13:42

数据库是指长期存储在计算机内有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。数据库程序是指管理数据库,以及对数据进行操作的程序。数据库程序一般可以分为库函数和自定义程序。

介绍

数据库程序是指管理数据库,以及对数据进行操作的程序。数据库程序设计方向一般与数据库研究领域有关,不同领域数据库程序实现功能的侧重点不同。数据库程序设计步骤和程序设计步骤差不多:(1) 确定要解决的问题。根据问题所提出的要求,首先弄清要输入、输出的信息。(2)算法设计。选择解决问题的算法,即考虑对数据进行一些什么基本操作及处理这些操作的合适的顺序。(3)框图设计或模块设计。(4)编写程序。根据已选定的算法用某种语言写出实现此算法的完整程序。(5)检验、调试,这个过程要反复进行,直至程序完全正确。(6)编写程序使用说明书。

范围

当前,数据库研究的范围有以下三个领域。

数据库管理系统软件的研制

数据库管理系统(DBMS)是数据库系统的基础。DBMS的研制包括研制DBMS本身及以DBMS为核心的一组相互联系的软件系统。研制的目标是扩大功能、提高性能和提高用户的生产率。

数据库设计

数据库设计的主要任务是在DBMS的支持下,按照应用的要求,为某一部门或组织设计一个结构合理、使用方便、效率较高的数据库及其应用系统。其中主要的研究方向包括数据库设计方法、设计工具和设计理论的研究,数据模型和数据建模的研究,计算机辅助数据库设计方法及其软件系统的研究,数据库设计规范和标准的研究等。

数据库理论

数据库理论的研究主要集中于关系的规范化理论、关系数据理论等。近年来,随着人工智能与数据库理论的结合及并行计算机的发展,数据库逻辑演绎和知识推理、并行算法等理论研究,以及演绎数据库系统、知识库系统和数据仓库的研制都已成为新的研究方向。

库函数

库函数(Library function)是把函数放到库里,供别人使用的一种方式。.方法是把一些常用到的函数编完放到一个文件里,供不同的人进行调用。调用的时候把它所在的文件名用#include<>加到里面就可以了。一般是放到lib文件里的。常见库函数如下(注:例子使用的是SQL语言):

AVG 返回指定组中的平均值,空值被忽略。

例:select prd_no,avg(qty) from sales group by prd_no2. COUNT 返回指定组中项目的数量。

例:select count(prd_no) from sales3. MAX 返回指定数据的最大值。例:select prd_no,max(qty) from sales group by prd_no4. MIN 返回指定数据的最小值。

例:select prd_no,min(qty) from sales group by prd_no5. SUM 返回指定数据的和,只能用于数字列,空值被忽略。例:select prd_no,sum(qty) from sales group by prd_no6. COUNT_BIG 返回指定组中的项目数量,与COUNT函数不同的是COUNT_BIG返回bigint值,而COUNT返回的是int值。

例:select count_big(prd_no) from sales7. GROUPING 产生一个附加的列,当用CUBE或ROLLUP运算符添加行时,输出值为1.当所添加的行不是由CUBE或ROLLUP产生时,输出值为0。

例:select prd_no,sum(qty),grouping(prd_no) from sales group by prd_no with rollup8. BINARY_CHECKSUM 返回对表中的行或表达式列表计算的二进制校验值,用于检测表中行的更改。

例:select prd_no,binary_checksum(qty) from sales group by prd_no9. CHECKSUM_AGG 返回指定数据的校验值,空值被忽略。

例:select prd_no,checksum_agg(binary_checksum(*)) from sales group by prd_no10. CHECKSUM 返回在表的行上或在表达式列表上计算的校验值,用于生成哈希索引。

STDEV 返回给定表达式中所有值的统计标准偏差。

例:select stdev(prd_no) from sales12. STDEVP 返回给定表达式中的所有值的填充统计标准偏差。

例:select stdevp(prd_no) from sales13. VAR 返回给定表达式中所有值的统计方差。

例:select var(prd_no) from sales14. VARP 返回给定表达式中所有值的填充的统计方差。

例:select varp(prd_no) from sales有时候以上的聚合函数并不能符合我们数据处理的要求,我们也可以自定义聚合函数,来得到我们想要的结果。

设计概要

开发成功的数据库应用程序,不分大小,都牵涉到好几个步骤。需要仔细思考应用程序的结构,尤其是以下几点:

如何将应用程序数据 (通常是面向对象的) 映射至关系数据库

如何巧妙处理错误

如何提升性能与可伸缩性

一般数据库应用程序需要许多不同的SQL语句。由于SQL语句在应用程序内大致采用 相同执行模式,才得以简化众多语句的管理。图1显示与关系数据库系统交互时,数 据库应用程序是如何准备、执行,然后处理SQL语句。状态图分成11个步骤,其中有 4个步骤为选择性的。

以下是图1所示各步骤的详细说明:

1. 建立连接:每个成功数据库应用程序的第一步都是建立连接。客户端(即数据库应用程序)在这个步骤中实际连上数据库,传输SQL语句至数据库并把结果返回至 客户端。与客户端的物理连接可以通过LAN、WAN建立,甚至当数据库应用程序与服务器都在同一台机器上运行时,也可以通过简单的逻辑连接回到客户端。有关连接建立的详细信息,请参阅本章稍后的 “打开数据库连接”。

2. 开始事务(选择性的):事务开始,使数据库改变失败时可以回滚或在改变成功时可以提交。有关数据库程序设计API的事务控制,请参阅本章稍后的“管理事务”。

3. 建立语句对象:大部分先进的数据库程序设计API都采取面向对象式,以对象表示 SQL语句。通常应用程序内执行的每个SQL语句各有一个语句对象。语句对象内有执行所需的状态信息,例如SQL语句本身及输入参数。

4. 使SQL与语句对象产生关联:创建语句对象后,需要为对象指派SQL语句。完成后,即可执行语句对象。

5. 绑定输入参数 (选择性的):把参数绑定至SQL语句内的占位符(placeholder)的 功能虽不属于ANSI SQL标准,但本书所收录的平台都有这项功能。如果SQL语 句包含输入参数的占位符,语句对象就需要与各输入参数相关的程序变量。如果 SQL语句并不包含输入参数,则可略过此步骤。当相同的SQL语句重复执行数次 时,输入参数有助于提升性能,因为服务器只需在第一次执行前解析语句。另一个使用参数的理由,是要在SQL语句中 (如INSERT与UPDATE语句) 嵌入二进制 数据,例如BLOB数据。

6. 执行语句对象: 以SQL语句成功创建并初始化语句对象后,即可执行该对象。此 步骤在数据库服务器上执行SQL语句。

7. 处理结果(选择性的): 数据库服务器返回结果集后,应用程序即可处理结果。此 步骤是选择性的,因为插入或更新数据的语句通常不需要此步骤。

8. 重新执行:若因执行失败或在输入参数内输入不同数据值而需要重复执行相同语句 时,应用程序便重返步骤6。如果应用程序不需要重复执行相同的语句,则进行步 骤9。

9. 执行另一个SQL语句:如果应用程序需要执行不同的SQL语句并重复使用语句对 象,则应用程序可回到步骤4; 如果不是,则进行步骤10。

10. 结束事务 (选择性的): 假设事务于步骤2开始,现在便是提交或回滚事务的时候 了。如果回滚事务,则语句对象对数据库所做的一切改变都会从数据库中被移除。

11. 释放资源:成功执行语句并处理结果后需要释放客户端与服务器端的资源,让其他应用程序使用。

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}