ASPNETDB的理论分析与开发实践
2014-09-25闻怡
闻怡
(长安大学 信息学院,陕西 西安710064)
ASPNETDB的理论分析与开发实践
闻怡
(长安大学 信息学院,陕西 西安710064)
文中从理论方面论述了ASPNETDB的基本原理,基本结构,论述了以面向对象及软件工程思想,快速高效开发应用软件的基本思路,论述了后台数据库与前台工作界面的关系与工作原理,论述了数据库模板的扩展,数据模式的规范化与数学基础,并从开发实践方面实现了ASPNET的具体应用。
ASPPNETDB;关系模式;范式;关系表;注册;数据完整性
目前软件开发已经告别了传统的手工劳动阶段,进入了工业化、组件化、分工协作、团队化作业的时代,在这个过程中技术人员经过了不断尝试和大量探索,但是在软件开发的工业化道路上还有许多亟待解决的问题,一是程序开发人员成长不规范,没有严格按软件工程思想进行塑造;二是协作精神不强,自我为中心现象比较严重,致使软件结合不严,兼容性较差;三是更有一些老的程序员、系统分析员还有较浓的传统观念习惯于个人手工作坊式开发等一些问题。为此,本文通过分析一个通用低层子系统,并结合开发实践,再次提出软件工程的思想,向读者展示出软件快速开发的组件技术、模块化思想和分工协作理念。
1 快速开发
随着计算机技术广泛应用到社会生活的各个领域,使得软件开发需求持续攀升,已然不是一个手工个体的劳动,而是一个团队作业的、相互协作的集体的创造性劳动,因此快速开发、提高效率是一个亟待解决的问题。如何达到此目的,当然面向对象的思想,软件工程的思想是基本的、必需的,可是这些概念有时比较务虚,在Microsoft的ASP.NET中已经按工程化思想提供了一个基础架构,目的是让用户高效开发,但是很多开发人员还是撇开这样一个好的架构,从零开始,又回到了手工作坊式开发的原始阶段,那么,如何才能将软件工程思想具体化,本文就以Microsoft公司的ASP.Net开发平台提供的ASPNETDB为基础,论述如何具体高效开发应用软件的基本思路与具体方法。
2 ASPNETDB的理论基础
Microsoft Asp.net为了使用户能按照软件工程的思想高效开发应用软件,提供了一个基础架构,其架构的低层设计了一个完整通用的数据库系统。
2.1 严格的数学基础
为适应大多数应用的通用需求,该数据库对用户数据的笛卡尔乘积作了具体分析,形成了十一张数据库表,每张表都是一个元组的集合,都可以进行关系代数的并、交、差、连接、投影、选择等基本运算。同时,每张表的列属性都是不可再分的原子型数据,因此都符合第一范式,即1NF,并且,每张表中的非主列属性都依赖与该表主属性,因此都符合第二范式,即2NF,最后,每张表中的非主列属性集都无传递依赖于主属性,因此都符合第三范式,即3NF。如图1是从十一张表中随意取出的一张表,可以看到,各个列属性均是符合三大范式的。其它十张表也都符合三大范式,因此,这十一张表内及表间都可以进行严格的关系代数的各种运算。
表间还建立了关系模型,有一对一关系,例如aspnet_Users与aspnet_Membership之间的关系,一对多关系,例如aspnet_Paths与aspnet_Applications之间的关系,多对多关系,例如aspnet_Users与aspnet_UserInRoles与aspnet_Roles之间的关系。
图1 用户表Fig.1 User table
2.2 ASPNETDB的基本结构
数据库共有十一张表,七十七个字段,表间关系如图2所示。
图2 表间关系Fig.2 Realation tables
上图是整个数据库的全貌,这个数据库适应了百分之九十以上的应用需求,开发人员可以在上述基础上根据自己应用的需求进行定制、扩充。本文不可能论述该数据库的所有方面,只将其主要方面的应用进行剖析,以期解决读者所需。
3 用户表与用户登录及注册
如图1是用户表结构,该表是应用的基础,几乎所有的应用软件、网站系统都要用到用户表,用户登录也是基本功能,为了规范开发者行为,提高开发效率,Asp.net以面向对象的方法,提供了登录组件如图3所示,配合数据库实体完成登录功能,具体实现过程如下:aspnet_Users中存有用户信息,搜集用户输入后比对正确与否,给出是否可以登录的功能实现,但是这个过程不需要用户写一句代码就可以轻松实现,高效完成。
用户注册相对复杂,收集用户输入后,存入相应数据库表中,如图4所示,用户名存入aspnet_Users表中,电子邮件存、密码和确认密码都存入aspnet_Membership表中,在创建用户时,还会生成一些后台信息存入十一张表的相应表中,参考图2。这个过程首先要对用户数据和生成的后台数据进行分析,以表间关系为纽带,把不同的数据按照一定的规则存入数据库相应的表中,但是这个过程也不需要用户写一句代码,就可轻松、高效完成。
图3 用户登录Fig.3 User login
图4 新建用户Fig.4 New user
4 关键表的结构与分析
ASPNETDB数据库有四张表是与应用问题紧密相关的,其完整的结构形式如图5所示。Aspnet_Users是用户信息表,aspnet_Membership是成员信息表,aspnet_Roles是角色信息表,aspnet_UsersInRoles是用户与角色关系表,首先四张表都符合第2.1节所论述的理论理论基础,其次Aspnet_Users表与aspnet_Membership是一对一关系,这样我们可以把这两张表理解为一张大表,从表结构内容来看,已经涵盖了用户信息的较全面的内容,诸如用记标识、用户姓名、移动电话、用户邮箱,用户密码及确认密码、密码问题、问题答案、创建日期、用户说明等等,不一一嗦述。但是如图4所示,默认创建创建用户组件只使用了其中的四项内容,这时有许多开发者由于没有搞清楚数据库结构,及后台数据库与界面组件之间的对应关系,认为Asp.net提供的模板不全,要么撇开基础模板从零开始做起,要么自己另写数据提供程序,所有这些做法都没有从软件工程的角度去继承事先提供的高效模板,没有以面向对象的思想去使用或彻底使用组件来开发应用软件,而是以传统的面向过程的思想,以手工的方式从零或部分从零开始,逐句开发。
图5 表结构Fig.5 Table structure
如图 5 中 Aspnet_Users,aspnet_UsersInRoles,asnet_Roles这三张表描述了用户与角色之间的关系,以aspnet_UsersIn-Roles为中间关系表,决定了一个用户可以有若干种角色,一个角色也可以适用于多个用户这样的关系。当我们使用这个基础结构时,便可以很方便地把某个用户与某种资源之间的权限关系进行设置,使用的是网站管理工具,如图6所示。不用写一行代码即可完成用户的权限分配,否则,也得以手工的方式,以传统的面向过程的思想,逐句开发。不但不够规范,而且使软件的健壮性很弱,开发效率很低。
图6 网站管理Fig.6 Website management
5 应用扩展与实践
针对部分开发人员出现的上述问题,文中提供以下思路与方法。
5.1 默认模板用户信息不足问题的解决
现在我们已经用数学的高度把数据库的基本原理搞清楚,从低层结构的角度把数据之间的关系分析透彻,那么就可以针对我们自己应用问题的需要,开发一个完善用户信息的收集界面,把收集到的用户信息,按表间关系的基本原则存入各相关数据库表中,这里需要注意的是,一要理解各数据库表的作用,逻辑上完整的数据,到数据库中要分散存入到不同数据库表中,不能破坏数据的逻辑整体性;二是要分析透应用数据的内在联系,存入表中的数据不能违反主、外键的数据完整性约束,做到这两点是软件开发人员的责任。
如果应用问题复杂,基础结构所提供的数据项不能满足需要,这时我们可以扩展ASPNETDB的基础结构,从aspnet_Users表以主键UserId向外扩展一张表,我们暂且称为用户信息附加表,该表与aspnet_Users是一一对应关系,即把用户表横向扩展,以满足应用需求。
5.2 建立应用问题实体表与基础结构表的关联
ASPNETDB数据库基础结构只是一个通用结构,它涉及到用户管理,诸如用户的新增与删除,用户信息的修改;角色管理,诸如角色的新增与删除,角色的修改;安全管理,诸如用户的授权,资源访问规则等一般性问题,而解决最终用户的专业应用问题才是软件开发的目的,那么怎么实现应用数据数据库和ASPNETDB的关联就成为主要问题了。
首先,用户应用问题可能很复杂,数据结构庞大,那么就要对用户数据进行分析、取舍,进行规范化处理,最低应符合三大范式要求,根据实际情况建立实体联系模型,将复杂的数据关系,归一化到一对一、一对多、多对多关系上来,在归一化过程中,确定顶层表、中层表、低层表,至此,用户数据便设计完成。类似于ASPNETDB数据库各表中顶层表是aspnet_Users,低层表是 aspnet_PersonalitionAllUsers,aspnet_Profile,aspnet_Application,其它表都是中层表。
其次,应用数据的关系表集的顶层表与ASPNETDB的顶层表以键的形式进行关系,至于是一对一关联,还是二对多关系,抑或是多对多关系,还要根据实际应用进行确定。这样,用户应用数据就和ASPNETDB数据关联为一个数据库整体,可以进行任意的数据处理了。
最后,整体数据库的应用问题便是全体数据的增、删、改、查操作,要符合关系数据库的基本原则,保持数据完整性、一致性、正确性、事务性。
6 结论
在先进的软件工具辅助下,程序员已经被极大的解放了,因此,充分利用现有工具,提高开发质量和效率应视为程序员的职责,在面向对象和软件工程思想指导下,以构建而不仅是编写代码的方式来开发应用软件,应该成为基础而不只是概念。程序开发者应该拿出更多精力分析应用系统结构的合理性、完整性、通用性、可扩展性、安全性,而不是仅局限于从零开始于编写程序代码。本文从ASPNETDB这个基础结构出发,论述了应用软件快速开发理论和实践,以食读者。
[1]王旭辉.Excel数据导入数据库的设计实现 [J].现代电子技术,2013(12):71-73.
WANG Xu-hui,Import data from excel to database based on.Net Platform[J]Modern Electronic Technique 2013(12):71-73.
[2]赵娟.C++语言的软件复用机制 [J].现代电子技术,2012(15):73-74.
ZHAO Juan.Software using c++language mechanism[J].Modern Electronic Technique,2012(15):73-74.
[3][美]CharlesPetzold.Microsoft C#Windows Program[M],北京:北京大学出版社,2002.
[4][意]Dino Esposito ASP.NET 3.5核心编程[M].北京:清华大学出版社,2009.
[5]章立民.SQL Server2005数据库开发实战[M].北京:机械工业出版社,2009.
[6][美]Simon Robinson Professional C#,3rd Edition[M].北京:清华大学出版社,2005.
[7]王珊.数据库系统原理教程[M].北京:清华大学出版社,2005.
The theoretical analysis and the development of the ASPNETDB practice
WEN Yi
(College of Information Engineering,Chang′an University,Xi'an 710064,China)
This paper discusses the basic principle of ASPNETDB from theory aspect,the basic structure,discusses the objectoriented and software engineering idea,the basic idea of fast and efficient development of application software,this paper discusses the background database and the front desk interface of work and working principle of the database template is discussed,and the extension,the standardization of the data model and the mathematical foundation,and from the aspects of development practices to achieve the ASPNET concrete application.
ASPPNETDB;relational schema;paradigm;a relational table;registered;data integrity
TP392
A
1674-6236(2014)17-103-03
2013-10-23 稿件编号:201310154
闻 怡(1971—),女,江苏江阴人,工程师。研究方向:计算机网络信息技术。