《数据层技术基础.ppt》由会员分享,可在线阅读,更多相关《数据层技术基础.ppt(46页珍藏版)》请在三一办公上搜索。
1、第5章 数据层技术基础,数据层的任务 负责对数据的管理,也就是对数据进行分类、组织、编码、存储、检索和维护等 数据层的核心数据库系统是数据层的核心,通过数据访问接口与表达层、逻辑层进行交互。,5.1数据管理技术的几个发展阶段,手工管理阶段与文件系统阶段 手工管理阶段软硬件条件:无DMA设备、无OS应用目的:科学计算数据组织方式:手工特点:数据不保存、数据无结构、数据无独立性、数据不能共享文件系统阶段软硬件条件:有DMA设备、有OS应用目的:科学计算、数据管理数据组织方式:文件系统特点:数据可保存、结构化不强、独立性较差、数据不能共享,5.1数据管理技术的几个发展阶段,5.1.2数据库系统阶段应
2、用目的:科学计算、OLTP、多媒体应用数据组织方式:数据库三级模式软硬件条件:大容量快速存储设备、多用户多任务OS特点:数据保存在数据库、数据高度结构化、数据高度独立、数据共享、冗余小、数据统一控制缺点:不能满足OLAP的需求,外模式/模式映像,5.1数据管理技术的几个发展阶段,5.1.3数据库系统的进一步发展数据仓库 数据仓库(DW+OLAP+DM)软硬件条件:C/S技术成熟应用目的:OLAP、决策支持数据组织方式:多维数据特点:数据冗余大,资源占用多,OLTP(online transaction process):联机事务处理对数据库进行联机的日常事务处理,即利用数据库系统,对日常业务的
3、记录数据进行维护,如进行记录的增加、删除、修改及简单查询;OLAP(online analysis process):联机分析处理,即从企业已有的大量数据中提取决策信息并对之进行管理的服务。,数据仓库:认为:数据仓库是支持管理决策过程的、面向主题的、集成的、随时间变化的、但信息本身相对稳定的数据集合。包括了数据仓库生成技术(DW)、联机分析处理(从数据仓库中提取决策数据)和数据挖掘技术(DM,从数据库和数据仓库中进行深度数据分析,以实现决策支持的各种要求)三个方面的内容。,5.2电子商务系统数据层实现,5.2.1数据库平台的选择与数据模型的设计 数据库平台种类关系数据模型的设计关系数据模型组成
4、要素:数据结构+数据操纵+数据完整性实体完整性、域完整性、参照完整性、用户自定义完整性的设计 实体完整性:是为了唯一的确定表中的一条记录,因此实体完整性要求充当主码的字段值应唯一且不能为空;参照完整性:要求参照字段(参照码)的取值只能取被参照的字段(某个表中的主码)中的值,或者索性为空;域完整性(通过CHECK约束、DEFAULT约束):限制字段的数据类型、格式、取值范围等;,5.2电子商务系统数据层实现,5.2.1数据库平台的选择与数据模型的设计 数据库种类关系数据模型的设计数据模式定义与SQL查询例5.1 数据结构的定义及SQL查询。,1)在SQL Server 中建立一个数据库mytes
5、t,包含以下5个表:教师Teacher、学生Student、课程Course、授课TC、选课SC,其关系模式如下:Teacher(教师号Tno,姓名Tname,年龄Tage,性别Tsex,系名Tdept,电话号码Ttel,邮件地址E-mail,家庭地址Taddr);Student(学号Sno,姓名Sname,年龄Sage,性别Ssex,系名Sdept)Course(课程号Cno,课程名Cname,学分数Ccredit,课时数Chour)TC(教师号Tno,课程号Cno,任课学年Ayear,任课学期Semester,评教等级Rating)SC(学号Sno,课程号Cno,成绩Grade)2)将Te
6、acher.Tno、Student.Sno、Course.Cno设为主码;将TC.Tno、TC.Cno、SC.Sno、SC.Sno设为外码,分别与Teacher、Student、Course建立参照关系。3)用SQL查询语句完成下列操作:查询所有不姓李的教师的姓名、年龄、性别和系名;查询选修了“1”号和“4”号课程且成绩介于80分和90分之间的学生的姓名;查询会计系男生的平均成绩;将一个教师记录(教师号:0899;姓名:岳枫;年龄:28;性别:女;系名:经贸系;E-)插入到Teacher表中;将一个系学生的平均成绩存入数据库的某个表中;将岳枫教师的E-mail改为;删除某个学生(譬如汪莹)的选
7、课信息。,5.2电子商务系统数据层实现,5.2.1数据库平台的选择与数据模型的设计 数据库种类关系数据模型的设计数据模式定义与SQL查询参照完整性设计规则:是用来对表中的字段值(或用户自定义的数据类型中的值)进行限制的一种手段,用于执行一些与 CHECK 约束相同的功能;例5.2 在SQL Server中利用T-SQL语句进行规则的创建与绑定,1)创建一个规则,用以限制Teacher表中的Tage取值范围。USE mytestGOCREATE RULE rule1AS range=1 AND range 120GOEXEC sp_bindrule rule1,Teacher.Tage,2)创建
8、一个规则,用以限制Teacher表中的Tdept取值范围。USE mytestGOCREATE RULE rule2AS list IN(经贸系,会计系,金融系,计算机系)GOEXEC sp_bindrule rule2,Teacher.Tdept,3)创建一个规则,用以限制Teacher表中的Taddr取值范围。USE mytestGOCREATE RULE rule3 ASvalue LIKE _-%-任意一个字符的后面跟一个连字符和任意多个字符(或没有字符),如沪-淮海街道GOEXEC sp_bindrule rule3,Teacher.Taddr,5.2电子商务系统数据层实现,5.2.
9、1数据库平台的选择与数据模型的设计 数据库种类关系数据模型的设计数据模式定义与SQL查询参照完整性设计规则 默认值:默认值对象的作用类似于建表时的DEFAULT约束,对未赋值的字段赋予初值,其管理和使用与规则比较相似,但优先级低于规则。例5.3 定义一个默认值,使教师表中的Ttel初值为unkown。,USE mytestGOCREATE DEFAULT def1 AS unknownGOEXEC sp_bindefault def1,teacher.Ttel,5.2电子商务系统数据层实现,5.2.1数据库平台的选择与数据模型的设计 数据库种类关系数据模型的设计数据模式定义与SQL查询参照完整
10、性设计规则 默认值存储过程 简介:存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。优点例5.4 创建存储过程,1)创建一个能查询出所有不姓李的教师的姓名、年龄、性别和系名的存储过程USE mytestIF EXISTS(SELECT name FROM sysobjects WHERE name=pro1 AND type=P)DROP PR
11、OCEDURE pro1GOCREATE PROCEDURE pro1ASSELECT teacher.Tname,teacher.Tage,teacher.Tsex,teacher.TdeptFROM teacherWHERE(teacher.Tname)Like 李%);GOEXEC pro1,2)创建一个能查询出选修了“1”号和“4”号课程且成绩介于80分和90分之间的学生的姓名的存储过程;USE mytestIF EXISTS(SELECT name FROM sysobjects WHERE name=pro2 AND type=P)DROP PROCEDURE pro2GOCREA
12、TE PROCEDURE pro2 score1 int,score2 intAS SELECT sc.Sno FROM scWHERE(sc.Cno)=1 Or(sc.Cno)=4)AND(sc.Grade)Between score1 And score2)GOEXECUTE pro2 80,90,3)创建一个能查询出会计系男生平均成绩的存储过程;USE mytestGOIF EXISTS(SELECT name FROM sysobjects WHERE name=pro3 AND type=P)DROP PROCEDURE pro3GOCREATE PROCEDURE pro3 ave
13、score float OUTPUTASSELECT avescore=Avg(sc.Grade)FROM student INNER JOIN sc ON student.Sno=sc.SnoWHERE(student.Sdept)=会计系)AND(student.Ssex)=男);GO,接下来可用下列语句进行测试:DECLARE avescore floatEXECUTE pro3 avescore OUTPUTIF avescore 60 BEGIN PRINT PRINT 平均成绩不及格ENDELSEBEGIN PRINT 平均成绩及格END,4)创建一个能从teacher表中查询出不
14、同性别和所有记录数的存储过程;USE mytestGOIF EXISTS(SELECT name FROM sysobjects WHERE name=pro4 AND type=P)DROP PROCEDURE pro4GOCREATE PROCEDURE dbo.pro4(sex char,totalrec int output)AS select totalrec=count(*)from teacherselect*from teacher where teacher.Tsex=sexreturn(rowcount)GO,接下来也可用下列语句进行测试:use mytestgoDECLA
15、RE sex char(2),totalrec intset sex=女EXECUTE pro4 sex,totalrec OUTPUT PRINT sex PRINT totalrec,5.2电子商务系统数据层实现,5.2.1数据库平台的选择与数据模型的设计 数据库种类关系数据模型的设计数据模式定义与SQL查询参照完整性设计规则 默认值存储过程 触发器:一种特殊类型的存储过程 优点例5.5 创建一个触发器,当在Teacher表中修改数据时报告所更新的记录数,USE mytestGOCREATE TRIGGER t1 ON dbo.TeacherFOR UPDATEASDECLARE msg
16、varchar(50)SELECT msg=No:+str(rowcount)+个记录已被更新!PRINT msg可在查询分析器中用以下的语句来测试:USE mytest GO UPDATE teacher SET age=55,5.2电子商务系统数据层实现,5.2.2 数据访问接口的实现 数据库访问接口技术数据库的访问,5.2电子商务系统数据层实现,5.2.2 数据访问接口的实现 数据库访问接口技术数据库的访问 数据库访问接口,5.2电子商务系统数据层实现,5.2.2 数据访问接口的实现 数据库访问接口技术数据库的访问数据库访问接口 从ODBC到ADO.net ODBC(open datab
17、ase connectivity,数据库系统互连),ODBC=Interface+Driver ManagerDriver Manager(驱动程序管理器)作用:为应用程序装入DLL驱动程序,绑定DLL中函数,初始化ODBC调用,提供ODBC函数的入口点,对ODBC调用的参数进行合法性检查,调用ODBC中的函数等。ODBC特点:ODBC属于很低层的接口,适合C或C+程序编程,5.2电子商务系统数据层实现,5.2.2 数据访问接口的实现 数据库访问接口技术数据库的访问数据库访问接口 从ODBC到ADO.net ODBC(Open Database Connectivity,数据库系统互连)DAO
18、(Data Access Object,数据访问对象),DAO特点:属于高层的接口,适合VB程序编程,访问Access快,访问其它数据库慢,5.2电子商务系统数据层实现,5.2.2 数据访问接口的实现 数据库访问接口技术数据库的访问数据库访问接口 从ODBC到ADO.net ODBC(Open Database Connectivity,数据库系统互连)DAO(Data Access Object,数据访问对象)RDO(Remote Data Object,远程数据对象),RAO特点:属于高层的接口,适合VB程序编程,访问非Access数据库快,5.2电子商务系统数据层实现,5.2.2 数据访
19、问接口的实现 数据库访问接口技术数据库的访问数据库访问接口 从ODBC到ADO.net ODBC(Open Database Connectivity,数据库系统互连)DAO(Data Access Object,数据访问对象)RDO(Remote Data Object,远程数据对象)OLE DB,OLE DB 构成:数据消费者(一个应用程序)+数据提供程序+处理并传输数据的服务组件(如查询处理器、游标引擎)OLE DB特点:基于 SQL查询的 数据源和非 SQL查询的 数据源;不提供指针,不适合VB编程,适合c+。,5.2电子商务系统数据层实现,5.2.2 数据访问接口的实现 数据库访问接
20、口技术数据库的访问数据库访问接口 从ODBC到ADO.net ODBC(Open Database Connectivity,数据库系统互连)DAO(Data Access Object,数据访问对象)RDO(Remote Data Object,远程数据对象)OLE DB ADO(Active Data Object,动态数据对象),在Web平台上使用ASP脚本,多数是使用ADO来访问数据库,5.2电子商务系统数据层实现,5.2.2 数据访问接口的实现 数据库访问接口技术数据库的访问数据库访问接口 从ODBC到ADO.net ODBC(Open Database Connectivity,数
21、据库系统互连)DAO(Data Access Object,数据访问对象)RDO(Remote Data Object,远程数据对象)OLE DB ADO(Active Data Object,动态数据对象)ADO.net,ADO.net特点:提供断开的数据访问模型(这对 Web 环境至关重要);提供与XML的紧密集成;提供与.NET框架的无缝集成,5.2电子商务系统数据层实现,5.2.2 数据访问接口的实现 数据库访问接口技术数据库的访问数据库访问接口 从ODBC到ADO.net 例:ASP脚本+ADO组件 Access数据库.,5.2电子商务系统数据层实现,5.2.2 数据访问接口的实现
22、数据库访问接口技术数据库接口驱动程序 从ODBC到ADO.net 例 ASP脚本+ADO组件 Access数据库例 VB中利用ADO访问SQL Server中mytest下的存储过程pro4,Private Sub Command1_Click()Dim cn As ADODB.Connection Dim cmd As New ADODB.Command Dim res As ADODB.Recordset Dim sql As String On Error GoTo errorhandle Set cn=New ADODB.Connection cn.ConnectionString=P
23、ROVIDER=MSDASQL;dsn=my1;uid=sa;pwd=;database=mytest;cn.Open cmd.ActiveConnection=cn cmd.CommandText=pro4 cmd.CommandType=With cmd.Parameters.Append cmd.CreateParameter(ReturnVal,).Append cmd.CreateParameter(sex,10).Append cmd.CreateParameter(totalrec,)End With,cmd.Parameters(sex).Value=女Set res=cmd.
24、ExecuteMsgBox Str(cmd.Parameters(ReturnVal).Value)Dim fld As ADODB.FieldIf Not(res.EOF And res.BOF)Then Me.List1.AddItem(total records:&cmd.Parameters(totalrec).Value)Me.List1.AddItem(return records:&cmd.Parameters(returnval).Value)Do Until res.EOF Me.List1.AddItem(-)For Each fld In res.Fields Me.Li
25、st1.AddItem(fld.Name&:&fld.Value)Next res.MoveNext LoopEnd Ifres.CloseSet res=Nothingcn.CloseSet cn=NothingExit Suberrorhandle:MsgBox Err.DescriptionEnd Sub,程序说明:先利用Windows的控制面板下ODBC数据源建立一个名为my1的SQL数据源;然后在VB中建立一个项目,选择project菜单下的“引用”,引用“ADO library”控件库,在Form窗口中放置一个Button按钮和一个ListBox控件,在按钮的Click事件中输入以
26、上代码运行即可。,5.2电子商务系统数据层实现,5.2.2 数据访问接口的实现 数据库访问接口技术数据库接口驱动程序 从ODBC到ADO.net 例 ASP脚本+ADO组件 Access数据库例 VB中利用ADO访问SQL Server中mytest下的存储过程pro4 JDBC(Java Database Connectivity,Java数据库链接),http:/,5.2电子商务系统数据层实现,5.2.2 数据访问接口的实现 数据库访问接口技术数据库接口驱动程序 从ODBC到ADO.net 例 ASP脚本+ADO组件 Access数据库例 VB中利用ADO访问SQL Server中myte
27、st下的存储过程pro4 JDBC(Java Database Connectivity,Java数据库链接)专用数据库API接口或管理层软件数据库访问接口的实现简单式交互式 分布式 例 分布式应用的一个简单实例,例5.利用JSP和JDBC技术编写一个学生信息查询系统,系统逻辑架构和测试结果如下:,操作步骤:假设学生的信息数据存放在SQL Server数据库服务器中,数据库为mytest,表为student。在利用Jbuilder开发工具进行开发时,其操作步骤如下:运行Jbuilder,利用“文件”菜单下的“new project”功能建立一个名为jspdb的项目文件;利用“文件”菜单下的“new”功能在项目下建立一个名为“jsp1”的jsp文件;利用“文件”菜单下的“new”功能在项目下建立一个名为“jsp1Bean”的类文件;选择“project”菜单下的“project properties”,在如下的窗口中添加组件库:Data Express和Servlet;,Any Questions orComments?,
链接地址:https://www.31ppt.com/p-6050165.html