版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Q/GDWXXXXX—XXXX目 次目 次 II前 言 IV电力信息化系统关系数据库(开源部分)第1部分:SQL编码规范 11范围 12规范性引用文件 13术语和定义 13.1视图 13.2普通索引 13.3主键索引 13.4触发器 23.5存储过程 24符号、代号和缩略语 25排版规范 25.1缩进与对齐 25.2空格和换行 25.3空白的使用 35.4大小写风格 35.5语句排版 36注释规范 36.1注释量 36.2注释位置 46.3对象注释 46.4文件注释 46.5过程和函数注释 46.6变量及常量注释 46.7参数注释 56.8功能注释 56.9语句注释 57命名规范 57.1对象命名 57.2变量命名 57.3表属性命名 58语法规范 78.1简单函数或过程 78.2可读性要求 78.3编程语言中使用SQL 89脚本规范 89.1注释编写 89.2脚本管理 810性能优化 910.1使用索引 910.2类型转换 910.3UNION替代OR(适用于索引列) 1010.4TRUNCATE替代DELETE 1010.5WHERE替代HAVING 1010.6EXISTS替代IN 1010.7NOTEXISTS替代NOTIN 1110.8表连接替代EXISTS 1110.9WHERE子句避免在索引列上使用计算 1210.10EXISTS连接替代DISTINCT 1210.11避免在索引列上使用NOT 1210.12>=替代> 1310.13事务提交COMMIT 1311质量保证 1311.1运行日志 1311.2错误日志 1311.3工作日志 1311.4异常检查 1312一致性约束 1312.1一致性考查表 1413常见缩写字典 1514对象命名特例 17编 制 说 明 20目次 11编制背景 22编制主要原则 23主要工作过程 24标准结构和内容说明 25标准水平说明 36标准实施措施说明 3电力信息化系统关系数据库(开源部分)第1部分:SQL编码规范范围本标准规定了电力信息化系统SG-RDB-MS关系数据库(开源部分)的编码标准规范,从排版规范、注释规范、命名规范、语法规范、脚本规范、性能优化和质量保证等几个方面展开说明,详细约定了在编写SG-RDB-MS关系数据库SQL程序时应遵守的规则和习惯。本标准(或本部分或本指导性技术文件)适用于电力信息化系统SG-RDB-MS关系数据库(开源部分)SQL编码规范要求。规范性引用文件下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。《GB/T8567-1988计算机软件产品开发文件编制指南》《GB/T9385-1988计算机软件需求说明编制指南》《GB/T11457-1995软件工程术语》《国家电网公司“十二五”信息发展规划》《国家电网公司SG-ERP总体建设方案》《国家电网公司系统架构设计方法论》《国家电网公司应用软件架构设计规范》《国家电网公司应用集成技术规范》《国家电网公司软硬件目标架构设计规范》《国家电网公司应用安全设计规范》《关于印发国家电网公司2013年信息化建设实施意见的通知》《关于印发国家电网公司2011年信息化建设实施意见的通知》(国家电网信息〔2011〕218号)《关于印发国家电网公司2012年信息化建设实施意见的通知》(国家电网信通〔2012〕206号)《国家电网公司信息系统上下线管理办法》(国家电网信息〔2009〕1277号)《国家电网公司信息安全加固实施指南》术语和定义下列术语和定义适用于本文件。视图是一个虚拟表,其内容由查询定义,视图包含一系列带有名称的列和行数据,并不在数据库中以存储的数据值集形式存在。普通索引无唯一性限制的索引类型。主键索引唯一性限制的索引类型。触发器是数据库保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发。存储过程是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数来执行它。符号、代号和缩略语下列符号、代号和缩略语适用于本文件。SQLStructuredQueryLanguage结构化查询语言DDLDataDefinitionLanguage数据定义语言DMLDataManipulationLanguage数据操作语言DCLDataControlLanguage数据控制语言排版规范缩进与对齐块内缩进原则一个块下属的内容,从下一行开始,从这个块的标识首字符右移4个空格,从第5个列位置开始。块关键字对齐原则任何块的关键字,首字母在列上对齐。即:一个程序块内部,标识程序块的关键字开始语句(IF、FOR和BEGIN)、DO、中间语句(ELSIF、EXCEPTION、ELSE)和结束语句(ENDIF、ENDLOOP、END),在列位置对齐。SQL语句中的对齐方式用空格对齐。空格和换行空格SQL内算数运算符、逻辑运算符连接的两个元素之间必须用空格分隔。逗号之后必须接一个空格。关键字、保留字和左括号之间必须有一个空格。换行一行最长不能超过80字符。当超过时,以语意为单位,进行断行,且断行后的内容,缩进书写。【示例】:--创建汇总基础表Create_BaseDat--p_BaseSQLinvarchar(50)--SQL语句--p_sResultTBLinvarcha(50)--结果输出数据表--p_sInfoStrinvarchar(50)--提示信息返回值:<0,出错;=0,无记录;>0记录数FunctionCReate_BaseData(inp_BaseSQLvarchar(50),inp_sResultTBLvarchar(50),inp_sInfoStrvarchar(50)RETURNINT;此外,避免将SQL语句写到同一行,再短的语句也要在关键字和谓词处换行,例如,SELECT/FROM/WHERE/ORDERBY/GROUPBY等子句必须另起一行写。空白的使用相对独立的SQL程序块之间必须加空行,一般采用1行空行分隔。适当时候,可以存在2行空行,但注意不要超过2行(注释行不在此约定范围内)。大小写风格SQL语句中出现的系统保留字、内置函数名、SQL保留字、绑定变量等都应大写。语句排版IF语句IF语句是条件判断语句,只有一个条件的时候,可以不用圆括号。两个以上条件的时候,要求用圆括号(),使得逻辑处理明晰。IF/ELSIF/ELSE/ENDIF关键字,每个都独立占一行。且每行的开始列位置都相同。特别注意,结束语句ENDIF后面,有分号。编程语言中的SQL语句在JAVA、C#等编程语言中,使用SQL语句应遵循以下排版规则:缩进SQL字符串,不可有缩进,即每一行字符串不可以空格开头。执行SELECT/UPDATE/DELETEFROM/INSERTINTO/VALUES/SET/FROM/WHERE/GROUPBY/ORDERBY/JOIN等关键字单独占一行;每个查询字段、条件字段、分组字段、排序字段单独占一行;SQL文中间不允许出现空行;语句中单引号必须跟所属的SQL子句处在同一行,连接符("+")必须在行首。空格算数运算符、逻辑运算符连接的两个元素之间必须用空格分隔;逗号之后必须接一个空格;关键字、保留字和左括号之间必须有一个空格。注释规范注释量程序有效注释量须在20%以上,注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。还要注意缩进和对齐,以利阅读。边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要删除,注释的内容要清楚、明了,含义准确,防止注释二义性。避免在注释中使用缩写,特别是非常用的缩写。注释位置注释应与其描述的代码相近,对代码的注释应放在其上方或右方(对单条语句的注释)相邻位置,不可放在下面。对象注释创建每一数据库对象时都要加上COMMENTON注释,以说明该对象的功能和用途;建表时,对某些数据列也要加上COMMENTON注释,以说明该列和/或列取值的含义。【示例】:comment='普通地区用户信息表,用于记录除成都外的其他地区的用户信息,按地区分区';comment'用户编码,主键';文件注释在每个SQL脚本文件的开头,要用块注释,进行文件功能说明、文件编写人、联系方式和文件创建时间说明等。多行注释,采用与JAVA或C语言相同的程序注释符号,即“/**/”。“/*”用于注释文字的开头,“*/”用于注释文字的结尾,可在程序中标识多行文字为注释。格式:/*注释内容*/。单行注释,使用注释符“--”。格式:--注释内容。过程和函数注释在每个过程或函数的开头,使用块注释,进行函数功能说明,入口出口参数和返回值说明。【示例】:得到集团用户外部编码--@authorluqiang--@version%I%,%G%--@since1.00--@inparamregionCode地市代码--@inparamamCode业务代码--@outparamgrpUserNo集团用户编码--@return返回0表示正确,否则出错!变量及常量注释对SQL代码中的局部变量,重要的,要进行注释。关于变量的注释,采用行尾注释。【示例】:DECLAREcurCURSORFORSELECTiFROMtest.t;--定义参考游标类型DECLAREf_AreaNameCHAR(16);--最大欠费用户指标所在地区描述对常量及变量注释时,应注释被保存值的含义,包括合法取值的范围。参数注释对函数或过程的每个参数进行说明。如果取值范围确定,也一并说明。取值有特定含义的变量(如boolean类型变量),给出每个值的含义。功能注释对较为复杂的SQL语句应注释,并说明算法和功能。应对不易理解的分支条件表达式加注释。对重要的计算应说明其功能。过长的函数实现,应将其语句按实现的功能分段加以概括性说明。语句注释SQL程序中,尽量对语句采用单行注释:“--”。这样,有利于程序调试时,通过块注释方式,实现大段代码注释。命名规范对象命名数据库对象命名范围:数据库对象,包括表、索引、存储过程、触发器、序列、视图、同义词、数据链路。命名特例参见“章节14对象命名特例”。命名长度和结构对象名不超过30个字符,不低于6个字符,建议在8-25个左右。由3-5部分构成,每部分为有一定含义的英文缩写或者数字。每部分建议为3-4个字符。英文缩写参见“章节13常见缩写字典”。此外,不允许出现某省某地市或某项目的简称,例如sc_CustInfo中的sc是不许可的。年月日等数字年月日数字符号,一般应在数据表的尾部。不允许将年月日及其它数字放在对象名的中间。例如,Cust200703Info不许可,CustInfo200703则许可。变量命名全局变量,以g_开头进行命名;包内公用变量,以f_开头命名;过程局部变量,以v_开头命名;参数变量,以p_开头命名;游标变量,以cur_开头命名。表属性命名表名表的命名遵循如下的格式:SubSystemName_DetailName以上格式中:SubSystemName是系统功能模块的简称;DetailName与数据库表意义相关联的英文单词、词组或其缩写;单词中间用下划线“_”分割;表名称不能用双引号包含;总长度必需符合数据库的规定。例如:档案管理模块的采集点信息AM_COLLECT_POINT。存在于生产环境的非正式表,如备份表,必须以原表名加前缀‘bakyymmdd_’,以便于识别和及时清理。因此,正式生产表中,最好不要出现BAK、BACK之类的字符串。表分区名表分区的命名遵循如下的格式:<Part>_DetailName以上格式中:Part是必需的,表示该对象为表分区号;DetailName是与表分区名意义相关联的英文单词、词组或其缩写;总长度必需符合数据库的规定。例如:AM_COLLECT_POINT的分区Part_2007100101表示该分区存储2007100101时段的数据。字段名字段的命名遵循如下的格式:<字段的含义>以上格式中:字段名称必须用字母开头,采用有特征含义的单词或缩写,不能用双引号包含。同一个字段名在一个数据库中只能代表一个意思。比如TELEPHONE在一个表中代表“电话号码”的意思,在另外一个表中就不能代表“手机号码”的意思。不同的表引用相同内容的字段应该采用同样的名称、字段类型定义。总长度必需符合数据库的规定。主键名主键的命名遵循如下的格式:PK_TableName以上格式中PK是必需的,表示该对象为附键;TableName是数据库的表的名称或简写;总长度必需符合数据库的规定。外键名外键的命名遵循如下的格式:FK_TableName1_TableName2_Field1_Field2_…以上格式中:FK是必需的,表示该对象为外键;TableName1是数据库的本表的名称或简写;TableName2是数据库的外键表的名称或简写;Field1是数据库表中第一个外键字段的名称或名称简写;Field2是数据库表中第二个外键字段的名称或名称简写;去掉每一个表名和字段名自己的下划线“_”;总长度必需符合数据库的规定。用户与角色数据库用户采用一个代表系统名称含义的英文单词或者拼音首字母进行命名,无前缀。创建数据库用户时一般不要授予DBA权限。用户命名遵循如下的格式:系统名称+_+USER+_+名词(或缩写)或名词短语(或缩写)语法规范简单函数或过程单一功能函数或过程(以含注释在内,不超过100行就能解决问题为标准),约定采用独立过程或函数来实现。【示例】:--是否是一个有效的数值--参数:--p_NumStrinvarchar(50)--字符型数字串--返回值:--如果是数值,返回true;否则返回falseCREATEFunctionRasInfo.IsNumber(inp_NumStrvarchar(50))returnbooleanASDECLARE
v_Numint; BEGINIFISNULL(p_NumStr)||LENGTH((p_NumStr)<1
THENreturnFalse;ENDIF;SETv_Num=To_Number(p_NumStr);ReturnTrue;END;可读性要求SELECT语句使用SELECT语句时,不允许使用SELECT*,要使用明确的列名。目的是防止数据字段增加后的影响。INSERT语句使用INSERT时,必须指定插入的字段名,主要是考虑以后表结构的变动。表别名的使用多表关联查询,必须使用表的别名。函数及表达式应将SQL语句中的数据库函数、计算表达式等放置在等号右边。不要在等号的左边。比较符号的使用“!=”和“<>”是等价的,都代表不等于的意义。为了统一,不等于一律使用“<>”表示。编程语言中使用SQL在JAVA、C#等编程语言中,使用SQL语句应遵循以下规则:连接语法在同一条语句中只选用一种连接语法,不能混合使用。字符串拼接对于可控的语法元素(一般为不来源于外部用户输入的元素),可以使用字符串拼接技术来构造SQL语句。其中,短小的语句尽量使用连接符("+")进行拼接。长度较大的语句在JAVA中使用StringBuffer的append方法拼接,在C#中使用StringBuilder的Append方法拼接。对于不可控的语法元素,应尽量避免使用SQL的动态拼接,否则,容易遭受SQL注入攻击。可在编程语言中使用参数化SQL语法或直接使用存储过程进行数据的查询和存取。选用ORM原则对于纯粹的业务比较简单的OLTP型,并且要求不是很高的应用,建议使用ORM工具自动映射;对于拥有专门的数据库开发人员,并且对数据密集型要求性较高的应用,建议直接使用SQL语句或存储过程;管理SQL代码对于编程语言中出现的SQL操作语句,采用集中式统一管理,应尽量避免出现SQL代码分散在各处的情况出现。例如,可以将SQL代码抽象到文本文件如XML中统一存储。脚本规范注释编写每个数据库程序对象(过程函数、触发器等)、变量及常量必须使用注释,数据库程序中的说明性注释必须与模板中的注释格式一致。注释形式一律使用:/**/。脚本管理由于项目设计资源众多,必须要对其重要文档、源代码、发布程序包等统一管理,规范文件存放位置,定期对文件备份,保证项目开发的顺利进行。统一创建目录存放各开发人员所创建的对象包括函数、触发器、存储过程、数据包等,具体的存储形式说明如下:函数脚本函数脚本扩展名为“fnc”,其命名遵循如下的格式:FUNC_SubSystemName_DetailName以上格式中:FUNC是必需的,表示该对象为函数;SubSystemNameName是数据库的功能模块或其简称;DetailName与函数意义相关联的英文单词、词组或其缩写;总长度必需符合数据库的规定。触发器脚本触发器脚本扩展名为“trg”,其命名遵循如下的格式:TRIG_TableName_DetailName以上格式中:TRIG是必需的,表示该对象为触发器;TableName是数据库中表的名称或其简称;DetailName与触发器意义相关联的英文单词、词组或其缩写;总长度必需符合数据库的规定。存储过程脚本存储过程脚本扩展名为“prc”,其命名遵循如下的格式:PROG_SubSystemName_DetailName以上格式中:PROG是必需的,表示该对象为存储过程;SubSystemName是数据库中表的名称或其简称;DetailName与触发器意义相关联的英文单词、词组或其缩写;总长度必需符合数据库的规定。增删改脚本增删改脚本扩展名为“sql”,其命名遵循如下的格式:业务子项_功能说明_年月日(yyyymmdd)_序号(两位数字01、02等),如:AM_COLLPONIT_20090401_01.sql。性能优化使用索引对大表的操作,业务规范后,必须建立相应的有效索引,以提高查询效率。此外,在WHERE子句中,不应对索引列使用函数或进行运算,否则该索引将失效;如果非要使用,那么就需要建立相应的函数索引。类型转换不要使用数据库的类型自动转换功能(如数字自动转换为字符串),应使用显式的类型转换。自动转换时往往导致该字段的索引无法使用。UNION替代OR(适用于索引列)通常情况下,用UNION替换WHERE子句中的OR将会起到较好的效果。对索引列使用OR将造成全表扫描。注意,以上规则只针对多个索引列有效。如果有column没有被索引,查询效率可能会因为你没有选择OR而降低。在下面的例子中,LOC_ID和REGION上都建有索引。【示例】:高效:SELECTLOC_ID,LOC_DESC,REGIONFROMLOCATIONWHERELOC_ID=10UNIONSELECTLOC_ID,LOC_DESC,REGIONFROMLOCATIONWHEREREGION=’MELBOURNE’低效:SELECTLOC_ID,LOC_DESC,REGIONFROMLOCATIONWHERELOC_ID=10ORREGION=‘MELBOURNE’注意:WHEREKEY1=10(返回最少记录)ORKEY2=20(返回最多记录)内部将以上转换为WHEREKEY1=10AND((NOTKEY1=10)ANDKEY2=20)TRUNCATE替代DELETE当删除表中的所有记录时,如果不需要恢复,建议使用TRUNCATE而不是DELETEALL,既不占用回滚段,也能加快速度。WHERE替代HAVINGHAVING只会在检索出所有记录之后才对结果集进行过滤。这个处理需要排序、总计等操作。如果能通过WHERE子句限制记录的数目,那就能减少这方面的开销。EXISTS替代IN在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接。在这种情况下,使用EXISTS(或NOTEXISTS)通常将提高查询的效率。【示例】:高效:SELECT*FROMEMP(基础表)WHEREEMPNO>0ANDEXISTS(SELECT‘X’FROMDEPTWHEREDEPT.DEPTNO=EMP.DEPTNOANDLOC=‘MELB’)低效:SELECT*FROMEMP(基础表)WHEREEMPNO>0ANDDEPTNOIN(SELECTDEPTNOFROMDEPTWHERELOC=‘MELB')NOTEXISTS替代NOTIN无论在哪种情况下,NOTIN都是最低效的(因为它对子查询中的表执行了一个全表遍历)。可以把它改写成外连接(OuterJoins)或NOTEXISTS.【示例】:SELECT…FROMEMPWHEREDEPT_NONOTIN(SELECTDEPT_NOFROMDEPTWHEREDEPT_CAT='A');高效SELECT….FROMEMPEWHERENOTEXISTS(SELECT‘X’FROMDEPTDWHERED.DEPT_NO=E.DEPT_NOANDDEPT_CAT=‘A’);表连接替代EXISTS通常来说,采用表连接的方式比EXISTS更有效率。【示例】:SELECTENAMEFROMEMPEWHEREEXISTS(SELECT‘X’FROMDEPTWHEREDEPT_NO=E.DEPT_NOANDDEPT_CAT=‘A’);更高效:SELECTENAMEFROMDEPTD,EMPEWHEREE.DEPT_NO=D.DEPT_NOANDDEPT_CAT=‘A’;WHERE子句避免在索引列上使用计算WHERE子句中,如果索引列参与计算,优化器将不使用索引而使用全表扫描。【示例】:低效:SELECT…FROMDEPTWHERESAL*12>25000;高效:SELECT…FROMDEPTWHERESAL>25000/12;EXISTS连接替代DISTINCT当提交一个包含一对多表信息(比如部门表和雇员表)的查询时,避免在SELECT子句中使用DISTINCT。一般可以考虑用EXIST替换。【示例】:低效:SELECTDISTINCTDEPT_NO,DEPT_NAMEFROMDEPTD,EMPEWHERED.DEPT_NO=E.DEPT_NO;高效:SELECTDEPT_NO,DEPT_NAMEFROMDEPTDWHEREEXISTS(SELECT‘X’FROMEMPEWHEREE.DEPT_NO=D.DEPT_NO);避免在索引列上使用NOT避免在索引列上使用NOT,NOT会产生和在索引列上使用函数相同的影响。当遇到NOT,会停止使用索引转而执行全表扫描。【示例】:低效(不使用索引):SELECT…FROMDEPTWHERENOTDEPT_CODE=0;高效(使用了索引):SELECT…FROMDEPTWHEREDEPT_CODE>0;需要注意的是,在某些时候,优化器会自动将NOT转化成相对应的关系操作符。NOT>to<=NOT>=to<NOT<to>=NOT<=to>>=替代>如果DEPTNO上有一个索引。【示例】:低效:SELECT*FROMEMPWHEREDEPTNO>3;高效(使用了索引):SELECT*FROMEMPWHEREDEPTNO>=4;两者的区别在于,前者DBMS将直接跳到第一个DEPT等于4的记录而后者将首先定位到DEPTNO=3的记录并且向前扫描到第一个DEPT大于3的记录。事务提交COMMIT在程序中尽量避免特大事务,多使用COMMIT,这样程序的性能得到提高,也会因为COMMIT所释放的资源而减少。当然要注意,COMMIT次数也不能太频繁,频繁同样会增加数据库负担。质量保证运行日志是指SQL运行点的输出日志。要求程序一定要使用日志语句,在运行过程输出。日志的输出,可以是数据表,或者通过Java函数,或者UT_FILE包,书写到操作系统文件。运行日志必须设置调试开关,在生产环境有效屏蔽其在开发测试环境输出的日志。错误日志系统容错处理的日志,一定要与运行日志分开。使用数据表时,错误日志的数据表与运行日志表不同;使用操作系统文件时,错误日志文件名与运行日志文件名不同。工作日志系统关键性的SQL执行情况,应包括语句、记录数等的日志,便于程序上线后维护。异常检查SQL程序,一定使用BEGIN/EXCEPTION/END代码块,进行错误捕获,并输出错误日志。一致性约束一致性考查表规范点标记规范点说明约束等级(强制:M,推荐:O)5排版规范M5.1缩进和对齐M5.2空格和换行M5.3空白的使用M5.4大小写风格M5.5语句排版M5.5.1IF语句M5.5.2编程语言中SQL语句M6注释规范M6.1注释量M6.2注释位置M6.3对象注释M6.4文件注释M6.5过程和函数注释M6.6变量及常量注释M6.7参数注释M6.8功能注释M6.9语句注释M7命名规范M7.1对象命名M7.2变量命名M7.3表属性命名M7.3.1表名M7.3.2表分区名M7.3.3字段名M7.3.4主键名M7.3.5外键名M7.4用户与角色M8语法规范M8.1简单函数或过程M8.2可读性要求M8.2.1SELECT语句M8.2.2INSERT语句M8.2.3表别名的使用M8.2.4函数及表达式M8.2.5比较符号的使用M8.3编程语言中使用SQLM8.3.1连接语法M8.3.2字符串拼接M8.3.3选用ORM原则O8.3.4管理SQL代码M9脚本规范M9.1注释编写M9.2脚本管理M10性能优化MO10.1使用索引M10.2类型转换M10.3UNION替代OR(适用于索引列)O10.4TRUNCATE替代DELETEO10.5WHERE替代HAVINGO10.6EXISTS替代INO10.7NOTEXISTS替代NOTINO10.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理伦理与法律问题解析
- 实际问题与反比例函数(教学设计)
- 护理风险:防范胜于补救
- 环境保护与可持续发展技术手册
- 商业地产项目招商运营策略研究报告
- 酒店业宴会厅布置方案设计手册
- 市场调查分析与定位辅助工具
- 质量保障承诺书范例(4篇)
- 人力资源绩效评估与培训工具
- 确认收到投标书回复函(6篇)
- 陕22N1 供暖工程标准图集
- 2024年江苏农林职业技术学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析
- 电子商务数据分析高职全套教学课件
- 绿地认养协议书
- 英汉互译单词练习打印纸
- DB52-T 1685-2022 电动汽车充电站(桩)防雷技术规范
- 大学转学申请书大学转学申请表电子版(十三篇)
- 向日葵病虫害虫害图片
- 《安全运动促健康》课件
- 日管控、周排查、月调度记录表
- GB/T 5752-2013输送带标志
评论
0/150
提交评论