1、VF数据库基础.ppt
本课程是根据教育部提出的非计算机专业计算机基础教学三个层次要求,并配合全国计算机等级考试“Visual FoxPro 二级”考试大纲的知识要点,以Visual FoxPro 6.0 为主要内容,介绍关系数据库管理系统基础理论及应用系统开发知识。不仅介绍数据库基础理论与Visual FoxPro 6.0 的基本操作;而且介绍面向对象可视化编程、应用系统开发的方法、步骤。,前言,教材与参考书,教材Visual FoxPro 程序设计教程(第二版)刘卫国 北京邮电大学出版社 Visual FoxPro 程序设计上机指导与习题选解 刘卫国 北京邮电大学出版社 全国计算机等级考试二级教程 Visual FoxPro 程序设计 教育部考试中心,学习方式,听课 读书(预习、复习)作业 实验报告,考试成绩,平时成绩(书面作业、上机练习、综合练习)期末考试,目录,第一章数据库基础知识 第二章VF系统初步第三章VF数据与数据运算 第四章表的基本操作第五章数据库的基本操作第六章SQL查询语言 第七章视图与查询,第八章项目管理器第九章结构化程序设计第十章面向对象编程基础第十一章表单设计及运行 第十二章菜单设计 第十四章报表与标签 第十五章小型系统开发实例,第一章,数据库基础知识,数据库的地位,数据库技术产生于六十年代末,是数据管理的最新技术,是计算机科学的重要分支数据库技术是信息系统的核心和基础,它的出现极大地促进了计算机应用向各行各业的渗透数据库的建设规模、数据库信息量的大小和使用频度已成为衡量一个国家信息化程度的重要标志,第一章 数据库基础知识,1.1 数据管理技术的发展1.2 数据库系统1.3 数据模型1.4 关系数据库1.5 数据库系统的体系结构与开发工具,信息与数据 数据Data是存储在某一种媒体上的能够识别的物理符号。数据不仅包括数字、字母、文字和其他特殊字符组成的文本形式的数据,而且还包括图形、图像、动画、影像和声音等多媒体数据。包括两个方面:描述事物特性的数据内容;存储在某一种媒体上的数据形式。信息Information是被加工成特定形式的数据,具有知识性并对人类活动产生决策作用。信息是以某种数据形式表现的。,1.1 数据管理技术的发展,数据处理也称为信息处理。所谓数据处理,实际上就是利用计算机对各种类型的数据进行处理。它包括对数据的采集、整理、存储、分类、排序、检索、维护、加工、统计和传输等一系列操作过程。数据处理的目的是从大量的、原始的数据中获得人们所需要的资料并提取有用的数据成份,作为行为和决策的依据。,数据处理,数据管理技术的发展过程,什么是数据管理对数据进行分类、组织、编码、存储、检索和维护,是数据处理的中心问题。数据管理技术的发展过程人工管理阶段(40年代中-50年代中)文件系统阶段(50年代末-60年代中)数据库系统阶段(60年代末-现在),一、人工管理阶段,时期40年代中-50年代中产生的背景应用需求科学计算硬件水平无直接存取存储设备软件水平没有操作系统处理方式批处理,人工管理阶段(续),特点数据的管理者:应用程序,数据不保存。数据面向的对象:某一应用程序 数据的共享程度:无共享、冗余度极大数据的独立性:不独立,完全依赖于程序数据的结构化:无结构数据控制能力:应用程序自己控制,应用程序与数据的对应关系(人工管理),人工管理阶段程序例,求6个数据之和和最大值,/*程序1:求6个数之和*/#include main()int i,s=0;int a6=66,55,75,42,86,77;for(i=0;i6;i+)s=s+ai;printf(“%d”,s);,/*程序2:求6个数中的最大值*/#include main()int i,s;int a6=66,55,75,42,86,77;s=a0;for(i=1;i6;i+)if(sai)s=ai;printf(“%d”,s);,程序和数据放在一起,虽然是处理同一批数据,但是程序之间没有数据共享,人工管理阶段出现在计算机应用于数据管理的初期。由于没有必要的软件、硬件环境的支持,用户只能直接在裸机上操作。应用程序中不仅要设计数据的逻辑结构,还要阐明数据在存储器上的存储地址。在这一管理方式下,应用程序与数据之间相互结合不可分割,当数据有所变动时程序则随之改变,独立性差;另外,各程序之间的数据不能相互传递,缺少共享性,因而这种管理方式既不灵活,也不安全,编程效率较差。,二、文件系统阶段,时期50年代末-60年代中产生的背景应用需求科学计算、管理硬件水平磁盘、磁鼓软件水平有文件系统处理方式联机实时处理、批处理,文件系统阶段(续),特点数据的管理者:文件系统,数据可长期保存数据面向的对象:某一应用程序 数据的共享程度:共享性差、冗余度大数据的结构化:记录内有结构,整体无结构数据的独立性:独立性差,数据的逻辑结构改变必须修改应用程序数据控制能力:应用程序自己控制,应用程序与数据的对应关系(文件系统),/*程序1:求6个数之和*/#include main()int i,s=0,a6;FILE*fp;fp=fopen(c:data.dat,rb);fread(a,2,6,fp);/*读数据*/for(i=0;i6;i+)s=s+ai;printf(%d,s);fclose(fp);/*关闭文件*/,/*程序2:求6个数中最大值*/#include main()int a6,i,s=a0;FILE*fp;fp=fopen(c:data.dat,rb);fread(a,2,6,fp);s=a0;for(i=0;i6;i+)if(sai)s=ai;printf(%d,s);fclose(fp);,文件管理阶段程序例,求6个数据之和和最大值,数据来自同一个文件C:data.dat,文件管理阶段把有关的数据组织成一种文件,这种数据文件可以脱离程序而独立存在,由一个专门的文件管理系统实施统一管理。应用程序通过文件管理系统对数据文件中的数据进行加工处理。应用程序与数据文件之间具有一定的独立性,比手工管理方式前进了一步。但数据文件仍高度依赖于其对应的程序,不能被多个程序所共享。由于数据文件之间不能建立任何联系,因而数据的通用性仍然较差,冗余量大。,三、数据库系统阶段,时期60年代末以来产生的背景应用背景大规模管理硬件背景大容量磁盘软件背景有数据库管理系统处理方式联机实时处理,分布处理,批处理,数据库系统阶段(续),特点数据的管理者:DBMS数据面向的对象:现实世界数据的共享程度:共享性高数据的独立性:高度的物理独立性和一定的 逻辑独立性数据的结构化:整体结构化数据控制能力:由DBMS统一管理和控制,应用程序与数据的对应关系(数据库系统),数据库系统程序例,上例实现SELECT sum(数据)AS 数据和 FROM 数据表SELECT max(数据)AS 最大值 FROM 数据表,数据库系统管理阶段对所有的数据实行统一规划管理,形成一个数据中心,构成一个数据“仓库”。应用程序不再只与一个孤立的数据文件相对应,可以取整体数据集的某个子集作为逻辑文件与其对应,通过数据库管理系统实现逻辑文件与物理数据之间的映射。在数据库系统管理的系统环境下,应用程序对数据的管理和访问灵活方便,数据与应用程序之间完全独立,程序的编制质量和效率都有所提高;由于数据文件间可以建立关联关系,数据的冗余大大减少,数据共享性显著增强。,1.2 数据库系统,1.2.1 数据库(DataBase)数据库是数据库系统的核心和管理对象。数据库,就是以一定的组织方式将相关的数据组织在一起,存放在计算机外存储器上形成的,能为多个用户共享的,与应用程序彼此独立的一组相关数据的集合。数据库不仅包括描述事物的数据本身,而且还包括相关事物之间的联系。,1.2.2 数据库的体系结构,模式(Schema),模式(也称逻辑模式)数据库中全体数据的逻辑结构和特征的描述所有用户的公共数据视图,综合了所有用户的需求一个数据库只有一个模式模式的地位:数据库系统模式结构的中间层与数据的物理存储细节和硬件环境无关与具体的应用程序、开发工具及高级程序设计语言无关,外模式(External Schema),外模式(也称子模式或用户模式)数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述数据库用户的数据视图,是与某一应用有关的数据的逻辑表示,外模式(续),外模式的地位:介于模式与应用之间模式与外模式的关系:一对多外模式通常是模式的子集一个数据库可以有多个外模式反映了不同的用户的应用需求、看待数据的方式、对数据保密的要求外模式与应用的关系:一对多同一外模式可以为某一用户的多个应用系统所使用但一个应用程序只能使用一个外模式,外模式(续),外模式的用途保证数据库安全性的一个有力措施。每个用户只能看见和访问所对应的外模式中的数据,内模式(Internal Schema),内模式(也称存储模式)是数据物理结构和存储方式的描述是数据在数据库内部的表示方式一个数据库只有一个内模式,外模式模式映象,保证数据的逻辑独立性当模式改变时,数据库管理员修改有关的外模式模式映象,使外模式保持不变应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。,模式内模式映象,保证数据的物理独立性当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式内模式映象,使模式保持不变应用程序不受影响。保证了数据与程序的物理独立性,简称数据的物理独立性。,Database Management System 数据库管理系统:对数据库中的数据进行统一管理、控制和维护的数据库管理软件。用户通过它可以使用数据库中的数据,实现对数据的存储和检索工作。数据库管理系统通常由三个部分组成:数据描述语言(DDL)及其编译程序,数据操纵语言(DML)或查询语言及其编译、解释程序,数据库管理例行程序。,1.2.3 数据库管理系统,1.2.4 数据库应用系统,数据库应用系统根据用户任务需要用高级语言编写的可以实现对数据库中的数据进行存取和检索操作的程序。,1.2.5 数据库系统的构成,数据库系统它是由有关的硬件、软件、数据和人员四个部分组合而形成的。,硬件环境是数据库系统的物理支撑。软件系统包括系统软件和应用软件两类。系统软件主要包括数据库管理系统软件、开发应用系统的高级语言及其编译系统、应用系统开发的工具软件等。应用软件是指在数据库管理系统的基础上由用户根据自己的实际需要自行开发的应用程序。数据库系统的人员是指管理、开发和使用数据库系统的全部人员,主要包括数据库管理员、系统分析员、应用程序员和用户。,1.3 数据模型,数据库需要根据应用系统中数据的性质、内在联系,按照管理的要求来设计和组织。人们把客观存在的事物以数据的形式存储到计算机中,经历了对现实生活中事物特性的认识、概念化到计算机数据库里的具体表示的逐级抽象过程。,客观对象的抽象过程-两步抽象现实世界中的客观对象抽象为信息模型;把信息模型转换为某一DBMS支持的数据模型。信息模型是现实世界到机器世界的一个中间层次。,1.3.1 现实世界的数据描述,实体:在现实世界中客观存在并可以相互区分的事物。属性:实体的每一种特性都称为属性。键:唯一标识每个实体的属性,又称为实体标识符。实体集:同类型实体的集合。,现实世界中事物之间的联系在信息世界中反映为实体之间的联系。实体间的联系一对一联系(1:1)一对多联系(1:n)多对多联系(m:n),实体间的联系,一对一联系,对于实体集A中的每一个实体,实体集B中至多有一个实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系。记为1:1 实例班级与班长之间的联系:一个班级只有一个正班长一个班长只在一个班中任职,一对多联系,对于实体集A中的每一个实体,实体集B中有n个实体(n0)与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多联系。记为1:n实例班级与学生之间的联系:一个班级中有若干名学生,每个学生只在一个班级中学习,多对多联系,对于实体集A中的每一个实体,实体集B中有n个实体(n0)与之联系,反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m0)与之联系,则称实体集A与实体B具有多对多联系。记为m:n实例课程与学生之间的联系:一门课程同时有若干个学生选修一个学生可以同时选修多门课程,1.3.2 数据模型,数据模型是数据库管理系统用来表示实体及实体间联系的方法。数据模型应正确反映数据之间的整体逻辑关系。数据库管理系统支持的数据模型有:网状模型、层次模型、关系模型。,用树形结构描述实体及其之间联系的数据模型。主要特征如下:仅有一个无双亲的根结点。根结点以外的子结点,向上仅有一个父结点,向下有若干子结点。层次数据库管理系统,层次模型,层次模型是由若干个代表实体之间一对多联系的基本层次联系组成的一棵树,树中的每一个结点代表一个实体类型。,网状模型是层次模型的扩展,它表示多个从属关系的层次结构,呈现一种交叉关系的网络结构。可以方便的表示各种类型的联系。主要特征如下:有一个以上的结点无双亲。至少有一个结点有多个双亲。网状数据库管理系统,网状模型,R1,R4,R3,R2,R5,L1,L2,L3,L4,L5,用二维表结构表示实体及实体之间联系关系模型的主要特点关系中每一分量不可再分,是最基本的数据单位每一竖列的分量是同属性的,列数根据需要而设,且各列的顺序是任意的;每一横行由一个个体事物的诸多属性构成,且各行的顺序可以是任意的;一个关系是一张二维表,不允许有相同的属性名,也不允许有相同的元组。,关系模型,学生关系表,表中每一行表示一个实体,称为一条记录表中每一列是记录中的一个数据项,表示实体的一个属性,称为一个字段,关系模型举例,描述的一致性 利用公共属性连接 结构简单直观 由严格的理论基础 语言表达简练,学生,选课,教师,课程,任课,教学管理数据库的关系数据模型,1.4关系数据库,关系术语关系:一个关系就是一张二维表,每个关系都有一个关系名。在VF中,一个关系存为一个文件,其扩展名为.dbf称为表。对关系的描述称为关系模式,一个关系模实对应一个关系的结构。关系名(属性名1,属性名2,属性名n)在VF中,表示为表结构:表名(字段名1,字段名2,字段名n),元组:一个二维表(一个具体关系)的每一行称为元组。在VF中,一个元组对应表中一个记录。属性:二维表的每一列在关系中称为属性,每个属性都有一个属性名,属性值则是各个元组属性的取值。在VF中,一个属性对应表中一个字段,属性名对应字段名,属性值对应于各个记录的字段值。域:属性的取值范围。域是属性值的集合,其类型与范围具体由属性的性质及其所表示的意义确定。,关系术语,关键字:属性或属性组合,其值能够唯一的标识一个元组。关键字的属性值不能取“空值”。关系中能够成为关键字的属性或属性组合可能不是惟一的,凡在关系中能够惟一区分、确定不同元组的属性或属性组合,称为候选关键字。外部关键字:关系中某个属性或属性组合并非关键字,但却是另一个关系的主关键字,称此属性或属性组合为本关系的外部关键字。关系之间的联系是通过外部关键字实现的。,关系术语,关系的基本特点,关系必须规范化在同一关系中不允许出现相同的属性名。关系中不允许有完全相同的元组,即冗余。在同一关系中元组的次序无关紧要。在同一关系中属性的次序无关紧要。,关系数据库,以关系模型建立的数据库就是关系数据库(RDB:Relational Database)。关系数据库中包含若干个关系,每个关系都由关系模式确定,每个关系模式包含若干个属性和属性对应的域,所以,定义关系数据库就是逐一定义关系模式,对每一关系模式逐一定义属性及其对应的域。,Visual FoxPro中,与关系数据库对应的是数据库文件(.dbc文件),一个数据库文件包含若干个表(.dbf文件),表由表结构与若干个数据记录组成,表结构对应关系模式。每个记录由若干个字段构成,字段对应关系模式的属性,字段的数据类型和取值范围对应属性的域。,学生管理数据库中的表,表之间的关系,并 两个相同结构关系的并是由属于这两个关系的元组组成的集合。差 设有两个相同结构的关系R和S,R差S的结果是由属于R但不属于S的元组组成的集合,即差运算的结果是从R中去掉S中也有的元组。交 两个具有相同结构的关系R和S,它们的交是由既属于R又属于S的元组组成的集合。交运算的结果是R和S的共同元组。,关系运算(传统的集合运算),并,R,S,RS,差,R,S,R-S,交,R,S,R S,专门的关系运算:,选择 从二维表中挑选出若干行 投影 从二维表中指定若干列 连接 将具有某种共性的两个二维表,根据某种要求绘制出一个新的二维表,(a),Student,选择,例1 查询信息系(IS系)全体学生,选择,例2 查询年龄小于20岁的学生,投影,例3 查询学生的姓名和所在系,关系的完整性,即关系中的数据及具有关联关系的数据间必须遵循的制约和依存关系,以保证数据的正确性、有效性和相容性。关系的完整性主要包括域完整性、实体完整性和参照完整性三种。,关系的完整性,域完整性域完整性是对数据表中字段属性的约束,它包括字段的值域、字段的类型及字段的有效规则等约束,它是由确定关系结构时所定义的字段的属性决定的。,实体完整性实体完整性是对关系中的记录唯一性,也就是主键的约束。准确地说,实体完整性是指关系中的主属性值不能为Null且不能有相同值。,参照完整性参照完整性是对关系数据库中建立关联关系的数据表间数据参照引用的约束,也就是对外键的约束。准确地说,参照完整性是指关系中的外键必须是另一个关系的主键有效值,或者是NULL。,1.5 体系结构与开发工具,数据库系统的体系结构单用户数据库系统主从式多用户数据库系统C/S数据库系统B/S数据库系统,常见的数据库管理系统AcessVisual FoxProSQLServerOracle常见的数据库开发工具,