460 likes | 594 Views
数据库与表. 本章内容. VFP 数据库 自由表的创建 表记录维护 表索引及使用 数据库表及其扩展属性 多表操作 数据完整性. VFP 数据库. VFP 数据库简介 基本概念 数据库设计步骤 数据库的创建 数据库的维护. 基本概念(一). 数据库是数据库管理系统的核心。 在 Visual FoxPro 中,数据库是一个包容器(简称容器)。 数据库包含: 数据库表 视图 表之间的关系 …… Visual FoxPro 中数据库扩展名为 .dbc ,关联的数据库备注文件扩展名为 .dct ,关联的索引文件扩展名为 .dcx 。.
E N D
本章内容 • VFP数据库 • 自由表的创建 • 表记录维护 • 表索引及使用 • 数据库表及其扩展属性 • 多表操作 • 数据完整性
VFP数据库 • VFP数据库简介 • 基本概念 • 数据库设计步骤 • 数据库的创建 • 数据库的维护
基本概念(一) • 数据库是数据库管理系统的核心。 • 在Visual FoxPro中,数据库是一个包容器(简称容器)。 • 数据库包含: • 数据库表 • 视图 • 表之间的关系 • …… • Visual FoxPro中数据库扩展名为.dbc,关联的数据库备注文件扩展名为.dct,关联的索引文件扩展名为.dcx。
基本概念(二) • 表(Table) 是指存放在磁盘上的一张二维表文件 ,也称数据表。 • 表中的一列称为一个字段(Field)。字段规定了数据的特征。 • 表中的一行称做一个记录(Record)。记录是多个字段的集合。 • 表的记录必须用一个公共的结构来存储,这个公共的结构就是表结构。
数据库设计步骤 • 确定数据库的目的 • 确定表 • 一个主题一张表 • 确定字段 • 主题信息字段 • 表间关系设计 • (1:1)(1:N)(M:N) • 改进设计
数据库的建立 • 在项目管理器中创建 • 在项目管理器的“数据”选项卡中,选择“数据库”选项,并单击“新建”按钮,打开“创建”对话框,在其中输入数据库名称以启动数据库设计器。与此同时菜单栏中会新添一个“数据库”菜单项。 • 用命令方式创建 • CREATE DATABASE [DatabaseName | ?] 例:命令 Create Database xsgl 将创建一个名为xsgl的数据库
数据库维护(一) • 打开数据库 • OPEN DATABASE [FileName | ?] [EXCLUSIVE | SHARED] [NOUPDATE] [VALIDATE] • 指定当前数据库 • SET DATABASE TO [DatabaseName] • 关闭数据库 • CLOSE DATABASE • CLOSE DATABASE ALL • CLOSE ALL
数据库维护(二) • 有效性检查检查表及索引的正确性 • VALIDATE DATABASE • 清理清除数据库中因表、视图等的变动而引起的具有删除标记的记录 • 打开数据库,在“数据库”下执行“清理数据库” • PACK DATABASE
自由表的创建 • 表结构创建 • 数据录入与修改 • 记录游览与显示
表结构的创建 • 表结构 • 数据类型 • 字段属性 • 表的创建与保存 • 表设计器 • 表的保存 • 表结构的修改 • 使用表设计器修改表的结构,与创建表类似 注意:修改表结构,可能造成数据丢失
数据录入与修改(一) • 向新表中直接输入数据 • 在表结构建立保存后,在弹出对话框中选择“是”进行数据输入 • 注意:日期型数据的输入格式(按照日期格式)空值的输入方法(Ctrl+0)逻辑型数据的输入方法(T F Y N)备注型字段的输入方法(双击)通用型字段的输入方法(双击)
数据录入与修改(二) • 数据的添加输入 • 在项目管理器中选择表的名称。 • 单击“浏览”按钮,弹出“浏览”窗口。 • 选择【显示∣追加方式】命令,此时,“浏览”窗口添加一个空白记录。 • 当填满这个新记录之后,光标自动跳到另一个新记录。 • 继续在其中输入新记录的数据,直到记录全部添加完毕。 • 关闭浏览窗口。
数据录入与修改(三) • 数据的修改:可以在游览窗口内直接修改 • 若要改变字符型、数值型、逻辑型、日期型或日期时间型字段中的信息,可以把光标定位在字段中并编辑该字段,或者选定整个字段并键入新的信息。 • 若要编辑备注型字段,可在“浏览”窗口中双击该字段,这时会打开一个“编辑”窗口,其中显示了备注型字段的内容。 • 通用型字段包含一个嵌入或链接的OLE对象。通过双击“浏览”窗口中的“通用型”字段,可以编辑这个对象,你可以直接编辑文档,或者双击对象打开其父类应用程序。 在浏览状态下,选择“显示”菜单下的“编辑”或“浏览”可以切换浏览窗口内显示方式
记录浏览与显示(一) • 表的打开 • 通过菜单或数据工作期窗口打开表 • 使用命令 • 使用USE命令格式:USE [[DatabaseName!]Table | ?][ALIAS cTableAlias] [EXCLUSIVE] [SHARED] [NOUPDATE] • 使用BROWSEW命令格式:BROWSE 执行命令后在弹出对话框中选择要打开的表
记录浏览与显示(二) • 表的游览 • 表的游览一般要先打开表 • 菜单:显示浏览 • 命令:BROWSE • 格式:BROWSE[FIELDS FieldList] [FOR lExpression1 [REST]] [NOAPPEND] [NODELETE] [NOEDIT | NOMODIFY] [NOWAIT][TITLE cTitleText]
记录浏览与显示(三) • 表记录内容的显示 • 连续显示 • LIST FIELDS FieldList] [Scope] [FOR lExpression1] [WHILE lExpression2][OFF] [NOCONSOLE][TO PRINTER [PROMPT] | TO FILE FileName] • 分屏显示 • DISPLAY [[FIELDS] FieldList][Scope] [FOR lExpression1] [WHILE lExpression2][OFF] [NOCONSOLE][TO PRINTER [PROMPT] | TO FILE FileName]
表记录维护 • 记录添加 • 记录更新 • 记录删除
记录添加(一) • 记录指针 • 记录指针:在每个表打开时,都有一个指向一条唯一的记录的指针,它就是记录指针,记录指针的值等于该记录的记录号,记录号记录了每条记录在表文件中的物理存放顺序。 • 记录指针定位 • 绝对定位格式一: GO|GOTO [RECORD] nRecordNumber格式二: GO|GOTO TOP|BOTTOM格式三: nExpression
记录添加(二) • 记录指针 • 记录指针定位 • 相对定位格式:SKIP [nRecords] • 有关函数 • RECNO() • BOF() • EOF()
记录添加(三) • 记录添加 • 交互方式:所谓的交互方式,是指在VFP开发环境中通过菜单或命令窗口键入命令,交互地对数据库及表文件进行操作的方式。添加记录有三种操作方式: • 在“命令”窗口中输入APPEND命令。APPEND命令会在表文件的末尾添加一个或多个记录。命令执行时会打开一个编辑模式窗口,并将光标自动置于新增记录的首字段。 • 在打开浏览窗口时,选择【显示|追加方式】命令。此时,会在浏览窗口中增加一个空白新记录,并将光标置于该记录的首字段等待输入。 • 选择【表|追加记录】命令,可从其他表文件一次添加多个记录。
记录添加(四) • 记录添加 • 程序代码方式采用代码方式添加记录,同样必须首先打开表文件。代码方式添加记录的步骤为:首先使用APPEND命令在表的末尾添加一条空记录,然后再使用REPLACE命令以给定的值更新当前记录对应字段的空值。例:代码方式添加记录实例USE B_dqxx.dbfAPPEND BLANK && 添加空记录REPLACE dqdh WITH "11",dqmc WITH "重庆" && 更新字段空值也可以采用变量数组来添加记录。
记录更新(一) • 交互方式 • 交互方式编辑记录内容,可通过BROWSE命令打开浏览窗口,在浏览窗口中进行全屏幕操作。在浏览窗口中,只需将光标移至要修改的记录字段值上,直接键盘操作即可修改字段内容。如果要用新的字段值替换原来的内容,而不要原来的字段值,可用鼠标左键在要更新的字段值上连击三下,这样可选定整个字段,然后键入要修改的数据,原来的字段值就被替换掉了。 • 此外,还可使用EDIT或CHANGE命令以编辑方式打开表来进行数据编辑。
记录更新(二) • 代码方式 • 代码方式替换记录内容主要使用REPLACE和REPLACE FROM ARRAY命令。 • 记录内容替换格式:REPLACE FieldName1 WITH eExpression1 [ADDITIVE][, FieldName2 WITH eExpression2 [ADDITIVE]] ... [Scope] [FOR lExpression1] [WHILE lExpression2]
记录更新(三) • 使用数组替换记录内容格式:REPLACE FROM ARRAY ArrayName[FIELDS FieldList] [Scope] [FOR lExpression1] [WHILE lExpression2] [NOOPTIMIZE]
记录删除 • 命令: • DELETE • RECALL • PACK • 交互 • 当浏览窗口打开时,选择【表|切换删除标记】命令,可给当前记录添加或去除删除标记。 • 选择【表|删除记录】命令,可给一个或多个记录添加删除标记。选择【表|彻底删除】命令,可将有删除标记的记录从表文件中彻底清除掉。
表索引及使用 • 索引的概念与类型 • 创建索引 • 索引的使用与维护
索引的概念与类型(一) • 索引 • VFP的索引类似于书的目录,书前面的目录是一份关于章节名称对应页码的列表,利用它可以很快找到所要的章节。表索引也是一个列表,建立了索引表达式与记录号的一种对应关系,并可按索引表达式值的顺序查找相应的记录,从而可以确定对记录的处理顺序。其中的索引表达式可以是表的一个字段,也可以是由某些字段组成的表达式。 • 一个表的索引实际上是根据关键字的值进行逻辑排序的一组指针,它并不改变记录在表中的存储顺序,只改变了记录的处理顺序,所以可为每个表建立多个索引,每一个索引代表一种处理记录的顺序。
索引的概念与类型(二) • 索引类型 • 主索引(P) • 候选索引(C) • 唯一索引(U) • 普通索引(R)
创建索引 • 在表设计器中创建 • 使用命令创建 • 格式:INDEX ON eExpression TO IDXFileName | TAG TagName [OF CDXFileName][FOR lExpression] [ASCENDING | DESCENDING] [UNIQUE | CANDIDATE]
索引的使用与维护(一) • 索引文件的打开 • 如果是结构复合索引文件,当表文件打开的同时,其相应的索引文件也自动打开。 • 如果是非结构复合索引文件或独立索引文件,则需在打开表的同时使用INDEX子句指定相应的索引文件名才能打开索引,或使用单独的命令打开索引文件。 • SET INDEX TO [IndexFileList | ? ][ORDER [TAG] TagName [OF CDXFileName][ASCENDING | DESCENDING]] [ADDITIVE]
索引的使用与维护(二) • 索引文件的维护 • 索引重建 • REINDEX • 删除索引:可通过删除.CDX文件中的索引标识或直接删除.IDX索引文件来实现 • 在表设计器中删除 • 命令格式:DELETE TAG TagName1 [OF CDXFileName1][, TagName2 [OF CDXFileName2]] ... - 或 -DELETE TAG ALL [OF CDXFileName]
数据库表及其扩展属性 • 数据库表与自由表 • 数据库表的扩展属性
数据库表与自由表 • 数据库表是添加到数据库中的表 • 自由表是未添加到数据库中的表 • 自由表和数据库表间可转换 • 数据库表通过后链与数据库相连.在数据库中通过前链与数据库表相连;自由表与数据库没有联系 • 数据库表有更的表属性,称为扩展属性,而自由表没有.
数据库表的扩展属性 • 字段扩展属性 • 设置字段标题 • 设置有效性规则及有效性说明 • 设置字段的默认值 • 表属性 • 记录有效性规则、信息;表注释 • 主索引 • 将某一索引设置为主索引
多表操作 • 工作区的概念及使用 • 表间临时关系
工作区的概念及使用 • 工作区 • 是用以标识一个表的编号的区域。一个工作区中只能打开一个表,但一个表可以用不同的别名在不同的工作区中打开。 • VFP提供了32767个工作区,以1~32767作为每一个工作区的编号,也称为“工作区代号”。 • “当前工作区”是指有关数据操作的命令或函数都以当前所在工作区中的表文件为对象,除非在命令或函数中有加上其他工作区的别名或代号。VFP启动时一般默认以1号工作区为“当前工作区”。
工作区的设置 • 设置当前工作区 • 由于VFP默认的当前工作区是1号工作区,所以要想对其它工作区中的表进行操作,通常情况下总要改变当前工作区。 • 将其它工作区激活为当前工作区的命令为:格式:SELECT nWorkArea | cTableAlias
表间临时关系(一) • VFP可以通过命令在表之间建立一种临时关系。之所以称为临时关系是因为这种关系只是在程序运行时建立的,在退出程序时会自动解除。 • 临时关系的建立 • 使用命令建立关联 • SET RELATION TO [eExpression INTO nWorkArea | cTableAlias [ADDITIVE]] • 使用菜单建立关联 • 使用数据工作期窗口建立关联
表间临时关系(二) • 临时关系的使用与删除 • 使用 • 当表间的临时关系建立完成后,父表文件中的记录指针移动时,子表文件中的记录指针将按照父表中关键字值发生相应的移动,这样就可以同时浏览两个表中的有关记录。 • 删除 • 格式1:SET RELATION TO该格式将删除当前工作区表文件与所有子表文件的一切关联。 • 格式2:SET RELATION OFF INTO nWorkArea | cTableAlias该格式仅切断当前工作区表文件与nWorkArea | cTableAlias所指定的工作区表文件之间的关联,与其它子表文件的关联仍然存在。
数据完整性 • 数据完整性概述 • 永久关系与参照完整性
数据完整性概述 • 数据库完整性 • 是保证数据库中的数据库的正确性一致性的一种约束 • 三类完整性 • 实体完整性、参照完整怀和用户自定义完整性 • 实体完整性包括两级 • 字段的数据完整性和记录的数据完整性。 • 参照完整性 • 是指相关表之间的数据一致性,它由表的触发器实施 • 用户自定义完整性 • 是指用户通过编写程序代码一控制数据的完整性
永久关系与参照完整性 • 无论是自由表还是数据库表,表之间都会存在着三种关系:一对一关系、一对多关系和多对多关系 • 要在数据库中的表文件之间建立永久关联 • 必要条件,两个表需要有公共的字段和索引,并且必须为主表中的主关键字字段建立一个主索引或候选索引,为子表中的外部关键字字段建立一个任意类型的索引,此时表之间的关系类型则由子表中所用索引的类型决定。若子表的索引也是主索引或候选索引,建立的是一对一关系;若子表的索引是普通索引或唯一索引,建立的是一对多关系。永久关联中没有多对多的关系。
永久关系的建立与维护 • 永久关系的建立与维护 • 在数据库设计器中完成 • 建立:按父、子关系在索引上拖出关系连线 • 编辑:选择关系连线,在快捷菜单中执行编辑关系 • 删除:选择关系连线,按“delete”键
参照完整性的建立 • 参照完整性的建立 • 参照完整性生成器”可以帮助您建立规则,控制记录如何在相关表中被插入、更新或删除 • 建立过程 • 选择【数据库∣编辑参照完整性】命令,打开“参照完整性生成器”对话框,其中包括更新、删除和插入三种规则,并提供了三个选项 • 在参照完整性生成器中逐一设置更新、删除或插入记录时所遵循的规则。例如设置更新和删除时为“级联”规则;设置插入时为“限制”规则。 • 单击“确定”按钮,在弹出的提示是否存储改变对话框中单击“是”按钮,保存所做修改,生成参照完整性代码,并退出参照完整性生成器
小结 • 理解数据库有关基本知识 • 了解数据库设计步骤 • 掌握数据库的创建与管理方法 • 掌握表结构的创建与修改 • 掌握表数据和处理 • 掌握对数据库表扩展属性的处理(数据字典) • 会创建表间关系及参照完整性 • 综合应用上述知识建立符合要求的数据库