网上销售系统的设计与实现_第1页
网上销售系统的设计与实现_第2页
网上销售系统的设计与实现_第3页
网上销售系统的设计与实现_第4页
网上销售系统的设计与实现_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科生毕业设计(论文)如图4.1所示。信息管理系统信息管理系统系统管理子模块信息维护子模块零售子模块采购子模块入库子模块统计查询子模块图4.1系统总体模块图管理子模块是面向系统管理的应用模块,它主要包括用户管理,系统设置,权限管理,密码修改,阅读报表,其功能模块如图4.2所示。图4.2系统管理子模块图信息维护子模块包括以下的功能图4.3所示。图4.3信息维护子模块图零售子模块主要包括以下的功能图4.4所示。图4.4零售子模块图系统入库子模块功能如图4.5所示。图4.5入库子模块图系统统计查询功能如图4.6所示。图4.6统计查询子模块图模块设计这一节将对功能模块图中的部分模块的功能作概要的描述。系统管理模块权限管理如图4.7所示。图4.7权限管理图药店信息管理系统主要实现的是系统的管理功能,分为用户管理,权限管理,密码管理,系统设置和药品信息管理维护以及报表的产生.用户管理能对本系统的所有用户的信息进行管理,添加用户,修改用户信息,注销用户等.权限管理中,管理员能够设置访问本系统的所有用户的权限,设置用户能够进行什么操作,不能够进行什么操作,例如:系统中管理员的权限为最高,所有操作均可以,而采购员的权限只可以进行采购管理和对自己的信息,密码进行修改.密码管理中,用户只能对自己的密码进行设置与修改.系统设置只能系统管理员操作,进行设置系统中库存的上下限,药品有效期提示的时间,违禁药品的添加.管理模块流程图如图4.8所示。图4.8管理结构流程图用户编辑这一模块主要是面向系统管理员的应用模块,也是系统较为关键的模块部分,它包括用户管理:主要来实现对系统用户的添加,删除,修改等操作。用户编辑如图4.9所示。图4.9用户编辑图确定按扭代码:PrivateSubCommand1_Click()SelectCaseCombo2.TextCase"管理员"Text4.Text="0001"Case"医生"Text4.Text="0006"Case"售药员"Text4.Text="0003"Case"保管员"Text4.Text="0005"Case"采购员"Text4.Text="0004"Case"领导"Text4.Text="0002"EndSelectanswer=MsgBox("您确信要修改此记录吗?",vbYesNo,"提示")Ifanswer=vbYesThen'Adodc1.Recordset.AddNewAdodc1.Recordset.Fields("职工代码")=Text1(0).TextAdodc1.Recordset.Fields("职工类别代码")=Text4.TextAdodc1.Recordset.Fields("职工姓名")=Text1(2).TextAdodc1.Recordset.Fields("职工性别")=Combo1.TextAdodc1.Recordset.Fields("职工出生日期")=DTPicker1.ValueAdodc1.Recordset.Fields("职工家庭住址")=Text1(4).TextAdodc1.Recordset.Fields("职工联系电话")=Text1(5).TextAdodc1.Recordset.Fields("密码")=Text1(6).TextAdodc1.Recordset.UpdateAdodc1.RefreshMsgBox"修改记录成功!",48,"提示"ElseText1(0).SetFocusSendKeys"{Home}+{End}"EndIfEndSub权限管理:主要来实现对系统用户的权限的管理,修改,以保证系统正常安全的工作。密码修改:主要实现用户本身对自己密码的修改操作。系统设置如图4.10所示。图4.10系统设置图系统设置:主要实现对系统库存药品上下限,药品有效期,国家禁卖药品等功能的设置。使管理员能很方便,快捷的对系统进行修改。阅读报表:主要是面向药店领导的模块,方便药店领导了解药店的运营状况。信息维护:这一模块主要是对系统基本信息的维护。它包括药品信息维护:主要维护的是药品的基本信息,对系统药品的添加,删除,修改。药品信息如图4.11所示。图4.11药品信息图药品分类维护:主要对药品的分类进行维护,药品分类按国家标准进行,主要分为抗生素类,抗病毒类等12类药品。生产厂家信息维护:主要维护的是药品的生产厂家的一些基本信息。数据字典维护:此功能主要是对系统本身的数据字典进行维护,分为系统用户,药品单位,生产厂家,药品分类,药品批号五种。药品分类如图4.12所示。图4.12药品分类图零售模块此模块也是系统较为关键的模块,面向药店的销售人员,它主要分为药品销售和医生审核处方两个部分。药品销售还可以分为非处方药销售,处方药销售和顾客退药三部分。非处方药销售:售药人员将药品条形码(药品编码模拟)扫入计算机即可实现出售。处方药销售:首先需要药店医生审核该处方药是否可以出售,如可以出售,输入处方单号即可销售。顾客退药:如果该药品可以退,需输入购买该药品的小票号码和药品编码即可。采购模块此模块面向的是药店采购人员,首先在采购之前,系统根据系统库存上下限自动生成采购单,然后采购员根据此采购单进行采购。药品采购如图4.13所示。图4.13药品采购图入库模块此模块面向的是药店的保管员,它分为药品入库和库存盘点两部分。药品入库:首先保管员根据采购员发过来的采购单自动生成入库单,经过核查后进行入库操作,登记到数据库。库存盘点:为了确保库存药品的安全,保管员要每月进行一次盘点操作,主要对药店库存药品进行盘查核对,如果有出入,要报请领导处理。统药品入库如图4.14所示。图4.14统药品入库图统计查询模块此模块主要由信息统计和信息查询两部分构成。信息统计:完成了药品信息的统计和药品销售信息的统计,以及各个时间段药品销售情况分析。信息查询:完成了药品信息,销售信息,采购信息,入库信息的查询。可以根据药品的各种属性进行各种查询。信息统计如图4.15所示。图4.14信息统计图确定按扭代码:PrivateSubCommand1_Click()SelectCaseCombo1.TextCase"单一药品"IfText7.Text=""ThenMsgBox"请输入药品编码!",48,"提示"Text7.SetFocusSendKeys"{Home}+{End}"ElseCalldanyitongjiEndIfText7.Text=""Case"类药品"IfText7.Text=""ThenMsgBox"请输入药品类别!",48,"提示"Text7.SetFocusSendKeys"{Home}+{End}"ElseCallleitongjiEndIfText7.Text=""Case"全部药品"CallquanbutongjiText7.Text=""EndSelectEndSub2,查询模块在此模块中,用户可以查询药店内的所有药品的信息,药店近期的销售,采购,入库信息.进入模块后,用户可以选择查询意向,选择什么就在对应的位置添入查询信息,每一类查询都设置了很多的方式.也就是说查询关键字是什么,例如,药品信息查询可以按照药品编码,药品名称,药品单位等13种方式查询.还设有一个显示信息的功能,也就是说能够控制您的查询结果需要显示的信息,相关的信息显示出来,不相关的信息就没有必要显示出来,在此功能中,只要用户选择了什么,查询结果就能够显示出什么.在模块的菜单中还可以进行分类查询(针对药品信息)和显示全部信息功能。信息查询如图4.15所示。图4.16信息查询图销售查询确定按扭代码:PrivateSubCommand1_Click()DimaAsIntegerDimbAsStringDimiAsIntegerDimjAsIntegerAdodc2.Visible=TrueDataGrid2.Visible=TrueDataGrid5.Visible=TrueAdodc1.Visible=FalseAdodc3.Visible=FalseAdodc4.Visible=FalseDataGrid1.Visible=FalseDataGrid3.Visible=FalseDataGrid4.Visible=FalseDataGrid6.Visible=FalseDataGrid7.Visible=FalseSelectCaseCombo3.TextCase"售药员代码"IfText2.Text=""ThenMsgBox"请输入您要查询的关键字!",48,"提示"ElseAdodc5.Recordset.Filter=("售药员代码like'"&Text2.Text&"*'")IfAdodc5.Recordset.BOF=TrueOrAdodc2.Recordset.EOF=TrueThenMsgBox"没有您想要查找的售药员!",48,"提示"Text2.SetFocusSendKeys"{Home}+{End}"EndIfa=Adodc5.Recordset.RecordCountFori=1ToaAdodc5.Recordset.AbsolutePosition=ib=Adodc5.Recordset.Fields("小票号码")Adodc2.Recordset.Filter=("小票号码='"&b&"'")NextEndIfCase"药品编码"IfText2.Text=""ThenMsgBox"请输入您要查询的关键字!",48,"提示"ElseAdodc2.Recordset.Filter=("药品编码like'"&Text2.Text&"*'")IfAdodc2.Recordset.BOF=TrueOrAdodc2.Recordset.EOF=TrueThenMsgBox"没有您想要查找的药品!",48,"提示"Text2.SetFocusSendKeys"{Home}+{End}"EndIfa=Adodc2.Recordset.RecordCountFori=1ToaAdodc2.Recordset.AbsolutePosition=ib=Adodc2.Recordset.Fields("小票号码")Adodc5.Recordset.Filter=("小票号码='"&b&"'")NextEndIfCase"药品售出日期"Adodc5.Recordset.Filter=("药品售出日期='"&DTPicker1(1).Value&"'")IfAdodc5.Recordset.BOF=TrueOrAdodc5.Recordset.EOF=TrueThenMsgBox"没有您想要查找的信息!",48,"提示"DTPicker1(1).SetFocusDTPicker1(1).Value=DateSendKeys"{Home}+{End}"EndIfa=Adodc5.Recordset.RecordCountFori=1ToaAdodc5.Recordset.AbsolutePosition=ib=Adodc5.Recordset.Fields("小票号码")Adodc2.Recordset.Filter=("小票号码='"&b&"'")NextCase"小票号码"IfText2.Text=""ThenMsgBox"请输入您要查询的关键字!",48,"提示"ElseAdodc2.Recordset.Filter=("小票号码like'"&Text2.Text&"*'")IfAdodc2.Recordset.BOF=TrueOrAdodc2.Recordset.EOF=TrueThenMsgBox"没有您想要查找的信息!",48,"提示"Text2.SetFocusSendKeys"{Home}+{End}"EndIfa=Adodc2.Recordset.RecordCountFori=1ToaAdodc2.Recordset.AbsolutePosition=ib=Adodc2.Recordset.Fields("小票号码")Adodc5.Recordset.Filter=("小票号码='"&b&"'")NextEndIfCase"药品优惠额度"IfText2.Text=""ThenMsgBox"请输入您要查询的关键字!",48,"提示"ElseAdodc2.Recordset.Filter=("药品优惠额度like'"&Text2.Text&"*'")IfAdodc2.Recordset.BOF=TrueOrAdodc2.Recordset.EOF=TrueThenMsgBox"没有您想要查找的信息!",48,"提示"Text2.SetFocusSendKeys"{Home}+{End}"EndIfa=Adodc2.Recordset.RecordCountFori=1ToaAdodc2.Recordset.AbsolutePosition=ib=Adodc2.Recordset.Fields("小票号码")Adodc5.Recordset.Filter=("小票号码='"&b&"'")NextEndIfEndSelectEndSub查询模块流程图如下所示。图4.17查询结构流程图测试与调试什么是软件测试为了保证软件的质量和可靠性,应力求在分析、设计等各个开发阶段结束前,对软件进行技术评审。但由于人们能力的局限性,审查不能发现所有的错误。这些错误和缺陷如果遗留到软件交付投入运行时,终将汇暴露出来。但到那时,不仅改正这些错误的代价更高,而且往往造成恶劣的后果。软件测试就是在软件那投入运行之前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。如果需要给软件测试下个定义,可以这样讲:软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发阶段的规格说明和程序的内部结构而精心设计一批用例(即输入数据及其与其的结果)并利用这些测试用例去运行程序,以发现程序错误的过程。因为不可能进行穷尽测试,所以测试不可能发现程序中的所有错误,也就是说,通过测试并不能说明程序是正确的。但是,我们的目的是要通过测试保证软件的可靠性,因此,必须仔细设计测试方案,力争用尽可能少的方式发现尽可能多的错误。本软件在测试过程中发现很多错误,虽然已经修改,但是仍然不敢说是完美的。希望用户在使用中发现错后及时与本人联系以便改正。测试方法选择1.模块测试因为每个模块完成一个单独的功能,与同级的其它模块之间没有相互依赖的关系,所以,有可能把每个模块作为一个单独的实体来测试,而且通常比较容易设计检验模块正确性的测试方案。模块测试的目的是保证每个模块作为一个单元能正确运行,所以模块测试通常又称为单元测试。2.子系统测试子系统测试是把经过单元测试的模块放在一起形成一个子系统来测试。模块相互间的协调和通信是这个测试过程中的主要问题,因此这个步骤着重测试模块的接口。3.系统测试系统测试是把经过测试的子系统装配成一个完整的系统来测试。在这个过程中不仅应该发现社的错误,还应该验证系统确实能提供需求说明书中指定的功能,而且系统的动态特性也符合预定要求。在这个测试步骤中发现的往往是软件设计中的错误,也可能发现需求说明书中的错误。不论是子系统测试还是系统测试,都兼有检测和组装俩重含义,通常称为集成测试。4.验收测试验收测试把软件系统作为单一的实体进行测试,测试内容与系统基本类似,但是它是在用户积极参与下进行的,而且可能主要使用实际数据(系统将来要处理的信息)进行测试,验收测试的目的是验证系统确实能够满足用户的需要,在这个测试步骤中发现的往往是系统说明书中的错误。5.平行运行时间的考验。所谓平行运行就是同时运行新开发出来的系统和将被它取代的旧系统,以便比较新旧两个系统的处理结果。这样做的目的有如下几点:1)以在准生产环境中运行新系统而又不冒风险;2)用户能有一段熟悉新系统的时间;3)可以验证用户指南和使用手册之类的文档;4)能够以准生产关系重大的软件产品在验收之后往往并不立即投入生产性运行,而是要再经过一段平行运行模式对新系统进行全负荷测试,可以用测试结果验证性能指标。软件测试的目标下面的测试规则也可以看作是测试的目标和定义:测试是为了发现程序中的错误而执行程序的过程;好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;好的测试是发现了至今尚未发现的错误测试;从上述规则中可以看出,测试的目的是为了发现“程序中的错误而执行程序的过程。”正确认识测试的目标是十分重要的,测试目标决定了测试方案的设计。如果为了表明程序是正确的而进行测试,就会设计一些不易暴露错误的测试方案;相反,如果测试是为了发现程序中的错误,就会力求设计出最能暴露错误的测试方案。测试的目标是暴露程序中的错误,但是测试只能查找出程序之中的错误而不能证明程序之中没有错误。设计测试方案是测试阶段的关键技术问题。所谓测试方案包括预定要测试的功能,应该输入的测试数据和预期的结果。其中最困难的问题是设计测试用的输入数据(即,测试用例)。不同的测试数据发现程序错误的能力差别很大,为了提高测试效率低测试成本,应该选用高效的测试数据,因为不可能进行穷尽的测试,选用少量“最有效的”测试数据,做到尽可能完备的测试就更重要了设计测试方案的基本目标是,确实一组最可能发现某个错误或某类错误的测试数据。已经研究出许多设计测试数据的技术,这些数据各有优缺点,没有哪一种最好的,更没有哪一种可以替代其余所有技术;同一种技术在不同繁荣应用场合效果可能相差很大,因此,通常需要联合使用多种设计测试数据的技术。在开发软件系统的漫长过程中,面对着极其错综复杂的问题,人的主观认识不可能完全的复合客观事实。因此在软件生命周期的每个阶段都不可避免的会产生差错。测试是为了发现程序中的错误而执行程序的过程,它的目标是暴露程序中的错误。经过几个月的毕业设计,题目要求的内容、功能已经基本实现。为了保证软件质量,及时修正并发现软件中的错误。在题目完成后,我一直都在对软件进行调试、修改,使其功能能够完善、稳定性提高。由于本系统中,每个模块都实现的是一个清晰定义的子功能,为了保证每个模块作为一个单元能独立的正确运行,我把每个模块作为一个单独的实体来测试。现在我阐述一下对本软件的详细测试过程。功能的调试1.本系统本身就是个数据库类的软件,所以几乎所有操作都是对数据库的操作,自然就有很多对数据库进行查询,删除和修改操作。在对数据库进行以上的操作时,首先得确定边界情况,即先判断数据库是否为空。那么在数据库为空的情况下:对之进行查询操作,会出现“实时错误‘3021’:BOF或EOF中有一个是“真”,或者当前记录已被删除,所需的操作要求一个当前的记录。”在对数据库进行查询或删除操作时,在执行代码前先加上下面的判定代码:IfAdodc1.Recordset.BOF=TrueOrAdodc1.Recordset.EOF=TrueThen提示出错信息或数据库中没有此记录Else对数据库进行相应的操作,查询,删除或修改EndIf2.在对数据库进行添加操作时,往往会因为不能往数据库里添加空值而出现“实时错误‘3265’:项目在所需的名称或序数中未被发现。””无法将NULL值插入到列‘‘表‘‘中,该列不允许空值,INSERT失败”现举例要将text1的值插入到数据库”姓名”列中,那么在插入前先判断,编写代码如下:IfText1.Text1=""Then提示信息,姓名不能为空,请重新填写!Text1.SetFocusSendKeys"{Home}+{End}"ElseAdodc1.Recordset.AddNewAdodc1.Recordset.Fields("姓名")=Text1.TextAdodc1.Recordset.UpdateAdodc1.RefreshEndIf操作的调试为了使软件应用起来方便快捷,操作快速,本系统绝大部分操作都是直接的键盘操作,少数用到了鼠标操作.在调试的过程中就遇到了很多的类似的问题,如:按下回车键后,焦点应落到控件3上,而按照程序中控件的TabIndex属性,焦点落到了控件2上等等.解决的办法,编码如下:在类似的操作之前,在该控件的键盘事件下编码如下:PrivateSubCommand1_KeyDown(KeyCodeAsInteger,ShiftAsInteger)Command2.SetFocusEndSub上述例子就是指在Command1获得焦点后,按下回车键,焦点会自动跳到Command2上,使Command2获得当前焦点,进行操作.系统调试调试前,清空数据库中的所有数据;然后,输入少量的数据进行调试。调试首先从数据维护模块开始,在输入初始数据时,发现许多关于方便用户操作的问题,比如,当前日期的输入,可以直接获取系统的日期,不用用户手工输入;小票号码和各种单据号码都应由系统自动生成.有些信息,比如药品信息已经在数据库中存在,只要用户输入其中的一项,那么其他项就应该自动从数据库中提出来,节省用户的时间,方便用户查看;在调试查询模块时,发现对字符串的比较存在大小写之分,两个数据比较存在类型是否一致问题,所以要先将要比较的两个数据转化成相同的格式,然后再进行比较;如果查询的结果为空,那么应该给出提示信息(如:”没有您所要查找的信息!请重新输入!”等),这样才能正真做到人机界面友好。由于时间和本人能力的有限,调试过后也难免会有错误,设计所达到的总体水平还有很多不尽人意之处,希望学校老师领导能提出宝贵意见,通力完善!结论转眼之间,三个月的毕业设计已接近尾声,我现在感觉自己长大了很多,也学到了很多,当然也自信了很多。之前,对于编程,我对自己不自信,虽然平时学习挺好,但对于编程方面却没有很大的兴趣。在毕业设计之前,也从来没有系统的去学过什么,可是经过三个月的毕设,我惊奇的发现原来自己在这一方面也可以做得很好,虽然在有些方面仍有欠缺,但我已经不再害怕,我相信自己可以做得很好,这一点是在这次毕设中得到最多的东西,我想应该也是在大学期间里学得最多的东西。在这次毕设期间,除了上面提到的,以下几点也是深有体会的:1.从问题的分析到查阅资料,然后对系统的分析,设计以及对软件开发环境的熟悉,以至到编码、测试,调试,到最终的完成,我清楚了软件设计的整个过程,对于这些不再陌生,培养了自己严谨的逻辑思维。2.因为毕设题目是药店方面的,所以在这一过程中,不仅仅是学到了专业知识,而且了解到了很多关于药店方面和医疗技术方面的知识。3.在这一过程中,增强了自己的动手能力,对于电脑的操作比以前又熟练了很多。4.在调试的过程中曾遇到很多问题,经过这一阶段,自己的分析问题,解决问题的能力也有了很大的提高。总之,经过这三个月的学习,我又自信了很多,相信这一阶段的努力会为我以后的发展做一个良好的铺垫,为将来走上工作岗位打下了良好的基础,我将继续坚持不懈的努力。参考文献[1]刘卫宏著.SQLServer2000实用教程.北京市.北京希望电子出版社,2003.[2]敬铮,于英杰编著.VisualBasic6.0数据库开发与专业应用.北京市.国防工业出版社,2002.[3]萨师煊,王珊著.数据库系统概论(第三版).北京市.高等教育出版社,2002.[4]张海藩著.软件工程导论(修订版).北京市.清华大学出版社,1992.[5]刘瑞新,崔淼著.VisualBasic程序设计.北京市.机械工业出版社,2003.[6]周霭如,官士鸿,林伟健著.VisualBasic程序设计.北京市.电子工业出版社,2003.[7]段兴主编.VisualBasic6.0数据库实用程序设计100例.北京市.人民邮电出版社,2002.[8]李晓黎,张巍著.VisualBasic+SQLServer数据库应用系统开发与实例.北京市.人民邮电出版社,2003.[9]长城工作室数据组著.SQLServer2000高级应用.北京市.人民邮电出版社,2002.[10](美)MikeGunderloy著,张光霞等译.VisualBasic开发指南(ADO).北京市.电子工业出版社,2001.[11]王栋.VisualBasic课程设计.北京市.清华大学出版社,2001[12]卫振林、赵增敏.VisualBasic程序设计.北京市.机械工业出版社2001[13]BrianSiler,JeffSpots.MicrosoftVisualBasic6.0开发者使用手册.北京市.机械工业出版社,2001[14]MichaelHalvorson.MicrosoftVisualBasic6.0专业版循序渐进教程.北京市.北京希望电子出版社,2001[15]赵松涛.中文版SQLServer2000应用及实例集锦.北京市.人民邮电出版社,2002致谢本系统在设计中本着最大限度地减少操作人员的冗余思考、选择和动作,使操作人员尽可能的摆脱传统工作的物理细节,直观而且容易掌握整个系统的工作过程的宗旨,经多次修改完善并和老师同学多次讨论商量,最终按期完成了。设计期间,承蒙我系多位教师和同学的帮助和指点,特别感谢指导教师赵凯老师多次在百忙之中抽出时间亲临指点,为设计提供了极大的帮助,才达到今天的设计成果。其次,感谢系里的领导和各位老师,在毕设过程中给我们提供了一个良好的环境,让我们安心进行毕业设计。在这里尤其感谢实验室的各位老师,每天不辞辛劳的为我们服务,衷心的感谢。当然也感谢在此期间给过我帮助的同学和朋友。他们为我提供了许多学习资料,让我在学习数据库编程的时候,不明白的地方可以查询。对于我的毕设,他们也给我提出了很多可行性的建议。同时也感谢CSDN(程序员大本营)上的一些朋友,在我程序调试的过程中,给我解决了很多疑难问题,也让我学到了很多毕设以外的关于VB、SQL以及数据库设计和网络等方面的知识。在此,我由衷的感谢他们!谢谢!附录英文文献LeverageMicrosoftSQLServer2000SkillstoLearnDB2UDBVersion81.IntroductionIntheworldofinformationtechnologytoday,weareconstantlybombardedwithnewinformation--newsoftwareproducts,newversions,newfeatures.Leveragingyourcurrentknowledgeisonewaytokeepupwiththisconstantchange.I'llshowyouhowyoucanuseyourcurrentknowledgeofMicrosoft®SQLServer2000toquicklygainskillsinDB2UDBforLinux,UNIX,andWindowsVersion8.Inthisarticle,Iusetheterm"SQLServer"torefertoMicrosoftSQLServer2000and"DB2UDB"torefertoDB2UDBforLinux,UNIX,andWindowsVersion8.ThefocusofthearticlewillbemainlyontheWindowsplatform.ThefirstimportantdifferencetonotebetweenSQLServerandDB2UDBisthatSQLServerisonlysupportedontheWindowsplatforms(Intelarchitecture).DB2UDB,ontheotherhand,issupportedonLinux,UNIXandWindowsplatformsandinavarietyofhardwarearchitectures.Thecodeforalloftheseplatformsisessentiallythesamewithveryminorplatform-specificmodules.Inaddition,theDB2UDBproductextendstotheiSeries?(AS/400?andz/OS?(mainframe)world.TheiSeriesandz/OSDB2UDBmembersdonothavethesamecodebaseasDB2UDBforLinux,UNIXandWindowsbecausethoseproductsleveragetheirrespectivehardwarearchitectures.However,functionalityacrosstheDB2familyisverysimilar.AfteryouarecomfortablewithDB2UDBforLinux,UNIXandWindows,youcanventureoutandlearnmoreaboutDB2ontheseotherplatforms.Seetheresourcessectionformorearticlesonhowyoucancontinuebuildingyourskills.2.OverviewofthesystemstructuresFigure1belowshowsthebasicSQLServerstructure.CompareitwithFigure2,whichshowsthestructureofDB2UDB.I'llbereferringtothesefiguresthroughoutthearticle.Figure1.MicrosoftSQLServer2000structureFigure2.DB2UDBsystemstructureonLinux,UNIX,andWindowsVersion83.InstancesandserversTheconceptofaninstanceissimilarinSQLServerasinDB2UDB,althoughtheterm"instance"isnotusedofteninSQLServerterminology.Normally,userssimplyrefertoitasa"server".Forbothproducts,aninstanceprovidesanindependentenvironmentinwhichdatabaseobjectsarecreated,andapplicationsarerunonthoseobjects.Instancesfollowashared-nothingarchitecture,andthusobjectsfromoneinstancedonotnormallyinteractwithobjectsfromanotherinstance.Figures1and2showthePRODandDEVinstancesasconceptuallytwoseparateboxes.Thoughtheconceptofaninstanceisthesameonbothproducts,itsimplementationisquitedifferent.InSQLServeryoucanhavethe"default"instance(onlyone)andnamedinstances.AdefaultinstanceistheinstancecreatedonfirstinstallationofSQLServerandcanbeidentifiedbythecomputername.Anamedinstance,ontheotherhand,isaninstancecreatedafterthedefaultinstancehasbeencreatedandhastobeidentifiedintheformatcomputer_name\\instance_name.TocreateseveralSQLServernamedinstancesonthesamemachine,youmustusetheinstallationCDforeachnewinstance,andyouusetheinstallGUIforeachnewinstallation.Notethatinthisprocess,youwillbecopyingtheSQLServercodeforeachinstanceyoucreate,thoughindifferentpaths.Onlysomefilesaresharedbetweeninstances.TodropaninstanceyoumustuninstalltheinstanceusingtheinstallGUI.InDB2UDB,afterinstallingtheproductintheWindowsplatform,theinstance"DB2"iscreatedbydefault.InLinuxandUNIX,thedefaultinstancenameiscalled"db2inst1".Tocreateanotherinstanceinthesamemachine,yousimplyexecutethecommanddb2icrt<instancename>.ForDB2UDBinstancesonthesamemachine,thereisonlyonecopyoftheDB2UDBcode.Figure3showsthedefaultDB2UDBinstance"DB2"andtwootherinstancescreatedwiththedb2icrtcommandfromtheDB2UDBControlCenterGUI.Figure3.DB2UDBControlCenterGUIshowingDB2UDBinstancesToreferenceagivenDB2UDBinstancefromacommandlineinterface,usetheenvironmentvariableDB2INSTANCE.Thisvariableletsyouspecifythecurrentactiveinstancetowhichallcommandswouldapply.Forexample,ifDB2INSTANCEissettoPROD,andthenyouissuethecommandcreatedatabaseMYDB1,youwillcreateadatabaseassociatedwithinstancePROD.IfyouwantedtocreatethisdatabaseoninstanceDB2instead,thenyouwouldfirsthavetochangethevalueoftheDB2INSTANCEvariabletoDB2.AnothereasywaytoidentifytheinstanceyouwanttoworkwithisbyusingtheDB2UDBControlCenterGUIasshowninfigure3.Toseeanentryforthenewinstanceinthistool,youmayhavetoaddtheinstancetotheGUIbyrightclickingonInstancesandchoosingAdd.AfteryoucreateaDB2UDBinstanceonWindows,acorrespondingserviceiscreatedwiththesamenameastheinstancename.YoucandropaDB2instancebyexecutingthecommanddb2idrop<instancename>.ThiscommandwillnotremovetheDB2UDBcode.InthecaseofWindows,itdoesremovethecorrespondingWindowsservicesfortheinstance.Insummary,instancesforSQLServerandDB2UDBareconceptuallythesame;itisintheimplementationwherethedifferencearises.SQLServerrequiresadifferentcopyoftheSQLServercodepernewinstance,whileDB2UDBdoesn't.InSQLServer,theEnterpriseManagerGUIcanbeusedtomanageinstances,whileinDB2UDBtheControlCenterGUIcanbeusedforasimilarpurpose.4.DatabasesInSQLServer,aninstancecancontainseveraldatabases,asshowninFigure1.Eachdatabaseisanindependentunit;however,metadataaboutalluserdatabasesiskeptinthemasterdatabase,therefore,queriescanaccesstablesintwodifferentdatabases.Whenaninstanceiscreatedseveraldatabasesarecreatedbydefault,liketempdb,master,model,Northwind,etc.SQLServerusestwolevelstostoremetadata:theinstancelevel(usingsystemtablesinthemasterdatabase),andthedatabaselevel(usingsystemtablesintheuserdatabaseitself).Themasterandtempdbaredatabasesthataresharedbyotherdatabasesintheinstance.Otherobjectslikeviewsarealsocreatedbydefaultwhencreatingauserdatabase.InDB2UDB,aninstancecanalsocontainseveraldatabases,asshowninFigure2.Eachdatabaseisatrulyclosedandindependentunit.Eachdatabasehasitsowncatalogtablespace(storingmetadata),temporarytablespace,andusertablespace.ThereisnodatabasethatsharesmetadatainformationacrossdatabasesthewaythattheSQLServer'smasterdatabasedoes.Likewise,thereisnodatabasethatissharedamongotherdatabasestoholdtemporarydatathewaySQLServer'stempdbdoes.DB2UDBdoescontainabinaryfileknownasthesystemdatabasedirectorythatcontainsentriesofallthedatabasesyoucanconnectfromyourDB2machine.Thisdirectoryiskeptattheinstancelevel.Figure2illustratestheindependenceofeachdatabaseinDB2UDB.Inaddition,fromthisfigureyouwillseethateachdatabasehasitsowntransactionlogs,whichissimilarinSQLServer.Databaseswithinaninstancenormallydon'tinteractwitheachother;however,ifyourapplicationhassucharequirement,thiscanbesupportedbyenablingfederationsupport.5.Containers,tablespacesandfilegroupsInDB2UDB,containersarewherethedataisphysicallystored,andcanbeclassifiedintofiles,directoriesandrawdevices.InSQLServer,theconceptof'container'doesnotexist;however,filesareusedtostoredata.InDB2UDB,atablespaceisthelogicalobjectusedasalayerbetweenlogicaltablesandphysicalcontainers.Whenyoucreateatablespace,youcanassociateitwithaspecificbufferpool(databasecache)aswellastospecificcontainers.Thisgivesyouflexibilityinmanagingperformance.Forexample,ifyouhavea"hot"table,youcandefineitinitsowntablespaceassociatedtoitsownbufferpool.Thishelpsensurethedataofthistableisalwayscachedinmemory.Whenadatabaseiscreatedwithdefaultoptions,threetablespacesarecreatedasdescribedintable1Table1.DB2UDBtablespacescreatedbydefaultwhenadatabaseiscreated.TablespaceNameDescriptionSYSCATSPACECatalogtablespacecontainingmetadata.TEMPSPACE1Systemtemporarytablespaceusedtoperformoperationssuchasjoinsandsorts.Thenameofthistablespacecanbechanged.USERSPACE1Thistablespaceisoptionalandcanbeusedtostoreusertableswhenatablespaceisnotexplicitlyindicatedattablecreationtime.Becausedatabasesareindependentunits,tablespacesarenotsharedacrossdatabases.Becausetheyareonlyknownwithinadatabase,twodifferentdatabasescanhavetablespacesofthesamename.YoucanseethisinFigure2wheredatabaseMYDB1hasatablespacenamedMYTBLSanddatabaseMYDB2hasatablespaceofthesamename.SQLServerusesfilegroupsinasimilarfashionasDB2UDBtablespaces.Similarlytotablespaces,twodifferentdatabasescanhavefilegroupsofthesamename.ThisisshowninFigure1wheredatabaseMYDB1hasafilegroupnamedMyFileGroupanddatabaseMYDB2hasafilegroupofthesamename.DB2UDBtablespacescanbeclassifiedasSMS(system-managedspaces)orDMS(database-managedspaces).SMStablespacesaremanagedbytheoperatingsystemandcanonlybedirectories.Theygrowautomaticallyasneeded,thusitprovidesgoodperformancewithminimumadministration.ThisisequivalenttothebehaviorofSQLServerdatafiles(ifyouallowforautomaticgrowth).DMStablespacesaremanagedbyDB2UDB,andcanbefilesorrawdevices.Thistypeoftablespaceallowsforbestperformance,butsomeadministrationisrequired.Forexample,youneedtospecifyaheadoftimetheamountofspaceyouwanttoallocateforthetablespace,becausegrowthisnotautomatic.Table2belowshowshowSQLServerdatabasesmaptoDB2UDBdatabasesortablespaces.Table2.HowSQLServerdatabasesmaptoDB2UDBdatabasesandtablespacesSQLServerDatabaseDB2UDBdatabaseortablespaceMasterSYSCATSPACE(catalogtablespace);inDB2UDB,thisinformationiskeptonlyatthedatabaselevel.modelThereisnoequivalentdatabase/tablespace;however,DB2providesatoolcalled'db2look'whichcouldbeusedtocopythestructureofadatabaseintoascriptfile,andcouldbelaterexecutedtocreateanewdatabase.msdbToolscatalogdatabase,whichcanbecreatedatinstallation,orafterinstallationwiththecommandcreatetoolscatalogNorthwindSAMPLEdatabasepubsSAMPLEdatabasetempdbTEMPSPACE1tablespacedistributionDB2UDBprovidesbuilt-inreplicationsupportforalltheDB2UDBfamily.Replicationinvolvinganon-DB2relationalmanagementsystemrequirestheInformationIntegratorsoftware.6.SecuritySQLServerusestheconceptsofauthentication,rolesandprivilegestoimplementsecurity.Twomodesofauthenticationaresupported:Windowsauthentication.

TheWindowsOperatingsystemauthenticatestheloginidandpassword,andpassesonlytheloginidtoSQLServer,whichmatchesittothesysxloginssystemtable.Mixedmodeauthentication.

SQLServerauthenticatestheloginidandpasswordagainsttheinformationithasinthesysxloginssystemtable.Onceauthenticated,theusercannotperformanyoperationagainstSQLServer,unlessheorshehasbeenassignedaroleoragivenprivilege.Rolesareusedtogroupusersintoasingleunittowhichpermissionscanbeapplied.Thus,ratherthangrantingindividualpermissionstoseveralusers,youcancreatearoleconsistingofallofthesepermission,andthenyouwouldassigntheusersthisrole.InDB2UDB,usersdonotexistwithinthedatabase,butarerathermanagedbytheoperatingsystem.Thus,DB2UDBauthenticationissomewhatsimilartoSQLServer'sWindowsauthentication;however,nodatabaselogininformationiskeptinanydatabasetable.AnyoperatingsystemusercanpotentiallyuseDB2UDB;however,unlesstheyhavebeengrantedagivenDB2UDBauthorityorprivilege,thereisnotmuchtheycando.GrantingandrevokingauthoritiesandprivilegescaneasilybehandledthroughtheControlCenterGUI.YoufirstmayhavetoaddauserorgrouptotheControlAlsoinDB2UDBtheterm"roles"isnotused;instead,DB2UDBusestheterm"authorities",whicharesimilartoSQLServer'sfixedserveranddatabaseroles.DB2UDBdoesnotsupportMSSQLServer'suser-defineddatabaseroles;howeveranoperatingsystemgroupcanbeassignedauthoritiesandprivilegestoimplementthis.TheauthoritiessupportedwithDB2UDBare:SYSADM,SYSCTRL,SYSMAINT,DBADMandLOAD.TheSYSADM,SYSCTRLandSYSMAINTauthoritiescannotbegrantedusingtheGRANTSQLstatement.Thesespecialauthoritiescanonlybesetfromthedatabasemanagerconfigurationfile.ADB2UDBuserwithSYSADMauthoritywouldbeequivalenttoaSQLServeruserwithsysadminrole.DB2UDBalsousestheterm"privilege"whichisequivalenttoSQLServer'spermissions.Therearedatabaseprivileges(connect,createtab,andsoon)anddatabaseobjectprivileges(schema,table,view,andsoon).Table3.MappingSQLServersecurityconceptstoDB2UDBSQLServerDB2UDBTwomodesofauthentication:WindowsauthenticationandMixedmodeauthenticationOnemodeofauthenticationhandledbytheoperatingsystem;it'sclosesttoSQLServer'sWindowsauthentication.RolesAuthorities(Allpredefined;therearenouser-definedauthorities.)PermissionsPrivileges7.SummaryThisarticleintroducesyoutoDB2UDBV8forLinux,WindowsandUNIXbyleveragingyourcurrentknowledgeofMicrosoftSQLServer2000.GiventhatSQLServerissupportedonlyintheWindowsplatform,thefocusofthearticlehasbeenkepttothisplatform;however,allofwhatyouhavelearnedhereaboutDB2UDB(lessafewdetails)isalsoapplicabletotheLinuxandUNIXplatform.Again,becausetheWindowsplatformisbeingused,wehaveexplainedmostoftheconceptsusingtheGUItoolsforbothproducts.However,allofwhathasbeenexplainedhasanequivalentcommand.中文利用MicrosoftSQLServer2000技能来学习DB2UDBV81.引言在当今的信息技术领域中,新信息在不断地向我们冲击-新的软件产品、新的版本和新的功能。使您能跟上这些不断发生的变化的方法之一就是利用您手中现有的知识。我将向您展示如何使用您目前的Microsoft®SQLServer2000的知识来迅速获得有关DB2UDBV8forLinux、UNIXandWindows的技能。在本文中,术语“SQLServer”指的是MicrosoftSQLServer2000,“DB2UDB”指的是DB2UDBV8forLinux、UNIXandWindows。本文的重点主要集中在Windows平台。第一个要注意的SQLServer和DB2UDB之间的重要区别是SQLServer仅在Windows平台(Intel体系结构)上受支持。而另一方面,DB2UDB可以在Linux、UNIX和Windows平台以及许多硬件体系结构中得到支持。针对所有这些平台的代码基本上是相同的,只带有极少数特定于平台的模块。此外,DB2UDB产品还可以扩展到iSeries®(AS/400®和z/OS®(大型机))的领域。iSeries和z/OS的DB2UDB成员的代码库与DB2UDBforLinux、UNIXandWindows的不同,因为这些产品利用了各自的硬件体系结构。但是,这些DB2系列的功能是非常相似的。在您熟悉了DB2UDBforLinux、UNIXandWindows以后,您可以大胆尝试学习有关其它平台上的DB2的更多知识。请参阅参考资料小节以获取有关如何能继续巩固您的技能的更多文章。2.系统结构概述下图1展示了基本的SQLServer结构。图2展示了DB2UDB的结构,请把两者做一下比较。我将在整篇文章中引用这两幅图。图1.MicrosoftSQLServer2000结构图2.Linux、UNIX和Windows上的DB2UDBV8系统结构

3.实例和服务器尽管在SQLServer术语中不经常使用“实例”这个术语,但是实例的概念在SQLServer和DB2UDB中是相似的。用户通常只把它称为“服务器”。对于这两个产品而言,实例提供一个独立的环境,数据库对象在其中创建,并且应用程序在这些对象上运行。由于实例遵循一种“不共享”的体系结构,因此一个实例的对象通常不与其它实例的对象进行交互。图1和图2将PROD实例和DEV实例表示为两个概念上彼此独立的框。虽然实例的概念在这两个产品中是相同的,但它的实现却是截然不同的。在SQLServer中,您可以有一个“缺省”实例(仅有一个)和一些命名实例。缺省实例在第一次安装SQLServer时创建,并由计算机名来标识。而命名实例在创建缺省实例之后创建,并必须通过computer_name\\instance_name的格式来进行标识。要在同一台机器上创建几个SQLServer命名实例,您必须对每个新的实例使用安装CD,并且对每个新的安装都要使用安装GUI。请注意,在这个过程中,为每个您创建的实例复制SQLServer代码,但使用的路径不同。只有某些文件是实例之间共享的。要删除一个实例,您必须使用安装GUI来卸载该实例。在DB2UDB中,当将产品安装在Windows平台后,将缺省地创建“DB2”实例。在Linux和UNIX中,缺省实例名为“db2instl”。要在同一台机器上创建另一个实例,您只须执行db2icrt<

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论