《《数据库设计实验》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《数据库设计实验》PPT课件.ppt(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、交易员的操作n n根据根据 顾客号顾客号、供应商号供应商号和和商品号商品号 完成交易:完成交易:n n功能名称:交易员操作n n参数:providerID,customerId,partID n n功能:根据协议书完成交易将 交易员的操作封装为存储过程n n根据根据 顾客号顾客号、供应商号供应商号和和商品号商品号 完成交易:完成交易:n n存储过程名称:PASS_AGREEMENTn n参数:providerID,customerId,partID n n功能:根据协议书完成交易交易员操作功能n n完完成成从从AgreementtAgreementt的的一一个个元元组组到到BusinessBu
2、siness的的一一个个元元组组的的 转转 化化 工工 作作。这这 里里 考考 虑虑 到到 了了 删删 除除 空空 的的 SuppiySuppiy和和OfferTOBUYOfferTOBUY项项,更更加加重重要要的的是是,这这里里考考虑虑到到了了非非法法的的AgreementAgreement的的情情况况,在在一一段段时时间间后后,由由于于供供应应商商或或者者顾顾客客修修改改数数据据,AgreementAgreement可可能能就就非非法法,这这时时就就需需要要把把这这个个 事事 务务 废废 除除,所所 以以,这这 里里 检检 查查 了了 SupplySupply表表 和和OfferToBuy
3、OfferToBuy表中的数据,确保数据仍然正确。表中的数据,确保数据仍然正确。n n 另另外外交交易易员员,或或者者说说交交易易所所必必须须承承担担的的一一项项任任务务是是更更新新商商品品列列表表。这这里里在在考考虑虑顾顾客客和和供供应应商商的的时时候候并并没没有有给给予予他他们们修修改改商商品品列列表表的的权权利利,所所以以他他们们必必须须根根据数据库中已有的项更新自己的供求信息。据数据库中已有的项更新自己的供求信息。存储过程设计n n 数据库系统中很重要的一个概念就数据库系统中很重要的一个概念就是存储过程,合理的使用存储过程,可以有效的提高程序的性能;是存储过程,合理的使用存储过程,可以
4、有效的提高程序的性能;并且将商业逻辑封装在数据库系统中的存储过程中,可以大大提并且将商业逻辑封装在数据库系统中的存储过程中,可以大大提高整个软件系统的可维护性,当你的商业逻辑发生了改变的时候,高整个软件系统的可维护性,当你的商业逻辑发生了改变的时候,不再需要修改并编译客户端应用程序以及重新分发他们到为数众不再需要修改并编译客户端应用程序以及重新分发他们到为数众多的用户手中,你只需要修改位于服务器端的实现相应商业逻辑多的用户手中,你只需要修改位于服务器端的实现相应商业逻辑的存储过程即可。的存储过程即可。n n在数据库的开发过程中,经常会遇到复杂的业务逻辑和对数据库在数据库的开发过程中,经常会遇到
5、复杂的业务逻辑和对数据库的操作,这个时候就会用存储过程来封装数据库操作。如果项目的操作,这个时候就会用存储过程来封装数据库操作。如果项目的存储过程较多,书写又没有一定的规范,将会影响以后的系统的存储过程较多,书写又没有一定的规范,将会影响以后的系统维护困难和大维护困难和大SPSP逻辑的难以理解。另外如果数据库的数据量大或逻辑的难以理解。另外如果数据库的数据量大或者项目对者项目对SPSP的性能要求很高,就会遇到优化的问题,否则速度有的性能要求很高,就会遇到优化的问题,否则速度有可能很慢。一个经过优化过的可能很慢。一个经过优化过的SPSP要比一个性能差的要比一个性能差的SPSP的效率甚至的效率甚至
6、高几百倍。高几百倍。一、什么是存储过程存储过程是利用存储过程是利用SQL ServerSQL Server所提供的所提供的Tranact-SQLTranact-SQL语言所编写的程序。语言所编写的程序。Tranact-SQLTranact-SQL语言是语言是SQL ServerSQL Server提提供专为设计数据库应用程序的语言,它是应用程序和供专为设计数据库应用程序的语言,它是应用程序和SQL ServerSQL Server数据库间的主要程序式设计界面。它好比数据库间的主要程序式设计界面。它好比OracleOracle数据库系统中的数据库系统中的Pro-SQLPro-SQL和和Infor
7、mixInformix的数据库系的数据库系统能够中的统能够中的Informix-4GLInformix-4GL语言一样。这类语言主要提供语言一样。这类语言主要提供以下功能,让用户可以设计出符合引用需求的程序:以下功能,让用户可以设计出符合引用需求的程序:1)1)、变量说明、变量说明2)2)、ANSIANSI兼容的兼容的SQLSQL命令命令(如如Select,Update.)Select,Update.)3)3)、一般流程控制命令一般流程控制命令(ifelseifelse、while.)while.)4)4)、内部函数内部函数二、存储过程的书写格CREATE PROCEDURE CREATE P
8、ROCEDURE 拥有者拥有者.存储过程名存储过程名;程序编号程序编号(参数参数#1,#1,参数参数#1024)#1024)WITHWITHRECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTIONRECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION FOR REPLICATIONFOR REPLICATIONAS AS 程序行程序行其中存储过程名不能超过其中存储过程名不能超过128128个字。每个存储过程中最多设定个字。每个存储过程中最多设定10241024个参数个参数(以上版本以上版本),),参数的使用方法如下参数的使用方法如下:参数名
9、参数名 数据类型数据类型 VARYING=VARYING=内定值内定值 OUTPUTOUTPUT每个参数名前要有一个每个参数名前要有一个“”“”符号符号,每一个存储过程的参数仅为该程序内部使用每一个存储过程的参数仅为该程序内部使用,参参数的类型除了数的类型除了IMAGEIMAGE外,其他外,其他SQL ServerSQL Server所支持的数据类型都可使用。所支持的数据类型都可使用。=内定值内定值 相当于我们在建立数据库时设定一个字段的默认值,这里是为这个参数相当于我们在建立数据库时设定一个字段的默认值,这里是为这个参数设定默认值。设定默认值。OUTPUTOUTPUT是用来指定该参数是既有输
10、入又有输出值的,也就是在调是用来指定该参数是既有输入又有输出值的,也就是在调用了这个存储过程时,如果所指定的参数值是我们需要输入的参数,同时也需要用了这个存储过程时,如果所指定的参数值是我们需要输入的参数,同时也需要在结果中输出的,则该项必须为在结果中输出的,则该项必须为OUTPUTOUTPUT,而如果只是做输出参数用,可以用而如果只是做输出参数用,可以用CURSORCURSOR,同时在使用该参数时,必须指定同时在使用该参数时,必须指定VARYINGVARYING和和OUTPUTOUTPUT这两个语句这两个语句例子例子:CREATE PROCEDURE order_tot_amt o_id i
11、nt,p_tot int output CREATE PROCEDURE order_tot_amt o_id int,p_tot int output ASASSELECT p_tot=sum(Unitprice*Quantity)SELECT p_tot=sum(Unitprice*Quantity)FROM orderdetailsFROM orderdetailsWHERE ordered=o_idWHERE ordered=o_id例子说明例子说明:该例子是建立一个简单的存储过程该例子是建立一个简单的存储过程order_tot_amt,order_tot_amt,这个存储过程根这个存
12、储过程根据用户输入的定单据用户输入的定单IDID号码号码(o_id),o_id),由定单明细表由定单明细表(orderdetails)orderdetails)中计算该定单销售总额中计算该定单销售总额 单价单价(Unitprice)*Unitprice)*数量数量(Quantity),Quantity),这一这一金额通过金额通过p_totp_tot这一参数输出给调用这一存储过程的程序这一参数输出给调用这一存储过程的程序交易操作的数据完整性 n n与与上上述述其其他他操操作作相相比比,对对交交易易的的操操作作对对数数据据完完整整性性要要求比较高,其中需要注意的地方是;求比较高,其中需要注意的地方
13、是;n n 要要要要防防防防止止止止同同同同一一一一用用用用户户户户(供供供供应应应应商商商商,顾顾顾顾客客客客)的的的的数数数数据据据据因因因因两两两两个个个个交交交交易易易易而同时修改;而同时修改;而同时修改;而同时修改;n n 需需需需 要要要要 同同同同 时时时时 对对对对 供供供供 应应应应 数数数数 据据据据 库库库库(Supply)Supply)、需需需需 求求求求 数数数数 据据据据 库库库库(OfferToBuy)OfferToBuy)、交易数据库交易数据库交易数据库交易数据库(Business)Business)n n和和和和协协协协议议议议数数数数据据据据库库库库(Agr
14、eement)Agreement)作作作作出出出出修修修修改改改改,而而而而且且且且需需需需要要要要保保保保持持持持这这这这些修改的原子性;些修改的原子性;些修改的原子性;些修改的原子性;n n 很显然,这些要求正是对于一个事务很显然,这些要求正是对于一个事务(transaction)transaction)的要求,所以可以用一个事务来完成签发一个协议的的要求,所以可以用一个事务来完成签发一个协议的操作。操作。事务简介事务是作为单个逻辑工作单元执行的一系列操作。事务是作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元必须有四个属性,称为一个逻辑工作单元必须有四个属性,称为ACIDACID(
15、原子性、一致性、隔离性和持久性)(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务属性,只有这样才能成为一个事务 事务的属性(ACID)n n原子性原子性(Atomicity)(Atomicity)事务必须是原子工作单元;对于其数据修改,要么全事务必须是原子工作单元;对于其数据修改,要么全事务必须是原子工作单元;对于其数据修改,要么全事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。都执行,要么全都不执行。都执行,要么全都不执行。都执行,要么全都不执行。n n一致性一致性(Consistency)(Consistency)事务在完成时,必须使所有的数据都保持一
16、致状态事务在完成时,必须使所有的数据都保持一致状态事务在完成时,必须使所有的数据都保持一致状态事务在完成时,必须使所有的数据都保持一致状态n n隔离性隔离性(Isolation)(Isolation)由并发事务所作的修改必须与任何其它并发事务所作由并发事务所作的修改必须与任何其它并发事务所作由并发事务所作的修改必须与任何其它并发事务所作由并发事务所作的修改必须与任何其它并发事务所作的修改隔离的修改隔离的修改隔离的修改隔离n n持久性持久性(Durability)(Durability)事务完成之后,它对于系统的影响是永久性的。事务完成之后,它对于系统的影响是永久性的。事务完成之后,它对于系统的
17、影响是永久性的。事务完成之后,它对于系统的影响是永久性的。执行事务的3种模式1.1.显式事务显式事务:可以显式地在其中定义事务的启动和结束。可以显式地在其中定义事务的启动和结束。BEGIN TRANSACTIONBEGIN TRANSACTION标记一个显式本地事务起始点。标记一个显式本地事务起始点。BEGIN TRANSACTIONBEGIN TRANSACTION将将 TRANCOUNT TRANCOUNT 加加 1 1语法语法BEGIN TRAN SACTION BEGIN TRAN SACTION transaction_nametransaction_name|tran_name_v
18、ariabletran_name_variable WITH MARK WITH MARK descriptiondescription 参数参数 transaction_nametransaction_name是给事务分配的名称。不允许标识符多于是给事务分配的名称。不允许标识符多于 32 32 个字符。个字符。tran_name_variabletran_name_variable用用 charchar、varcharvarchar、nchar nchar 或或 nvarchar nvarchar 数据类型声明有效事务的变量的名数据类型声明有效事务的变量的名称称WITH MARK WITH
19、MARK descriptiondescription指定在日志中标记事务。指定在日志中标记事务。Description Description 是描述该标记的字符串。是描述该标记的字符串。如果使用了如果使用了 WITH MARKWITH MARK,则必须指定事务名。,则必须指定事务名。WITH MARK WITH MARK 允许将事务日志还允许将事务日志还原到命名标记。原到命名标记。显式事务语句功能功能语句语句开始事务开始事务BEGIN TRANSACTIONBEGIN TRANSACTION提交事务提交事务COMMIT TRANSACTIONCOMMIT TRANSACTION或或COMMITWORKCOMMITWORK回滚事务回滚事务ROLLBACK TRANSACTIONROLLBACK TRANSACTION或或ROLLBACKWORKROLLBACKWORK