1、数据库(容器)是相关数据和对象的集合。数据库文件的扩展名是.DBC(默认值),它主要包含: 数据库表:存放数据信息。与自由表不同之处在于,它包含了数据库的基本数据信息。 表间关系:存放各表信息之间的联系。,Visual FoxPro 数据库设计,数据库与表,Visual FoxPro 数据库设计,确定数据库用途(存储信息); 确定需要的表文件; 确定需要的字段; 确定各表之间的关系; 改进整个设计。,数据库设计步骤:,创建数据库,Visual FoxPro 数据库设计,用命令方式创建数据库,格式:CREATE DATABASE | ? 功能:创建并打开一个数据库,用菜单方式创建数据库,项目管理
2、器中工具按钮方式创建数据库,在数据库中创建表,Visual FoxPro 数据库设计,“表设计器”对话框:该“表设计器”对话框与建立自由表的表设计器相似,只是在对话框中多了一些与字段相关联的属性和规则。,数据库表字段的扩展属性,Visual FoxPro 数据库设计,在“显示”字段属性组中,包含有三个字段属性,分别是: “格式”:指定字段在浏览窗口、表单和报表中显示数据的格式, 例如:是否将英文字母大写或小写、是否添加货币符号等。,格式控制符,数据库表字段的扩展属性,Visual FoxPro 数据库设计,“输入掩码”:指定字段输入数据的格式。例如,电话号码的格式为:(999)99999999
3、。其中9表示数字。,数据库表字段的扩展属性设置字段有效性规则,Visual FoxPro 数据库设计,“标题”:在浏览窗口、表单和报表中,利用“标题”字段属性值代替字段名的显示。 在“字段有效性”字段属性组中,包含有三个字段属性,分别是: “规则”:指定实施数据字段级有效性检查的规则。 “信息”:指定当输入违反字段级有效性规则时,显示的提示信息。 “默认值”:是指字段在没有输入数据的情况下,系统给定的值。,Visual FoxPro 数据库设计,数据库表的扩展属性,使用长表名,可以为每张数据库表设置长表名,可以不为表文件名。 设置长表名后,该表有关的窗口均以长表名代替表名,但使用该表时,长表名
4、和表名的意义相同。,设置记录级有效性规则,IIF(ssex .AND. sage18, .F. , .T.),在数据库中添加表:,Visual FoxPro 数据库设计,选择【数据库】菜单中的【添加表】项,系统再次弹出“打开”对话框。在“打开”对话框中,选择相应的数据库表,单击“确定”按钮。 单击“数据库设计”工具栏中的“添加表”按钮 注意:被添加的表只能是自由表(一个数据库表同时只能属于一个数据库)。,将表从数据库中移去或删除:,Visual FoxPro 数据库设计,从打开的数据库中,选择表 【数据库】 【移去】 在弹出的对话框中,选择“移去”还是“删除” 注意:删除是从磁盘上删除,不能恢
5、复,多表操作,Visual FoxPro 数据库设计,在实际工作中,数据库的应用往往涉及到多个表,如何同时打开这些表成为数据库应用的关键。为了解决这一问题,VFP引入了工作区的概念。利用VFP提供的工作区,用户可以同时打开多个表。另外,如果一个数据库应用涉及到多个表,那么这些表相互之间往往具有某种关系。这些表相互之间也只有建立了关系,才能协同完成指定的任务。VFP允许用户在表间建立临时关系或永久关系。,Visual FoxPro 数据库设计,建立表间关系,表间的关联性:,一对一(1:1) 一对多(1:N) 多对多(M:N),表间关系有三种,一对多关系是最常见的。在一对多关系中,我们把联系为一的
6、表,称为 主表 ,因为它是关系的发出者;把联系为多的表称为 从表,因为它是关系的接受者。主表和从表是通过关键字联系的。以主表中的主关键字建立主索引,在从表中的相应关键字建立普通索引,就可以在数据库中建立两个表的主从关系。,Visual FoxPro 数据库设计,建立表间关系永久关系,临时关系&永久关系,VFP表间关系:,永久关系是指建立后一直保持的关系,是数据库的一部分;与临时关系不同,永久关系在每次使用表时不需要重新创建。永久关系在查询、视图设计器中作为默认联接条件;在表单、报表中作为默认的临时关系;还用来存储参照完整性信息。,第一步:打开数据库及数据库设计器 第二步:建立主索引或普通索引
7、第三步:建立永久关系托动主表的主索引,并将其拖动到欲建立关联表的索引上若要修改这种关系,直接双击关系连线,若要删除,则选取直线,按鼠标右键,选择“删除关系”,或者按Del键。,Visual FoxPro 数据库设计,建立表间关系永久关系建立过程,Visual FoxPro 数据库设计,建立表间关系设置参照完整性,参照完整性指相关表之间数据一致性的规则。 它建立于表间的永久关系之上。包括: 子表每一记录在父表中必须有一相应的记录; 父表主关键字修改后,子表的外部关键字必须作相应的修改; 父表记录删除时,子表相应记录也应删除。,Visual FoxPro 数据库设计,建立表间关系设置参照完整性,参
8、照完整性规则包括更新规则、删除规则和插入规则。即在对表进行记录更新、记录删除和插入记录时对表间关系的检查。 每种规则包含三种设置,分别是:级联(自动更新子表相应记录)限制(使可能破坏关系的操作无效)忽略(不理会表间关系的限制,作相应的操作)。,Visual FoxPro 数据库设计,建立表间关系设置参照完整性,打开数据库设计器清理数据库运行参照完整性生成器。 可在数据库菜单中点击“编辑参照完整性” 项,或右击永久关系联线,在弹出的快捷菜单中选择编辑参照完整性项。,Visual FoxPro 数据库设计,建立表间关系临时关系,可以使子表的记录指针自动跟随父表的记录指针移动而移动, 从而实现自动访
9、问。临时关系用来访问记录,永久关系用来建立和实现参照完整性。临时关系在表打开后临时建立,随表的关闭而解除,永久关系在 数据库中建立和保存,表打开时即存在。临时关系可以用于自由表,永久关系只能用于数据库表。临时关系中的一张表只能有一张主表,数据库永久关系中可有多个主表。,Visual FoxPro 数据库设计,建立表间关系临时关系建立方法,1、在数据工作期中建立临时关系 2、用set relation to 命令建立 3、在表单或报表的数据环境中建立,利用“数据工作期”建立临时关系,Visual FoxPro 数据库设计,建立表间关系临时关系建立方法,菜单【窗口】【数据工作期】 使用 “打开”按
10、钮,打开两个数据表 单击左边窗口的主数据表名 按“关系”按钮 单击辅数据表 选定关键字段,利用“Set Relation to”建立临时关系,Visual FoxPro 数据库设计,建立表间关系临时关系建立方法,格式:SET RELATION TO/ INTO ADDITIVE 说明:使用本命令前必须将数据表分别在不同的工作区中打开,并且被关联表必须按共同的关键字做索引。ADDITIVE 表示保持以前建立的关联。 取消已建立的关系: Set relation to,use sc in 1 order in_sno use student in 2 order in_sno set relati
11、on to sno into student list sno,cno,grade,student.sname,利用“Set Relation to”建立临时关系,Visual FoxPro 数据库设计,建立表间关系临时关系建立方法,举例:,use student in 1 order in_sno use sc in 2 order in_sno set relation to sno into sc list sno,sname,o,sc.grade,Visual FoxPro 数据库设计,数据表物理连接&数据更新,1.表文件间的连接:JOIN 命令 JOIN WITH TO FOR FI
12、ELDS,说明:本命令将两个表连接产生第三个表文件使用本命令前必须将两个表分别在两个工作区中打开。新表的结构由FIELDS子句决定。如果未指定FIELDS子句则两个表中的所有字段都被送入新表文件中。如果两个表有同名字段,则当前表中的同名字段被送到新表文件中,如果想要取非当前工作区表中的字段值,应在FIELDS子句中指定字段.,use sc in 2 use student in 1 Join with sc to temp for sno=sc.sno ;fields sno,sname,o,sc.grade Use temp list,Visual FoxPro 数据库设计,数据表物理连接&
13、数据更新,1.表文件间的连接:JOIN 命令 JOIN WITH TO FOR FIELDS,Visual FoxPro 数据库设计,数据表物理连接&数据更新,2.两表间的更新用其它库的数据更新当前库数据 UPDATE ON FROM REPLACE WITH , WITH RANDOM,功能:用某个表文件中的数据项内容对当前工作表文件内容的有关数据项进行赋值。 说明:使用本命令前必须将两个数据库分别在两个工作区中打开,并且分别按共同的关键字做索引。 如选RANDOM则只要求当前库被索引。,Visual FoxPro 数据库设计,管理数据库,打开和关闭数据库:Open database ; C
14、lose database浏览数据库.DBC文件的内容:Use 学籍管理.dbc exclusive; Browse last修改数据库.DBC文件的结构:Use 学籍管理.dbc exclusive; Modify Structure检查当前数据库的完整性: Open database学籍管理.dbc exclusive;Validate database,Visual FoxPro 数据库设计,管理数据库,使用多个数据库设置当前数据库:Set database Open database db1 Open database db2 Set database to db1访问其它数据库中的数据表: Use db1!student browse,