ACCP7.0优化myschool数据库设计

写范文发表于:2023-06-28 17:36:33

ACCP课程体系通过结合先进的多模式教学法,使学习者在掌握理论知识与工具的同时,具备良好的自我学习能力和个人素质,成为符合21世纪企业要求的IT人才。下面是关于ACCP7.0优化myschool数据库设计,欢迎大家参考!

上机1

ACCP7.0优化myschool数据库设计

useMySchool

go

begintransaction

declare@errornumint

set@errornum=0

insertintoResultvalues('23219',1,90,'2013-09-12')

set@errornum+=@@ERROR

insertintoResultvalues('23219',1,90,'2013-09-13')

set@errornum+=@@ERROR

insertintoResultvalues('23219',1,90,'2014-09-12')

set@errornum+=@@ERROR

insertintoResultvalues('23219',1,90,'2013-09-11')

set@errornum+=@@ERROR

insertintoResultvalues('23219',1,90,'2003-09-12')

set@errornum+=@@ERROR

if@errornum<>0

begin

print'*作失败,回滚事务'

rollbacktransaction

end

else

begin

print'*作成功,保存事务'

mittransaction

end

--上机2

go

begintransaction

declare@errornumint

set@errornum=0

select*intohistoryresultfromResult

whereStudentNoin(selectStudentNofromStudent

whereGradeId=(selectGradeIdfromGradewhereGradeName='Y2'))

set@errornum+=@@ERROR

deletefromResult

whereStudentNoin(selectStudentNofromStudent

whereGradeId=(selectGradeIdfromGradewhereGradeName='Y2'))

set@errornum+=@@ERROR

select*intohistorystudentfromStudent

whereGradeId=(selectGradeIdfromGradewhereGradeName='Y2')

set@errornum+=@@ERROR

deletefromStudent

whereGradeId=(selectGradeIdfromGradewhereGradeName='Y2')

set@errornum+=@@ERROR

if@errornum<>0

begin

print'*作失败,回滚事务'

rollbacktransaction

end

else

begin

print'*作成功,保存事务'

mittransaction

end

--上机3

go

CREATEVIEWvw_student_result_info

AS

SELECT姓名=StudentName,学号=Student.StudentNo,

联系电话=Phone,学期=GradeName,成绩=Total

FROMStudent

LEFTOUTERJOIN(

SELECTr.StudentNo,GradeName,SUM(StudentResult)Total

FROMResultr

INNERJOIN(

SELECTStudentNo,SubjectId,MAX(ExamDate)ExamDate

FROMResult

GROUPBYStudentNo,Subjectid)tmp

ONr.ExamDate=tmp.ExamDate

ANDr.Subjectid=tmp.SubjectidANDr.StudentNo=tmp.StudentNo

INNERJOINSubjectsubONsub.Subjectid=r.Subjectid

INNERJOINGradegONg.GradeId=sub.GradeId

GROUPByr.StudentNo,GradeName)TmpResult2

ONStudent.StudentNo=TmpResult2.StudentNo

GROUPBYStudentName,Student.StudentNo,Phone,GradeName,Total

GO

SELECT*FROMvw_student_result_info

--上机4

go

createnonclusteredindexindex_result

onresult(studentresult)

selectstudentname,Subjectname,ExamDate,StudentResultfromResult

with(index=index_result)

innerjoinStudentonStudent.StudentNo=Result.StudentNo

innerjoinSubjectonSubject.SubjectId=Result.SubjectId

whereStudentResultbetween80and90

 

第2篇:MySQL数据库设计的八种优化方法

MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。下面是百分网小编为大家搜索整理的关于MySQL数据库设计的八种优化方法,欢迎参考学习,希望对大家有所帮助!想了解更多相关信息请持续关注我们应届毕业生考试网!

1、选取最适用的字段属*

MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的*能,我们可以将表中字段的宽度设得尽可能小。例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使用VARCHAR这种类型也是多余的,因为CHAR(6)就可以很好的完成任务了。同样的,如果可以的话,我们应该使用MEDIUMINT而不是BIGIN来定义整型字段。

另外一个提高效率的方法是在可能的情况下,应该尽量把字段设置为NOTNULL,这样在将来执行查询的时候,数据库不用去比较NULL值。

对于某些文本字段,例如“省份”或者“*别”,我们可以将它们定义为ENUM类型。因为在MySQL中,ENUM类型被当作数值型数据来处理,而数值型数据被处理起来的速度要比文本类型快得多。这样,我们又可以提高数据库的*能。

2、使用连接(JOIN)来代替子查询(Sub-Queries)

MySQL从4.1开始支持SQL的子查询。这个技术可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。例如,我们要将客户基本信息表中没有任何订单的客户删除掉,就可以利用子查询先从销售信息表中将所有发出订单的客户ID取出来,然后将结果传递给主查询,如下所示:

DELETEFROMcustomerinfo

WHERECustomerIDNOTin(SELECTCustomerIDFROMsalesinfo)

使用子查询可以一次*的完成很多逻辑上需要多个步骤才能完成的SQL*作,同时也可以避免事务或者表锁死,并且写起来也很容易。但是,有些情况下,子查询可以被更有效率的连接(JOIN)..替代。例如,假设我们要将所有没有订单记录的用户取出来,可以用下面这个查询完成:

SELECT*FROMcustomerinfo

WHERECustomerIDNOTin(SELECTCustomerIDFROMsalesinfo)

如果使用连接(JOIN)..来完成这个查询工作,速度将会快很多。尤其是当salesinfo表中对CustomerID建有索引的话,*能将会更好,查询如下:

SELECT*FROMcustomerinfo

LEFTJOINsalesinfoONcustomerinfo.CustomerID=salesinfo.

CustomerID

WHEREsalesinfo.CustomerIDISNULL

连接(JOIN)..之所以更有效率一些,是因为MySQL不需要在内存中创建临时表来完成这个逻辑上的需要两个步骤的查询工作。

3、使用联合(UNION)来代替手动创建的临时表

MySQL从4.0的版本开始支持UNION查询,它可以把需要使用临时表的两条或更多的SELECT查询合并的一个查询中。在客户端的查询会话结束的时候,临时表会被自动删除,从而保证数据库整齐、高效。使用UNION来创建查询的时候,我们只需要用UNION作为关键字把多个SELECT语句连接起来就可以了,要注意的是所有SELECT语句中的字段数目要想同。下面的例子就演示了一个使用UNION的查询。

SELECTName,PhoneFROMclient

UNION

SELECTName,BirthDateFROMauthor

UNION

SELECTName,SupplierFROMproduct

4、事务

尽管我们可以使用子查询(Sub-Queries)、连接(JOIN)和联合(UNION)来创建各种各样的查询,但不是所有的数据库*作都可以只用一条或少数几条SQL语句就可以完成的。更多的时候是需要用到一系列的语句来完成某种工作。但是在这种情况下,当这个语句块中的某一条语句运行出错的时候,整个语句块的*作就会变得不确定起来。设想一下,要把某个数据同时*两个相关联的表中,可能会出现这样的情况:第一个表中成功更新后,数据库突然出现意外状况,造成第二个表中的*作没有完成,这样,就会造成数据的不完整,甚至会破坏数据库中的数据。要避免这种情况,就应该使用事务,它的作用是:要么语句块中每条语句都*作成功,要么都失败。换句话说,就是可以保持数据库中数据的一致*和完整*。事物以BEGIN关键字开始,COMMIT关键字结束。在这之间的一条SQL*作失败,那么,ROLLBACK命令就可以把数据库恢复到BEGIN开始之前的状态。

BEGIN;

INSERTINTOsalesinfoSETCustomerID=14;

UPDATEinventorySETQuantity=11

WHEREitem=’book’;

COMMIT;

事务的另一个重要作用是当多个用户同时使用相同的数据源时,它可以利用锁定数据库的方法来为用户提供一种安全的访问方式,这样可以保证用户的*作不被其它的用户所干扰。

 

第3篇:用云计算数据库进行的数据库设计论文

摘要:云计算数据库涉及机房、服务器、工程师、工作人员等多个因素,需要实现垮地区、跨部门之间的高效,协同工作;云计算数据库作为建立在互联网之上的新一代基础设施,近年来在国内外引起了注意。通过云计算数据库技术整合数据库信息的各种资源,研究云计算数据库系统联网的实现。

关键词:云计算数据库;云计算数据库系统;云计算数据库数据

编制概要设计说明书。系统要求:云计算数据库概要设计就是要确定云计算数据库软件系统所要完成任务的详细计划。确定完成计划,就耍落实主要技术指标。

(1)系统日标

主要是确定云计算数据库系统要达到的目的。系统软件要解决什么问题。确定目标,对于软件系统的开发是十分关键的。这是关系到软件系统质量高低,开发成功与否的重要问题。

(2)设计供选择的方案

把数据流图中的处理逻辑地进行组合,不同的组合可能就是不同的实现方案。分析各种方案,首先抛弃行不通的方案,然后提供各个合理方案的资料。通过云计算数据库设计来进行的数据库设计就是云计算数据库设计这些方案是:①数据流程图。

②数据词典。

③实现该系统的进度计划。

④通用*与适应*。

⑤保密*。

(3)推荐最佳实现方案

系统分析员应对比各个合理方案的利弊,选择一个最佳方案向用户推荐,并为所推荐方案制定详细的实现计划。用户和有关专家应认真审查分析员所提供的几种方案,如果确认某一个方案为最住方案,应提醒用户进步审核,从而选择和确认这最佳方案。

(4)软件结构设计

为了实现目标系统,要设计出这个系统的所有程序和数据文件。

有关系统设计的具体方法,有两种不同的论点,分别称为自顶向下的设计方法和白底向上的设计方法。

为进行结构设计,首先把复杂的功能进一步分解,分解为一系列比较简单的功能,此数据流图也要进一步细化。通常一个模块完成一个适当的子功能。分析员应把模块组织成层次结构,顶层模块调用它的卜一层模块,下一层模块再调用其下层模块,如此依次向下,最下层模块能完成某具体的功能。软件的结构可用层次图来描绘。层次图适合于描绘软件的层次结构,特别适合于自项向下设计时使用。

设计云计算数据库模块结构。设计模块结构是概要设计阶段中最主要和最重要的工作任务。其标志是绘制出具有良好结构的模块图。

顺序内聚。如果模块内某个成分的输出是另一成分的输入,则两个模块必须依次执行,称为顺序内聚,功能内聚:一个模块内所有的元素都是完成某一功能所必需的处理。由这些兀紊组成一个整体,从而完成一个特定的功能,则称为功能内聚,功能内聚是最高程度的内聚。

通过云计算数据库设计来进行的数据库设计就是云计算数据库设计(1)云计算数据库设计思想云计算数据库的设计遵循由人来完成的。是根据系统分析数据流图,导出系统的模块图。层层分解的基本思想。

云计算数据库通常要设计侧重于定义软件系统的宏观结构,即进行模块的划分,定义每个模块的功能、*能以及模块之间的接口关系。

(2)云计算数据库设计,标出它们的控制层。

云计算数据库云计算数据库设计的方法:先将系统划分为几个大模块,再对大模块进行分析,直至最终获得的每一个模块都是功能单一的模块为止。

通过云计算数据库设计来进行的数据库设计就是云计算数据库设计。

①首先划分最初的两层模块——第一次分解。云计算数据库,先导出顶层和二层模块。项层模块主要起系统主控作用.为主控模块。这是一个控制*的功能选择菜单。根据菜单选择,可随时调用第二层各个子模块。第二层各子模块执行完功能后,都将执行权返交给主控模块。第二层各个子模块,分别完成原始数据输入、处理、输出等工作。

②系统第二次模块分解。

在首次分解获得的模块图中,模块分解工作终止的标志是模块图中每一个模块均是聚合度高、功能单一的*的模块。所以,耍对第二次模块分解的某些底层模块进一步分解,分解成便于计算机处理的模块。这里对m11模块的进一步分解,此时m1l相应变成了控制模块。

③系统模块的进一步分解。

这里对m21模块的进一步分解,此时m2l相应变成了控制模块。

(3)模块图的补充和完善。

通过逐层分解,获得了系统的云计算数据库,形成了系统的总体结构。由于计算机的特殊*,这个结构还可能不够完善,有必要从以下方面加以补充,做好系统的维护工作。

①系统首先启用前的初始化工作。主要指新系统启用前对旧的数据进行必要的处理,从而为新的系统启动做好准备。

②代码的维护工作。系统在执行过程之中要涉及到某些编码,需要一个编码处理模块。此模块要完成代码的增加、删除、修改、查询、输入等功能。

③屏幕查询工作。查询是计算,迅速进行信息检索的功能。系统设置查询功能,对本系统和各种信息进行查询。

参考文献:

[1]李隽云计算与数据存储结合的难点分析南京:*云计算*,2010.12

[2]冯圣中智能数据中心的机遇与挑战南京:*云计算*,2010.12作者简介:郝琪(1980——),男,辽宁沈阳人,助理讲师,本科。研究方向:宽带网络、软件技术、云计算。