老尸 发表于 2015-1-16 22:32:37

ASP网页设计数 据 库 设 计 经 验 谈

ASP在国内异常流行,因为国内大多使用的是盗版的Windows和盗版的SQLServer,而ASP+COM+SQLServer实际上也是一种不错的搭配,其性能也不输于PHP+MYSQL,特别是Windows系统和SQLServer都有图形界面,比APACHE和MYSQL易于维护,因此对于不重视知识产权的国家来说也是一种不错的选择。数据库模子的计划是不是公道会极年夜影响体系的利用功能。笔者根据多年来计划和利用数据库的履历,提出以下一些设
计准绳,供同仁们参考。

  慎用游标(Cursor)

  游标供应了对特定汇合中逐行扫描的手腕,一样平常利用游标来逐行遍历数据,依据掏出数据前提的分歧举行分歧的操
作。而关于多表和年夜表中界说的游标(年夜的数据汇合)轮回很简单使程序进进一个冗长的守候乃至逝世机,笔者在某市“住
房公积金办理体系”举行日终账户滚积数计息处置时,对一个10万个账户的游标处置时招致程序进进了一个无穷期的守候
(后经测算需48小时才干完成)(硬件情况:Alpha/4000128MBRAM,SCOUnix,Sybase11.0)。经修正程序并改用UPDATE
语句后,该处置历程得以在20分钟以内完成。示比方下:

  DeclareMycursorcursorforselectcount―nofromCOUNT  

  OpenMycursor

  FetchMycursorinto@vcount―no

  While(@@sqlstatus=0)

  Begin

  If@vcount―no=′ ′前提1

操纵1

  If@vcount―no=′ ′前提2

操纵2

...

  FetchMycursorinto@vcount―no

  End

    ...

  改成

  UpdateCOUNTset操纵1for前提1

  UpdateCOUNTset操纵2for前提2

...

  在某些必需利用游标的场所,可思索将切合前提的数据行转进一时表中,再对一时表界说游标举行操纵,如许,可以使
功能失掉分明进步。笔者在某地市“电信免费体系”数据库背景程序计划中,对一个表(3万行中切合前提的30多行数据)
举行游标操纵(硬件情况:PC服务器,PⅡ26664MBRAM,WindowsNT4.0MSSQLServer6.5)。

  示比方下:

Create#tmp/*界说一时表*/

    (字段1

    字段2

      ...)

  Insertinto#tmpselect*fromTOTALwhere前提

  DeclareMycursorcursorforselect*from#tmp/*对一时表界说游标*/

    ...

  索引(Index)的利用技能

  创立索引一样平常有两个目标:保护被索引列的唯一性和供应疾速会见表中数据的战略。年夜型数据库有两种索引,即簇索
引和非簇索引,一个没有簇索引的表是按堆布局存储数据,一切的数据均增加在表的尾部;而创建了簇索引的表,其数据
在物理上会依照簇索引键的按次存储,一个表只同意有一个簇索引,因而,依据B树布局,能够了解增加任何一种索引均能
进步按索引列查询的速率,但与此同时会下降拔出、更新、删除操纵的功能,特别是当添补因子(FillFactor)较年夜时。
以是对索引较多的表举行频仍的拔出、更新、删除操纵时,建表和索引时应设置较小的添补因子,以便在各数据页中留下
较多的自在空间,削减页支解及从头构造的事情。

  数据的分歧性和完全性

  为了包管数据库的分歧性和完全性,计划职员常常会计划过量的表间联系关系(Relation),尽量地下降数据冗余。表
间联系关系是一种强迫性措施,创建后,对父表(ParentTable)和子表(ChildTable)的拔出、更新、删除操纵均要占用体系
的开支,别的,最好不要用Identify属性字段作为主键与子表联系关系。假如数据冗余低,数据的完全性简单失掉包管,但增
加了表间毗连查询的操纵。为了进步体系的呼应工夫,公道的数据冗余也是需要的。利用划定规矩(Rule)和束缚(Check)来
避免体系操纵职员误输出形成数据的毛病是,计划职员的另外一种经常使用手腕,可是,不用要的划定规矩和束缚也会占用体系的不
需要开支,必要注重的是,束缚对数据的无效性考证要比划定规矩快。一切这些,计划职员在计划阶段应依据体系操纵的类
型、频度加以平衡思索。

  事件的圈套

  事件是在一次性完成的一组操纵。固然这些操纵是单个的操纵,SQLServer可以包管这组操纵要末全体都完成,要末
一点儿都不做。恰是年夜型数据库的这一特征,使得数据的完全性失掉了极年夜的包管。

  尽人皆知,SQLServer为每一个自力的SQL语句都供应了隐含的事件把持,使得每一个DML的数据操纵得以完全提交或回
滚,可是SQLServer还供应了显式事件把持语句,如:

  BEGINTRANSACTION入手下手一个事件

  COMMITTRANSACTION提交一个事件

  ROLLBACKTRANSACTION回滚一个事件

  事件能够嵌套,能够经由过程全局变量@@trancount检索到毗连的事件处置嵌套条理。要出格注重的是,每一个显现或隐含的
事物入手下手都使得该变量加1,每一个事件的提交使该变量减1,每一个事件的回滚城市使得该变量置0,而只要当该变量为0时的
事件提交(最初一个提交语句时),才把物理数据写进磁盘。

  数据范例的选择

  数据范例的公道选择关于数据库的功能和操纵具有很年夜的影响,有关这方面的书本也有很多的论述,笔者这里次要介
绍几点履历:

  1.Identify字段不要作为表的主键与别的表联系关系,这将会影响到该表的数据迁徙。

  2.Text和Image字段属指针型数据,次要用来寄存二进制年夜型工具(BLOB)。这类数据的操纵比拟别的数据范例较
慢,因而要避开利用。

  3.日期型字段的长处是有浩瀚的日期函数撑持,因而,在日期的巨细对照、加减操纵上十分复杂。可是,在依照日期
作为前提的查询操纵也要用函数,比拟别的数据范例速率上就慢很多,由于用函数作为查询的前提时,服务器没法用先辈的
功能战略来优化查询而只能举行表扫描遍历每行。
ActiveServerPage技术为应用开发商提供了基于脚本的直观、快速、高效的应用开发手段,极大地提高了开发的效果。在讨论ASP的安全性问题之前,让我们来看看ASP是怎么工作的。

第二个灵魂 发表于 2015-1-19 16:23:08

我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。

老尸 发表于 2015-1-25 20:08:47

我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。

冷月葬花魂 发表于 2015-2-3 20:08:49

ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。

再现理想 发表于 2015-2-9 05:01:49

他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。

乐观 发表于 2015-2-27 00:04:22

没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。

分手快乐 发表于 2015-3-8 18:48:48

Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write

精灵巫婆 发表于 2015-3-16 11:37:35

最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。

莫相离 发表于 2015-3-22 22:49:04

多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。
页: [1]
查看完整版本: ASP网页设计数 据 库 设 计 经 验 谈