第一讲VisualFoxPro数据库管理系统基础主讲人:陈鸿2011年10月12日VisualFoxPro数据库管理系统基础数据库的基本概念关系数据库VisualFoxPro数据库管理系统一、数据库的定义、体系结构及数据库系统数据库(Database,DB):存储在一起的相关数据的集合,是存储数据的“仓库”。数据库的起源与发展数据模型:对现实世界客观事物及其联系的描述,它反映数据项之间和记录之间的联系,在数据库技术中使用模型的概念描述数据库的结构与语义。常用的三种数据模型:层次模型、网状模型和关系模型。数据库体系结构外部级(单个用户的视图)概念级(全局视图)内部级(存储视图)图1-1数据库的三级结构数据库管理系统:数据库加上相应的操作和管理数据库的软件。数据库系统:是实现有组织地、动态地存储大量的相关数据,方便用户访问的计算机软硬件资源组成的系统。它由数据库、数据库管理系统、以及支撑数据库管理系统的软硬件构成。二、数据库的由来和发展人工管理阶段文件系统阶段数据库阶段高级数据库阶段VisualFoxPro数据库管理系统基础数据库的基本概念关系数据库VisualFoxPro数据库管理系统一、关系数据库的基本概念关系、关系模型关系模型:由数据结构、关系操作集合和关系的完整性约束条件集合三部分组成。关系:表1-1所示的二维表就是关系数据库中的一个表文件,即是一个关系。姓名地址城市省名邮编电话号码编号李红581信箱北京北京01000067750410001郭亮457信箱宜宾四川6200003988830002表1-1数据库中的一个表关系的性质:(1)一个域中的各项目是同类的;(2)不同的列可以出自同一个域,每一列称为属性,需给予不同的名称;(3)列的顺序无所谓;(4)关系中的各个元组是不同的;(5)行的顺序无所谓;(6)每一分量必须是不可分的数据项。数据结构(元组、属性、域、主关键字、外部关键字)元组:二维表中的行,也称为记录。属性:二维表中的列,也称为字段。域:每个属性有一个值域,值域的类型可以是整数型、实数型和字符型等。主关键字:唯一标识一条记录的属性。外部关键字:某个关系中的一个属性,这个属性在另一个关系中是主关键字。关系模式(关系数据结构):是对关系的描述,它包括关系名、组成该关系的属性名、属性到域的映像。通常记为关系名(属性名1,属性名2,…,属性名n)表1-1的关系模式可记为:通信地址表(姓名,地址,城市,省名,邮编,电话号码,编号)图1-2所示为一个使用关系数据库的例子。例1.1现在有两个文件(见图1-2),通信地址表存储了百货仓库的用户信息,仓库也有一个单独的用户订单数据库表,后者包括用户名、商品名、单间、订货数量和总价字段。现在如果有一个查询:“找出商品号为14B的用户的姓名、地址?”姓名地址城市省名邮编电话号码用户号李红581信箱北京北京01000067750410001郭亮457信箱宜宾四川6200003988830002通信地址表用户号商品号单价数量总价000116A1000.0055000.00000214B500.0031500.00用户订单表图1-2两个有关系的表可见,数据库与文件系统不同,其数据独立于程序而存在,并可以提供给不同的用户共享使用,其基本思想是对所有的数据实行统一的、集中的、独立于程序的管理。二、关系运算关系的数据操纵语言包括查询(描述用户要进行的各种检索操作)和非查询(描述用户要进行的插入、修改、删除等操作)两类,查询是最重要的部分。按照表达查询的方式可分为两类:(1)关系代数语言,查询是以集合操作为基础的运算。(2)关系演算语言,查询是以谓词演算为基础的运算。按谓词变元的基本对象是元组变量还是域变量分为元组关系演算和域关系演算两种。关系代数运算关系代数运算的分类(1)传统的集合运算(如并、交、差、广义笛卡尔积)把关系看做元组的集合,其运算是从行的角度进行的。(2)专门的关系运算,如选择、投影、连接、除。这类运算不仅涉及行,而且涉及列。选择:也称为限制,是根据某些条件对关系作水平分解,选择符合条件的元组。分行名贷款编号顾客名金额Branch_A17Customer_A1000Branch_A18Customer_B2000Branch_A19Customer_C15000Branch_B15Customer_D1500Branch_B16Customer_E1300Branch_C20Customer_F1000Branch_D21Customer_G3000表1-2贷款情况关系(LOAN)例1.2求Branch_B分行贷款金额大于1350元的所有元组。结果如表1-3所示。分行名贷款编号顾客名金额Branch_B15Customer_D1500表1-3结果=LOAN分行名Branch_B金额1350投影:这个操作是对关系作垂直分解,消去关系中某些列,并重新排列次序,删去重复元组。例1.3求贷款关系LOAN在贷款编号和金额这两个属性上的投影。投影的结果如表1-4所示。贷款编号金额1710001820001915000151500161300201000213000表1-4结果LOAN贷款编号,金额连接:从两个关系的笛卡尔积中选取属性间满足一定条件的元组。例1.4设关系R,S分别如表1-5所示,的结果如表1-6(a)所示,RS自然连接的结果如表1-6(b)所示。ABCa1b115a1b216a2b318a2b422a3b530BDb113b217b320b312b612SR表1-5关系R,SCDRSA1R.BCS.BDa1b115b217a1b115b320a1b216b217a1b216b320a2b318b320ABCDa1b11513a1b21617a2b31820a2b31812表1-6结果(a)(b)三、数据的一致性和完整性实体完整性:一个关系数据库中实际存在的表通常对应现实世界的一个实体集。参照完整性:任一时刻,关系R1中外部码属性A的每个值,必须为空,或者等于另一关系R2(R2和R1未必是不同的)中某一元组的主码值。用户定义的完整性:针对某一具体应用环境所决定的数据库的约束条件。VisualFoxPro数据库管理系统基础数据库的基本概念关系数据库VisualFoxPro数据库管理系统例1.5求RS表文件的讲师的平均工资和平均年龄。建立表文件RS.DBF,结构如表1-7所示。RECORD#编号姓名职称工龄工资简介1001王权讲师121000.00memo2002李静教授254832.00memo3003许红讲师183000.00memo4004王朝工程师81922.00memo5005刘海讲师152000.00memo表1-7表文件RS.DBF结构编程序求RS表文件的讲师的平均工资和平均工龄:USERSSUMALL工龄,工资TOA,BFOR职称=“讲师”COUNTALLFOR职称=“讲师”TON?A/N,B/N屏幕上显示结果为:18:00300.00从上面例子可见,VFP像BASIC语言那样,是面向命令的、可以进行各种运算的、简单、实用的语言(只是没有语句标号而已)。另外作为关系数据库管理系统语言,VFP也有关系数据库语言必须有的数据定义语言(DDL)和数据管理语言(DML)两个部分。例题的程序命令的执行,是在命令窗口中以交互式命令方式实现的。谢谢!