段组成,可以是多个字段的组合。
(2)引用完整性,又称参照完整性,主要是描述存在关系间引用时,不能引用不存在的元组.
图3-2
比如在图书分类表(booksort)与图书表(book)之间的关系(如图3-2),这是一个典型的一对多关系。关系的主键方是booksort表中的Book_sort(图书类别)字段,关系的外键方是book表中的Book_code(图书类别)字段。
其引用完整性就是book表中的每一本书的图书类别Book_sort或者为空值,或等于图书分类表(booksort)中某行的Book_sort值。
通俗的说法就是图书不能属于一个没有定义的类别。
(3)用户自定义完整性
这是一种比较有针对性的完整性,由具体环境决定。例如:在读者表(au)中,读者的性别字段(Au_sex)的值必须为'男'或'女'。这就是一条用户自定义完整性规则。
这类完整性在SQLserver2000中的实现就是对相关表建一个check约束即可。比如在au表中建立一个CK_au约束,其约束表达式为([Au_sex]='男'or[Au_sex]='女'),就实现了值必须为'男'或'女'的用户自定义完整规则。
3.1.4数据库的保护
数据库的保护主要内容是数据库的备份恢复、数据的事务性、以及如何进行并发控制。其中备份和恢复容易理解,这里主要阐述其它两项。
(1)事务是一组操作序列.但是从用户的角度看来,事务是一个不可分割的操作序列。事务中的操作要么都做,要么都不做.事务不应该丢失,不应该被分割完成。
举个例子,从某个银行帐户向另一个帐户转入资金。这个过程分两步,首先将资金从一个帐户扣除,然后转入另一帐户。这个过程中,如果资金扣除以后由于一些因素导致失败。则资金就从一个帐户上扣除但没有转到另一个帐户上,就导致了两个用户都失去了这笔资金。如果将这两步组成一个事务,充分利用事务的共进共退性就可以避免这一点。
SQLserver2000事务语句主要包括BEGINTRANSACTION(开始一个事务),COMMITTRANSACTION(提交事务),ROLLBACKTRANSACTION(回滚事务)。
(2)数据库并发控制:在图书馆管理信息系统中,同时可能有多个客户端在进行数据操作。当多个用户试图同时修改数据时,需要建立控制机制来防止一个用户的修改对同时操作的其他用户所作的修改产生不利的影响。处理这种情况的系统叫做"并发控制"。处理并发的技术主要是封锁。ADO.NET数据结构基于断开的数据,使用开放式并发。
3.2使用存储过程
在使用SQLServer2000创建应用程序时,T-SQL编程语言是应用程序和SQLServer数据库之间的主要编程接口。使用T-SQL程序时,可用两种方法存储和执行程序。可以在本地存储程序,并创建向SQLServer发送命令并处理结果的应用程序;也可以将程序在SQLServer中存储为存储过程,并创建执行存储过程并处理结果的应用程序。
SQLServer中的存储过程与其它编程语言中的过程类似,原因是存储过程可以:
*接受输入参数并以输出参数的形式将多个值返回至调用过程或批处理。
*包含执行数据库操作(包括调用其它过程)的编程语句。
*向调用过程或批处理返回状态值,以表明成功或失败(以及失败原因)。
使用SQLServer中的存储过程而不使用存储在客户计算机本地的Transact-SQL程序的优点有:
*允许模块化程序设计。
只需创建过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改。
*允许更快执行。
如果某操作需要大量T-SQL代码或需重复执行,存储过程将比T-SQL批代码的执行要快。将在创建存储过程时对其进行分析和优化,并可在首次执行该过程后使用该过程的内存中版本。每次运行T-SQL语句时,都要从客户端重复发送,并且在SQLServer每次执行这些语句时,都要对其进行编译和优化。
*减少网络流量。
一个需要数百行T-SQL代码的操作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数百行代码。
*可作为安全机制使用。
即使对于没有直接执行存储过程中语句的权限的用户,也可授予他们执行该存储过程的权限。
此外在web编程方面,存储过程在安全问题上还可以防止动态SQL漏洞攻击,笔者经过一些调查,发现现在很多网站都有动态sql漏洞。只需要将密码字段的值设定为('or'1'='1)即可使用该网站的管理功能。
我所开发的图书馆管理信息系统,无论在windows窗体编程和asp.netWeb编程上都使用存储过程与数据库交互。
3.3.NETFramework平台概述
图书馆管理信息系统的开发是基于.NETFramework平台的,所有在这里我们简单的介绍一下.NETFramework平台以及它的一些重要的技术
.NETFramework是一种新的计算平台,它简化了在高度分布式Internet环境中的应用程序开发。.NETFramework旨在实现下列目标:
*提供一个一致的面向对象的编程环境,而无论对象代码是在本地存储和执行,还是在本地执行但在Internet上分布,或者是在远程执行的。
*提供一个将软件部署和版本控制冲突最小化的代码执行环境。
*提供一个保证代码(包括由未知的或不完全受信任的第三方创建的代码)安全执行的代码执行环境。
*提供一个可消除脚本环境或解释环境的性能问题的代码执行环境。
*使开发人员的经验在面对类型大不相同的应用程序(如基于Windows的应用程序和基于Web的应用程序)时保持一致。
*按照工业标准生成所有通信,以确保基于.NETFramework的代码可与任何其他代码集成。
图3-3
.NETFramework具有两个主要组件:公共语言运行库和.NETFramework类库。公共语言运行库是.NETFramework的基础。您可以将运行库看作一个在执行时管理代码的代理,它提供核心服务(如内存管理、线程管理和远程处理),而且还强制实施严格的类型安全以及可确保安全性和可靠性的其他形式的代码准确性。事实上,代码管理的概念是运行库的基本原则。以运行库为目标的代码称为托管代码,而不以运行库为目标的代码称为非托管代码。.NETFramework的另一个主要组件是类库,它是一个综合性的面向对象的可重用类型集合,您可以使用它开发多种应用程序,这些应用程序包括传统的命令行或图形用户界面(GUI)应用程序,也包括基于ASP.NET所提供的最新创新的应用程序(如Web窗体和XMLWebservices)。
.NETFramework还具有多编程语言,现在可提供VisualBasic.NET、VisualC#.NET、VisualC++.NET、VisualJ#.NET等。.NETFramework为几种语言提供了统一的平台和统一的编程模型。
ADO.NET是一组向.NET程序员公开数据访问服务的类。ADO.NET为创建分布式数据共享应用程序提供了一组丰富的组件。它提供了对关系数据、XML和应用程序数据的访问,因此是.NETFramework中不可缺少的一部分。ADO.NET支持多种开发需求,包括创建由应用程序、工具、语言或Internet浏览器使用的前端数据库客户端和中间层业务对象。
可使用.NETFramework开发下列类型的应用程序和服务:
*控制台应用程序。
*WindowsGUI应用程序(Windows窗体)。
*ASP.NET应用程序。
*XMLWebservices。
*Windows服务。
我的图书馆管理信息系统中包括Windows窗体和ASP.NET两种应用程序。
3.4ADO.NET技术探讨
3.4.1ADO.NET概述
ADO.NET提供对MicrosoftSQLServer等数据源以及通过OLEDB和XML公开的数据源的一致访问。数据共享使用者应用程序可以使用ADO.NET来连接到这些数据源,并检索、操作和更新数据。
ADO.NET有效地从数据操作中将数据访问分解为多个可以单独使用或一前一后使用的不连续组件。ADO.NET包含用于连接到数据库、
上一篇:
ASP_net010电子购物商城系统+论文(论文和程序)
下一篇:
最新期中考试祝福语