VFP 第三章 数据库的创建和使用

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程表
学生表
教师 任课表
学习 成绩表
专业表
数据库中概念的结构图
自由表 记录 库表
数据 世界
记录 „ „ 记录
字段
„„
字段
数 据 库
„ „
库表
现实 世界 相关联的实 体集的组合
实体集
实体
属性
3.2 设计数据库的过程
确定数据库的目的 确定需要的表 确定所需字段
确定表之间的关系
改进设计
3.2.4 确定表之间的关系
课程表 一对多 一对多 成绩表 一对多
学生表 一对多 专业表
二、关系的存在方式
1、永久关系(persistent relationship)
永久关系是永久保存在数据库中的库表之间的 一种关系。
2、临时关系(temporary relationship)
临时关系是在打开的表之间用SET RELATION命 令建立的临时性关联。
临时关系与永久关系的联系:
无论建立临时关系还是永久关系,都必须
明确建立关系的两个表之间确实在客观上 存在着一种关系(一对多或一对一关系)。 永久关系在许多场合可以用来作为默认的 临时关系。
3.10.2 建立表之间的临时关系
建立临时关系要明确几个要素: 主表、子表、子表的主控索引以及关系表达式。
3.7.2 设置相关表的参照完整性
更新规则 删除规则 插入规则 当父表中的关键字 当父表中记录被删 当在子表中插入 值被修改时 除时 或更新记录时 级 联 限 制 忽 略 用新的关键字值 删除子表中所有相 更新子表中的所有 关记录 相关记录 若父表中不存在 若子表中有相关记 若子表中有相关记 匹配的关键字 录则禁止更新 录则禁止删除 值,则禁止插入 允许更新,不管子 允许删除,不管子 允许插入 表中的相关记录 表中的相关记录
何时检查字段级规则 – 字段值改变时。 – 进行字段级检查的情况有:
3.6 库表的表属性
长表名 记录的有效性规则 表的触发器 标题 注释
长表名的命名
命名规则 – 第一字符必须是字母、下划线或汉字
表长度规定 – 自由表----------最长10个字符 – 数据库表-------最长128个字符
3.7.3 VFP数据完整性综述
VFP5.0引进了关系数据库的三类完整性:
实体完整性;参照完整性;用户自定义完整性
实体完整性包括两级:
字段的数据完整性(由字段的有效性规则加以实施) 记录的数据完整性(由记录的有效性规则加以实施)
参照完整性是指相关表之间的数据一致性。 通过字段级、记录级和表间三级完整性
3.9.1 DBGETPROP()函数
CProperty—指定属性名称,DBGETPROP( ) 函数返回该属性的信息。(参见教材P.71 表3-15)
3.9.2 DBSETPROP()函数
作用:设置当前数据库或者当前数据库中字 段、表或视图的属性。 语法: DBSETPROP(cName, cType,cProperty, eValue) 参数: eValue—指定 cProperty 的设定值, eValue 的数据类型必须和属性的数据类型相同。。
3、永久关系的建立
确定两个具有一对多或一对一关系的表; 建立主表的主索引或候选索引; 如果是一对多关系,则在子表中以主表的外 关键字建立普通索引;如果是一对一关系, 则在子表中以与主表相同的关键字建立主索 引或候选索引。 从主表的主索引或候选索引到子表相关的索 引建立永久关系。
4、删除表间的永久关系
临时关系与永久关系的区别:
临时关系是用来临时地控制相关表之间记录的
访问;而永久关系主要是用来存储相关表之间 的参照完整性。附带地可以作为默认的临时关 系或查询中默认的联接条件。 临时关系在表打开之后使用 SET RELATION 命 令创建,随表的关闭而解除;永久关系永久地 保存在数据库中而不必在每次使用表时重新创 建。 临时关系可以在自由表之间、库表之间或自由 表与库表之间建立;而永久关系只能建立在库 表之间。

字段 字段 记录 记录 表单 表
激活时机
当从浏览中离开字段,或在执行 INSERT 或 REPLACE 更改字段值时。 当从浏览中离开字段,或在执行 INSERT 或 REPLACE 更改字段值时。 发生记录更新时。 发生记录更新时。 移动记录时。 在 INSERT、UPDATA 或 DELETE 事 件中,表中值改变时。
第三章
数据库的创建和使用
3.1 VFP数据库
3.1.1 数据库的概念
定义: 数据库是一个包容器,用来组织和联 系表,它提供了存储数据的一种结构。 文件类型:DBC/DCT/DCX 内容: –表 – 表之间的永久关系 – 视图(本地、远程) – 存储过程
一个教学数据库管理系统的例子
教师表
cType——指定cName的类型,是否为当前数
据库,或者当前数据库中的一个字段、表 或视图。下表列出了 cType 的允许值:
Ctype DATABASE FIELD TABLE VIEW 说明 cName cName cName cName 是当前数据库。 是当前数据库中的一个字段。 是当前数据库中的一个表。 是当前数据库中的一个视图。
数据字典可以创建和指定以下内容:
主关键字和候选索引关键字; 表单中使用的默认控件类; 数据库表之间的永久性关系; 字段的输入掩码和显示格式; 长表名和表中的长字段名; 字段级和记录级有效性规则; 表中字段的标题和注释; 存储过程; 表中字段的默认值; 插入、更新和删除事件的触发器。
选择主表工作区,使用如下命令解除临时关系:
SELECT XS SET RELATION TO 或者 SET RELATION OFF 三. 在关闭主表或子表时,临时关系也即 自动解除
三、视图
把分散在相关表中的数据通过连接条件把
它们收集到一起 是张虚表
四、存储过程
保存用户自定义函数和过程
保存参照完整性代码
3.4 使用数据字典
数据字典是包含数据库中所有表信息的
一个表。每个数据库带有一个数据库字 典。 在数据库中的表可以享受到数据字典的 各种功能。 使用数据字典,可以创建字段级规则和 记录级规则,保证主关键字字段内容的 唯一性。
3.5 库表字段的扩展属性
字段的显示格式 输入掩码 默认值 标题 注释 字段的验证规则
设置字段级规则
规则的作用: – 用来控制用户输入到字段中的信息类型,或 检查其他字段值的字段数据。 – 实现数据库数据的完整性和固有的商业规则。 – 用“有效性说明”作为出错信息。 何时实施约束
约束,有效地实现了数据的完整性和一 致性。方便和简化了用户的数据维护。
3.8 使用多个数据库
打开多个数据库(与打开多个表的情况不一样)
设置当前数据库 1. 在常用工具栏中设置 2. 使用命令SET DATABASE TO 库文件名 测试当前数据库的文件名
使用函数DBC()
测试指定的数据库是否打开
3.3 创建数据库
3.3.1 创建方法
界面方式 命令方式 CREATE DATABASE [数据库名|?]
3.3.2数据库的组成
库表
库表之间的永久关系 视图(View) 存储过程
一、库表
数据库与数据库表之间的双向链接包括前链和
后链 库表的创建 库表的添加 库表的移去 方法一:界面方式 方法二:命令CREATE TABLE,ADD TABLE , REMOVE TABLE 删除后链:FREE TABLE 表文件名
3.7 相关表之间的参源自文库完整性
3.7.1 参照完整性概念
参照完整性(RI)是用来控制数据库相关
表之间的主关键字和外部关键字之间数 据一致性的规则。-属于表间规则。 参照完整性是建立在库表之间永久性关 系基础之上的规则。 子表的孤立记录:
3.7.1 参照完整性概念
相关表之间的数据一致性要求: 1.子表中的每一个记录在对应的主表中必须 有一个父记录。 2.在子表中插入记录时,其外关键字必须是 父表主关键字值中的一个。 3.在父表中删除记录时,与该记录相关的子 表中的记录必须全部删除。
3.9 查看或修改数据库的属性
3.9.1 DBGETPROP()函数
作用:返回当前数据库或者当前数据库中字 段、表或视图的属性。 语法: DBGETPROP(cName, cType, cProperty) 参数: cName——指定数据库、字段、表或视图的 名称。
3.9.1 DBGETPROP()函数
设置表的有效性规则
规则的作用: – 用来控制用户输入到记录中的信息类型,通 常比较同一记录中的两个或多个字段值。 何时检查规则 – 在记录指针改变时。 从数据库中移去具有关联规则的表时 – 所有属于 该表的字段级和记录级规则都会从 数据库中删除。因为规则存放在.DBC中。
设置触发器(Trigger)
一、关系的种类 1、一对多关系; 2、多对多关系; 3、一对一关系。
1、一对多关系
设有甲乙两个表,如果甲表中的任意一个记录在
乙表中都有几个记录与之对应,而乙表中的每个 记录在甲表中仅有一个记录与之对应,则称甲乙 两个表之间存在一对多关系,并称甲表为“一” 表(或“主表”),乙表为“多”表(或“子 表”)。
Trigger是建立在表上的表达式,当表中的任 何记录被指定的操作命令修改时发生。
“触发器”的设置 – 表设计器------―表属性”
• INSERT触发器 • UPDATA触发器 • DELETE触发器
3.6.4 库表的约束机制及其激活时机
实施机制
NULL 有效性 字段级规则 记录级规则 侯选/主索引 VALID 子句 触发器
二、库表之间的永久关系
1、概念
永久关系是永久保存在数据库中的库表之间的 一种关系。永久关系靠索引建立。
2、永久关系的作用
在“查询设计器”和“视图设计器”中,自 动作为默认联接条件。 作为表单和报表的默认的临时关系,在“数 据环境设计器”中显示。 用来存储参照完整性信息。
二、库表之间的永久关系
使用函数DBUSED(数据库名) 如果已打开,则函数返回值为.T.;否则函数返回值 为.F.
3.8 使用多个数据库
使用数据库中的表 关闭数据库
1、在项目管理器中关闭 2、用CLOSE DATABASES 命令关闭
(1)CLOSE DATABASES 关闭当前数据库和表。若没有当前数据库,则关闭 所有工作区内所有打开的自由表、索引和格式文 件,并选择工作区 1。 (2)CLOSE DATABASES ALL 关闭:所有打开的数据库和其中的表。 所有打开的自由表。 所有工作区内所有索引和格式文件。
临时关系: 主表的记录——>子表的主控索引 建立临时关系的方法: 1、在“数据工作期”窗口中建立 2、使用 SET RELATION 命令建立: SET RELATION TO 关系表达式 INTO 区号|别名
3.10.3 解除表之间的临时关系
一. 在“数据工作期”窗口中解除
二. 使用命令解除
3.10 表之间的临时关系
3.10.1 临时关系
临时关系(temporary relationship)
是在打开的表之间用SET RELATION命令 建立的临时性关联。 建立了临时关系后,就会使得一个表 (子表)的记录指针自动随另一个表 (父表)的记录指针移动而移动。这样, 便允许当在关系中“一”方(或父表) 选择一个记录时,会自动去访问关系中 “多”方(或子表)的相关记录。
1:m
2、多对多关系
如果甲表中的任意一个记录在乙表中都有几个
记录与之对应,而乙表中的每个记录在甲表中 也有多个记录与之对应,则称甲乙两个表之间 存在多对多关系。
N:m
3、一对一关系
甲表的一个记录在乙表中只能对应一个记
录,而乙表中的一个记录在甲表中也只能 有一个记录与之对应。
1:1
教师表 一对多 任课表
数据不一致将造成子表产生孤立记录 即子表的某些记录的外部关键字的值在主表中 没有对应的值。
3.7.2 设置相关表的参照完整性
相关表之间的参照完整性规则是建立在
永久关系基础上的。 参照完整性规则被设置在主表或子表的 触发器中。 规则的代码保存在数据库的存储过程中。 使用“参照完整性”生成器来建立。
相关文档
最新文档