刘素华lsh966@126.comVisualFoxpro数据库程序设计教材:关于本课程课时:60h=40(授课)+20(上机实验)学分:3成绩:考试(≈70%)上机实验(≈20%)+平时成绩(≈10%)学习中的要求课堂–课本与课件结合–与老师同步上机–不能无故缺席–遵守机房规则–有问题,举手提问课下–自觉复习–完成好作业目录第一章VF系统概述第二章数据与数据运算第三章表与数据库第四章关系数据库标准语言SQL第五章查询和视图第六章程序设计基础第七章表单设计第八章建立报表与标签第九章菜单与工具栏设计第十章数据库应用程序开发第一章VF系统综述70年代后期数据库理论的研究较为成熟1982dBASEII1984.6dBASEIII80年代中期FoxBase1989下半年FoxPro1.01991.7FoxPro2.01992.6Fox软件公司被Microsoft软件公司收购1992年中MicrosoftFoxPro2.51995VisualFoxPro3.0,VF开始盛行1998VisualFoxPro6.0(VisualStudio6.0)VF数据库的发展VisualFoxPro(简称VFP)是Xbase数据库家族的最新成员,也是其前身FoxPro与可视化程序设计相结合的产物。●Xbase数据库的演变在微机关系数据库中,Xbase家族占有重要的地位。从Dbase到FoxBASE,FoxPro,VisualFoxPro,这一家族在PC平台上,拥有最广大的用户群。1989年,FOX软件公司开发了FoxBASE+的后继产品—FoxPro。但其早期版本仍是在DOS平台上运行的。1992年美国微软公司收购了FOX公司,第二年就推出了FoxProforWindows(2.5版),使微机关系数据库系统由基于字符界面演变到基于图形用户用户界面。随着这一界面的改进,FoxPro出现了下列的重要变化:(1)支持界面操作:FoxPro大量使用菜单、对话框等人机交互工具,使不懂FoxPro命令的用户也能方便使用数据库。(2)启用程序设计辅助工具:FoxPro的后期版本(如2.5版与2.6版)都提供了一些辅助工具,使用户可通过交互方式来生成所需的界面与程序代码。这不仅大大简化了编程,也为后来的可视化程序设计打下了基础。1995年,微软公司首次将可视化程序设计引入了FoxPro,并将其新版本取名为VFP3.0。与FoxPro相比,VFP的改进主要表现在:①继续强化界面操作,把传统的命令执行方式扩充为以界面操作为主、命令方式为辅的交互执行方式,大量使用向导、设计器等界面操作工具,充分体现了它们直观、易用的特点。②将面向对象程序设计的思想与方法引入FoxPro,把单一的面向过程的结构化程序设计扩充为既有结构化设计、又有面向对象程序设计的可视化程序设计,大大减轻了编写应用程序代码的工作量。③为了适应Windows操作系统的升级,VFP的处理单元也从FoxPro的16位改成32位,从而在处理速度、运算能力和存储能力上都提高了许多倍。到1998年,VFP已推出了6.0版,成为Xbase家族中最新的成员。1.1数据库系统的基本知识一.数据、信息与数据处理二.数据库系统三.数据库系统的内部结构体系1、数据——描述事物特征或属性的符号记录。或者:数据就是存储在某一种媒体上能够识别的物理符号。如:文字、声音、图形、图像等。数据、信息、数据处理数据的概念包括两个方面:描述事物特性的数据内容本身存储在某种媒体上的数据形式数据的形式是多样的,如:气象数据——数字型音乐数据——声音型日期数据——时间型2、信息——经过加工处理并对人类社会实践和生产活动产生决策性影响的数据。不是所有的数据都能成为信息,只有经过加工处理有用的数据才是信息如:气象数据气象预报信息与数据的关系信息=数据+处理3、数据处理——将数据转换为信息的过程。指对现实世界中存在的大量数据进行收集、组织、存储、加工、筛选和传送等,将其转换成信息的过程。是计算机的一个重要的应用领域数据处理技术经历了以下几个阶段:–程序管理(人工管理)–文件系统–数据库系统从文件管理到数据库管理:数据库出现前,计算机用户就使用数据文件来存放数据。常用高级语言从早期的FORTRAN到今天的C语言,都支持使用数据文件。即用户通过对文件的访问实现对记录的存取。通常称支持这种数据管理方式的软件为“文件管理系统”。随着社会信息量的迅速增长,计算机处理的数据不断增加。文件管理系统越来越不能适应管理大量数据的需要。于是数据库管理系统便应运而生,并在20世纪60年代末期诞生了第一个商品化的数据库系统--美国IBM公司的IMS系统。三个阶段的比较如下表:人工管理文件系统数据库系统背景应用背景科学计算科学计算、管理大规模管理硬件背景无直接存取设备磁盘、磁鼓大容量磁盘软件背景无操作系统有文件系统有数据库管理系统处理方式批处理批处理、联机实时处理批处理、联机实时处理、分布式处理特点数据的管理人文件系统数据库管理系统(DBMS)数据面向的对象某一应用程序某一应用程序整个应用系统数据的共享程度无共享冗余度极大共享性差冗余度大共享性高冗余度小数据的独立性不独立,完全依赖于程序独立性差具有高度的物理独立性和逻辑独立性数据的结构化无结构记录内有结构,整体无结构整体结构化,用数据模型描述数据的控制能力应用程序自己控制应用程序自己控制由DBMS提供数据安全性、完整性、并发控制和恢复能力数据库:(Database,简记为DB)是长期存储在计算机内、有组织的、统一管理的相关数据的集合。数据库技术:数据库技术是研究数据库的结构、存储、设计、管理和使用的一门软件学科。数据库系统:指引进数据库技术后的计算机系统。实质上是由有组织地、动态地存储的有密切联系的数据集合及对其进行统一管理的计算机软件和硬件资源所组成的系统。数据库系统(DBS)硬件系统:存取数据、传输数据等。系统软件:包含操作系统、数据库管理系统、高级语言及其编译系统和开发工具。数据库应用系统:为特定应用开发的数据库应用软件。各类人员:数据库管理员、系统分析员、应用程序员和用户。数据库系统的组成(要素)数据库(DB)数据库管理系统(DBMS)数据库系统的核心应用程序问:DBS与DB和DBMS间的关系是什么?数据库系统的特点数据独立性强数据独立于应用程序数据共享性高、冗余度低易于扩充和修改由DBMS统一管理和控制数据库系统的结构从数据库管理系统角度看,数据库系统采用三级模式结构:概念模式:也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。外模式:即用户模式,是数据库用户能看到和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据模式视图,是与某一应用有关的数据的逻辑表示。内模式:即存储模式,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。三个世界:信息世界现实世界机器世界数据库系统的结构1.2关系数据库的基础理论1.2.1数据模型1.2.2关系数据模型1.2.3关系运算1.2.1数据模型数据模型主要有三类:层次模型(HierarchicalModel)——树网状模型(NetworkModel)——网关系模型(RelationModel)——二维表•关系模型最成熟,它是用二维表来表示数据以及它们之间的关系。关系模型基础上的数据库称为关系数据库。VisualFoxPro就是关系数据库。1.2.2关系数据模型①关系:一个关系就是一张二维表,在VF中存储为一个文件,扩展名是.DBF。②关系模式:是对关系的描述,一个关系模式对应于一个关系的结构。其格式为:关系名(属性名1,属性名2,…),例如:设备情况(编号,名称,启用日起,是否为主要设备,备注)按关系数据模型组织的数据库是关系数据库。③元组:在二维表中的水平方向的行;④属性:在二维表中的垂直方向的列;⑤域:属性的取值范围,同列具有相同的域;⑥关键字:属性或属性的组合,能唯一标识一个元组编号名称启用日期部门是否为主要设备备注010-1车床03/05/9021.T.Memo016-2车床01/15/9221.T.Memo037-2磨床07/21/9022.T.Memo038-1钻床10/12/8923.F.Memo……………………………下表即为二维表(关系):1.2.3关系数据库关系的特点:①每个字段不可再分;②同一关系中不能出现相同的属性名;③关系中不能有完全相同的元组(记录);④在同一关系中元组及属性的顺序可以任意。在一个关系中元组的次序无关紧要;在一个关系中列的次序无关紧要;以上是关系的基本性质,也是衡量一个二维表格是否构成关系的基本要素。在这些基本要素中,有一点是关键,即属性不可再分割,也即表中不能套表。数据完整性数据完整性是指数据库中数据的正确性和一致性(或相容性),数据完整性用来防止数据库中存在不合法的数据,防止错误的数据进入库中。数据完整性可以分为:(1)实体完整性是指数据库表的每一行都有一个唯一的标识。(2)域完整性是指数据取值的正确性。它包括数据类型、精度、取值范围以及是否允许空值等。(3)参照完整性是数据库中表与表之间存在码(关键字)与外码(外部关键字)的约束关系,利用这些约束关系可以维护数据的一致性或相容性,即在数据库的多个表之间存在某种参照关系。E--R模型(概念数据模型)1、实体:客观存在并且可以相互区别的事物称为实体。2、实体集:实体集是具有相同类型及相同性质(或属性)的实体集合。3、属性:实体通过一组属性来表示,属性是实体集中每个成员具有的描述性性质。4、联系:实体之间的对应关系称为联系,它反映了现实事物之间的相互联系。E--R模型实体-联系图,提供了表示实体、属性和联系的方法,用来描述现实世界的概念模型。构成E-R图的基本要素是实体、属性和联系,其表示方法为:实体:用矩形表示,矩形框内写明实体名;属性:用椭圆形表示,并用无向边将其与相应的实体连接起来;联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1,1:n或m:n)。实体间的联系:一对一联系;一对多联系;多对多联系班长班长-班级班级11班长班长-学生学生1n教师教师-学生学生mn(a)(b)(c)*概念模型转换为关系模型的方法①一个实体转换为一个关系模式;②一个m:n联系转换为一个关系模式;③一个1:n联系可转换为一个独立的关系模式,也可与n端对应的关系模式合并;④一个1:1联系可转换为一个独立的关系模式,也可与任意一端的关系模式合并;⑤3个或3个以上实体间的一个多元联系转换为一个关系模式;⑥同一实体集的实体间的联系可按②③④的情况分别处理;⑦具有相同码的关系模式可以合并。关系运算1、传统的集合运算①并:两个关系的和;②交:两个关系中相同的部分;③差:两个关系的差。进行并、差、交集合运算的两个关系必须是具有相同的关系模式,既结构相同。2、专门的关系运算①选择:找出二维表中满足条件的行——横向切割;②投影:选择二维表中若干列——纵向切割;③联接:将两个关系按照一定的条件进行组合,连接生成新的关系——横向连接关系运算R1:cnocnameage01A11802A22003A319R1-R2:cnocnameage02A22003A319R2:cnocnameage01A11805A519R3:nocredit116128cnocnameagenocredit01A11811605A51911601A11812805A519128R2R3:*关系模式的规范化如何将一般的关系模型转化为最佳的关系模型(减少冗余,保证数据的一致)第1范式:表中无重复字段;第2范式:表中每列均函数性地依赖于主关键字;第3范式:表中记录符合第2范式且无传递依赖(传递依赖:表中含有一个定义其他列的非主属性).4…5…6…*例:1、成绩(学号,姓名,班级,课程名,成绩,课程名,成绩)2、成绩(学号,姓名,班级,课程名1,成绩1,课程名2,成绩2)3、成绩(学号,姓名,班级,课程名,成绩)4、学生信息(学号