文档介绍:数据库连接技术参考资料
应用程序和DBMS之间的关系
前面所有的例子、,用户与数据库应用程序交互,数据库应用程序与DBMS接口,DBMS访问数据库中的数据。
有一段时间,应用程序和DBMS之间的边界定义得非常清楚。应用程序使用像COBOL这样的第三代语言编写,DBMS上被调用的应用程序提供数据管理服务。事实上,这种划分在大型机系统上进行得更多。
然而,今天许多DBMS产品的特点和功能已经发展到这样的地步,即DBMS本身能够处理相当一部分应用需求。例如,许多DBMS产品包含报表书写器和窗体生成器,这些组件都可以集成到应用程序中。这一事实对我们非常重要,主要有两方面的原因。首先,尽管本书的大部分内容是讨论数据库设计和开发,但这通常指数据库应用程序的设计和开发;毕竟,没有哪个用户只需要数据库,相反,用户需要基于这些数据的窗体、报表和查询,他们不关心数据库本身。
其次,你可能经常发现本课程所讨论的问题和系统开发课程的材料有重复,这是因为开发有效的数据库应用程序需要许多你已经或将要从系统开发课程中学到的技术。同样,今天的大多数系统开发课程也包括数据库设计。这两门课程间的差异是它们的重点不同,这里我们的重点是数据库的设计和构造,而系统开发课程的重点是信息系统的开发,这种开发多数需要使用数据库技术。
文件处理系统
理解数据库一般特征的最好方法是看一看使用数据库技术前的系统特征,这些系统揭示了数据库技术已经解决的问题。
第一个业务信息处理系统在独立的文件中存储记录,被称为文件处理系统(file-processing system),,一个系统处理客户数据,另一个系统处理租赁数据。
尽管文件处理系统对手工记录保存系统做了重要的改进,它们还是有很大的局限
●数据是分离的和独立的
●数据经常是重复的
●应用程序依赖于文件格式
●文件相互之间经常是不兼容的
●难以用用户希望的形式表示数据
分离的和独立的数据
Treble Clef Music商店中的推销员需要将客户和他们有意要租的乐器关联起来。,数据需要以某种方式从CUSTOMER和RENTAL两个文件中提取并合并为一个文件,采用文件处理,这是非常困难的。首先,系统分析员和程序员要确定文件的哪一部分是需要的,然后必须确定文件是如何关联的,最后必须协调文件处理以提取正确的数据。协调两个文件是相当困难的,更何况是十个或更多个文件呢!
数据重复
在Treble Clef Music商店例子中,客户的姓名、地址及其他数据必须存储多次。也就是说,数据在CUSTOMER文件中存储一次,在客户所拥有的每一个RENTAL中又存储一次。尽管这种重复存储浪费文件的空间,但这还不是最严重的问题,最严重的问题是重复数据的存储将影响数据完整性(dataintegrity)。
一个数据集合中的数据逻辑一致时,它就具备了完整性。数据完整性的破坏通常由数据重复引起。例如,如果一个客户修改其姓名或地址,那么所有包含这些数据的文件都必须修改,危险在于所有的文件可能不会都修改,进而导致它们之间的不一致。在Treble Clef Music商店例子中,客户可能对一条租赁记录有一个地址,对另一条租赁记录有另一个地址。
数据完整性问题是非常重要的。如果数据项不同,就会产生不一致和不确定的结果。例如,如果一个应用程序的报表和另一个应用程序的报表不同,那么谁能说出哪一个是正确的呢?若结果不一致,那么存储数据的可信性和MIS(Management lnformation System,管理信息系统)本身的功能就成了问题。
应用程序依赖性
就文件处理而言,程序依赖于文件的格式。在文件处理系统中,文件和记录的物理格式通常是应用代码的一部分。例如在COBOL中,文件格式是写在DATA DIVISION中的。这种安排的问题是,当文件格式变化时,应用程序也必须变化。
例如,如果对一个客户记录做修改,把邮政编码从5位扩展到9位,所有使用该客户记录的应用程序,即使不使用邮政编码域,也必须修改。因为可能有20个程序处理客户文件,这样的变化意味着程序员必须识别所有受影响的程序、修改并重新测试它们,所有这些都是耗时易错的事情。另外,如果程序没有使用格式变化的域,要求程序员修改这些程序就是一种浪费。
程序数据依赖性的一个后果是文件格式依赖于产生它们的语言和产品,这样程序处理的文件格式就不同于Visual Basic程序的文件格式,也不同于C语言所处理的文件格式。
这样一来,文件就