数据库交互与独立应用开发全解析
1. 数据库交互常用方法
在数据库交互领域,有几种常用的方法,分别是 ODBC、JDBC 和 Perl DBI。
ODBC :它是一种标准的调用级接口,能跨数据库包工作。其工作原理是利用一套复杂的驱动程序系统,将 ODBC 调用转换为相关数据库包所识别的调用级接口。ODBC 不仅具备嵌入式 SQL 的所有功能,还拥有众多扩展功能。
JDBC :由 Sun 公司为其 Java 编程语言设计的调用级接口。JDBC 重新实现了 ODBC 的大部分功能,同时简化了一些任务,并且提供了只有面向对象语言才能拥有的特性。
Perl DBI :为 Perl 准备的一个包,用于管理与数据源的交互。和 JDBC 一样,它以 ODBC 为模型。Perl DBI 具备 Perl 语言的灵活性和强大功能,是 CGI 脚本的首选接口。以下是一个简单的 Perl DBI 操作示例:
White Sox
foo
Ok> update team set team_name = 'Cubs' where team_name = 'foo'
Non - SELECT statement affected 1 rows in the database.
Ok> select team_name, city, stadium from team where city = 'Chicago'
team_name city stadium
White Sox Chicago Comiskey Park
Cubs Chicago Wrigley Field
Ok> quit
Goodbye
2. 独立数据库应用概述
独立数据库应用的显著特点是,其所有的用户交互和数据交互都包含在同一个程序中,也就是不与其他任何人(或程序)共享。个人计算机上的许多应用都是独立应用的典型例子,比如文字处理器、支票簿登记簿、日历和桌面出版程序等。以支票簿登记簿为例,它以表格形式呈现数据并使用数据库,是典型的独立数据库应用。
简单的独立应用示例,如在 Linux 中使用以下 shell 脚本删除硬盘上的不需要文件:
#!/bin/bash
rm core
rm *.old
这个简单的脚本在执行时会删除目录中的所有 core 文件(程序失败时产生的文件)和所有以 .old 结尾的文件。但这个简单的应用也会引发一些问题,比如如果因为某些原因不想删除特定的 .old 文件怎么办?这就可能使程序变得更加复杂,需要提示用户输入,确保在删除文件前进行备份,最终演变成一个现代应用。
计算机应用的分类有很多,常见的有桌面应用、Web 应用、商业应用和数据库应用等,这些分类很大程度上取决于市场情况和市场领导者的行为。随着计算机应用到各个领域,我们可以期待更多新类型的应用出现。以下是一些常见应用的列表:
- 文字处理器
- 计算器
- 计费系统
- 报告系统
- 电子表格
- 地址变更表单
- 系统监视器
- 财务登记簿
- 项目跟踪工具
- 日历
- 协作工具
- 管理软件
- 计算机辅助绘图
数据库本身也是一种非常常见的应用,它具有极高的灵活性,允许在其基础上构建其他应用。很多新公司专门从事基于商业或购买的数据库构建应用的业务。我们将数据库应用定义为与数据库交互以执行特定功能或一组功能的程序。
3. 独立数据库应用的开发决策
是否购买应用取决于具体情况。在某些环境中,开发内部应用(通常称为自制应用)可能比购买应用有更好的投资回报率,这主要取决于团队的技术能力。由于选择了 Linux 系统,很可能团队中有技术能力较强的人员,因此预计会开发一些自制应用。
以下是开发独立数据库应用时的一些考虑因素:
-
开发策略
:以一个用于促进示例公司 Widget - R - Us 订单录入的简单独立数据库应用为例,其开发遵循设计、实现、重新设计的基本策略。这种策略适用于现实世界中不断添加功能的应用开发,但在开发自己的应用时,可根据实际情况选择合适的策略。
-
购买决策
:购买应用的基本方法是看它能否解决实际问题。如果要构建数据仓库,就购买为数据仓库设计的数据库;如果要构建事务性数据库,就购买事务性数据库。要花时间明确自己的问题,避免被供应商误导。目前市场上正出现一些更好的工具和更定制化的应用,软件公司也在改变其软件和操作系统以提高灵活性和功能丰富度。
4. 应用架构
应用的架构指的是应用组件的组织和集成方式,不同应用的架构可能不同。我们所使用的数据库应用架构如下:
- 客户端的命令行用户界面
- 应用程序编程接口(使用 Perl DBI)
- 数据库
用户界面框架可进一步分为元数据和菜单。该应用由三层组成,即客户端界面、API 和数据库,这是一个客户端 - 服务器应用,但由于作为独立应用使用,只有一个用户界面连接到一个服务器。用户通过一系列菜单进行交互,根据用户操作,信息通过 API 传递给数据库服务器进行处理。由于 API 和数据库已经编写好,只需要编写用户界面及其对 API 的调用即可。其架构流程如下:
graph LR
A[客户端界面] --> B[API(Perl DBI)]
B --> C[数据库]
C --> B
B --> A
5. 应用范围的确定
应用范围本质上是对应用功能的预期列表,在一些组织中,它决定了应用的成败。如果应用范围定义不明确,可能会导致资源浪费;而如果范围定义清晰,则可能使应用获得成功。很多知名供应商依靠明确的应用范围来打造成功案例。
确定应用范围是一个平衡的过程,一个好方法是范围定义要窄,但设计要考虑可扩展性,这样后期可以添加功能,提高应用的成功率。在定义范围时,最好从最终用户入手。与最终用户沟通很重要,以下是两个与最终用户沟通的例子:
例子一
:
- 应用开发者:“你将负责接收订单吗?”
- 最终用户:“是的。”
- 应用开发者:“你希望用户界面是什么样的?”
- 最终用户:“我希望它只在周三运行。”
- 应用开发者:“你希望它是图形用户界面(GUI)吗?”
- 最终用户:“不,我更想要一杯拿铁。”
- 应用开发者:“你想要一个菜单驱动的界面吗?”
- 最终用户:“不,我决定要一杯小拿铁。谢谢。”
例子二
:
- 应用开发者:“我被分配为你构建一个应用。”
- 最终用户 2:“真的吗?我希望它有一个按钮。”
- 应用开发者:“我们可以做一个按钮。”
- 最终用户 2:“真的吗?好的,但只要一个。”
- 应用开发者:“那么它只能做一件事。”
- 最终用户 2:“好的,它能弹出一个新按钮吗?”
- 应用开发者:“当然。”
- 最终用户 2:“好的,但只要一个。好吗?谢谢!我等不及了!”
- 应用开发者:“没问题。”
- 后来,会计部门的 Ed:“我们花了一百万美元做了一个能弹出另一个按钮的按钮?!!”
从这两个例子可以看出,开发者与最终用户的对话会影响应用的范围。将最终用户纳入开发周期,可以使项目范围定义更清晰,提高成功的机会。另外,交付应用的时间也会影响项目范围,要确保有足够的时间,避免应用交付延迟带来的不良影响。根据应用的规模,可以将应用组织成更小的组件,让不同的开发者或开发团队分别负责,以提高开发速度。如果资源有限,优先从最重要或最容易的应用开始开发。
6. 独立 Linux 数据库应用示例
6.1 初始数据库设计
设计数据库通常有以下几个步骤:
1.
确定应用或业务功能
:明确项目需求和范围。
2.
确定必要信息
:找出该业务功能运行所需的最少信息。
3.
理解期望信息及其关系
:搞清楚期望得到的信息与必要信息之间的联系。
4.
确定信息来源
:明确这些信息来自哪里。
5.
确定信息源之间的关系
:创建逻辑数据库模型。
6.
创建物理数据库
。
在这个示例中,我们假设与使用该应用的人员进行了讨论,数据库设计的要求相对明确:它必须存储多个客户的多个订单信息。具体来说,有以下几个表:
- 一个表存储可订购的产品列表。
- 第二个表存储客户信息(包括地址和电话数据)。
- 第三个表存储订单头信息,即关于整个订单的信息,每个订单对应一个客户,但可以有多个订购项。
- 第四个表存储单个订购项的信息,每个订单的每个产品对应一条记录。
| 表名 | 描述 |
|---|---|
| 产品表 | 描述产品本身 |
| 客户表 | 记录所有从公司下单的客户信息 |
| 订单头表 | 存储订单的整体信息 |
| 订单详情表 | 记录每个订单中具体产品的详细信息(如产品、数量、售价等) |
应用需要实现的功能主要有三个:
1.
录入新订单、客户和产品
2.
修改现有订单、客户和产品
3.
删除现有订单、客户和产品
目标数据库是 MySQL,一个符合 SQL 标准的开源全关系型数据库管理系统,适用于 Linux。实现这些功能所需的基本 SQL 命令如下:
| SQL 命令 | 功能 |
| ---- | ---- |
| Insert | 向表中添加新记录 |
| Update | 修改表中的现有记录 |
| Delete | 删除表中的现有记录 |
由于用户不太熟悉 SQL,我们的应用需要将录入新订单等任务映射到 MySQL 使用的单个 SQL 表插入操作,将修改现有订单信息的任务映射到单个 SQL 表更新命令,将列出特定订单详细信息的任务映射到单个 SQL 表查询命令。为了加快实现速度,我们不使用图形用户界面(GUI),而是采用基于字符的菜单系统,这种系统可以作为基于 GUI 应用的基础。
6.2 用户界面设计
我们在设计应用时会考虑最终用户的情况。在这个示例中,假设最终用户熟悉 Linux 命令行,但不了解(也不想了解)SQL,并且最终客户希望使用 GUI 界面。因此,我们实现了一个简单的文本菜单用户界面,后续可以进行修改。这个版本的应用主要实现三个功能:插入行、删除行和浏览数据库中的表。
以下是用户界面的菜单示例:
-
第一个菜单
:
connecting to database..
Welcome.
Please select a table from the following list or quit[q]:
1) Product
2) Customer
3) Order Header
4) Order Detail
Make your selection:
- 选择表后出现的菜单 :
Please select a task from the following list or quit[q]:
1) Insert
2) Delete
3) Browse
Make your selection:
- 选择插入(1)后出现的菜单 :
Please select a field to edit:
1) STATE:
2) PHONE_NUMBER:
3) ZIP:
4) LAST_NAME:
5) FIRST_NAME:
6) MIDDLE_INITIAL:
7) CITY:
8) ADDRESS_LINE_1:
9) CUSTOMER_ID:
10) ADDRESS_LINE_2:
Make your selection, continue [c], or quit [q]:
通过以上步骤,我们为这个简单的独立数据库应用搭建了框架,确定了应用范围,设计了数据库,并设计了一个简单的用户界面。这个示例既适合初学者理解,又能详细讨论实际开发中遇到的问题。整个应用的开发流程可以用以下 mermaid 流程图表示:
graph LR
A[确定应用范围] --> B[数据库设计]
B --> C[用户界面设计]
C --> D[应用实现]
D --> E[测试与优化]
E --> F[交付使用]
F --> G{是否需要扩展功能?}
G -- 是 --> A
G -- 否 --> H[结束]
在实际开发中,我们可以根据这个流程逐步推进,确保应用的顺利开发和不断完善。同时,要始终关注最终用户的需求和反馈,以便及时调整和优化应用。
超级会员免费看
7745

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



