




已阅读5页,还剩78页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VisualFoxPro第三章 索引 数据库 表 的概念及操作 3 6建立和使用索引 建立数据库和数据表之后 如何根据需求迅速得到数据库中的信息是设计数据库的一个重要问题 前面介绍的LIST LOCATE等命令是基于数据表的物理顺序检索记录 当文件很大时 检索要很长时间 如同字典的检索及图书的检索采用 索引 一样 VFP也提供索引 索引可以使记录数据按一定顺序排列 通过索引查询可以提高查询速度 索引还用于数据表之间建立关联 建立和使用索引 索引建立在索引文件中 索引是按含有关键字段的 索引关键字表达式 建立的 在索引文件中仅包含两项内容 一项是索引关键字表达式的值 另一项是与之对应的数据表记录号 如对人事档案数据表 RSDA DBF 以 编号 为 索引关键字表达式 建立的索引文件 建立和使用索引 在未建立索引文件之前 顺序访问数据表记录 是按记录的物理顺序移动记录指针 建立索引文件后 使记录数据按一定逻辑顺序排序 再顺序访问记录 将按记录索引的逻辑顺序移动记录指针 索引只是逻辑上的排序 但并没有改变原数据表记录的物理位置 索引文件是数据表文件的附属文件 不能脱离数据表文件单独使用 3 6 1建立索引 索引文件的类型VFP有三种索引文件 它们是结构复合索引文件 独立复合索引文件和单项索引文件 结构复合索引文件结构复合索引文件中可以建立多个索引 索引文件名与数据表同名 扩展名为 CDX 当打开数据表时结构复合索引文件会自动同时打开 当对数据表进行修改 增加 删除记录时 系统会自动维护结构复合索引文件中的索引 一个数据表只能建立一个结构复合索引文件 索引文件的类型 独立复合索引文件独立复合索引文件中可以建立多个索引 索引文件名与数据表不同名 扩展名为 CDX 独立复合索引文件使用时需要单独打开 打开后会随数据表得到维护 一个数据表可以建立多个独立复合索引文件 单项索引文件 单入口索引文件 单项索引文件中只能建立一个索引 索引文件名与数据表文件名无关 扩展名为 IDX 使用时也需要单独打开 一个数据表可以建立多个单项索引文件 单项索引文件可以与FoxBase索引文件兼容 VFP已很少使用 索引小结 索引文件类型 索引文件的索引类型 对表进行索引时VFP有四种索引类型 主索引 候选索引 普通索引 和唯一索引 在表的各记录中 其中主索引和候选索引的索引关键字不允许有重复值 而普通索引和唯一索引的索引关键字允许存在重复值 索引文件的索引类型 主索引主索引是指进行索引的字段或表达式在各记录中不允许有重复值的索引 即每个记录索引关键字的值必须是不重复才能建立主索引 一个数据表只能建立一个主索引 自由表不能创建主索引 主索引只能创建在结构复合索引文件中 主索引可决定数据表中记录的排序 还可确保字段中输入值的唯一性 主索引还在数据库各数据表之间建立 一对多关系 的基础 索引文件的索引类型 候选索引候选索引也不允许进行索引的字段或表达式在各记录中存在重复值 对于数据表或自由表都可以创建候选索引 而且可为一个表创建多个候选索引 候选索引也只能创建在结构复合索引文件中 一个数据表只能建立一个主索引 若改变主索引的索引字段或表达式 候选索引可以作为主索引的 候选 者 即只有候选索引具有升为主索引的资格 候选索引也可决定数据表记录的排序 以及确保字段中输入值的唯一性 但是不支持建立 一对多关系 如果数据表的某个关键字不是本表的主关键字 却是另外一个表的主关键字 则它称为本表的 外部关键字 该关键字可以建立候选索引 索引文件的索引类型 普通索引普通索引允许进行索引的字段或表达式在各记录中有重复值 因此不能控制字段中输入值的唯一性 但可以决定数据表记录的排序 在排序和查询时会列出所有符合条件的多条记录 数据表和自由表都可以创建普通索引 一个表允许建立多个普通索引 结构复合索引文件 独立复合索引文件及单入口索引文件中都可以创建普通索引 唯一索引唯一索引允许进行索引的字段或表达式在各记录中有重复值 但在索引文件中只存储重复值中第一次出现该值的记录号 而忽略其它重复值的记录号 产生 唯一 值的索引结果 其它性质同普通索引 索引文件的索引类型 建立结构复合索引文件 菜单方式先打开数据库 再打开数据表 在 表设计器 建立结构复合索引文件中的索引 在 显示 菜单中选择 表设计器 命令 或者单击右键在快捷菜单中选择 修改 命令 打开 表设计器 选择其中的 索引 标签 对索引各项进行定义 建立结构复合索引文件 菜单方式 在 索引 标签页对索引各项进行定义 排序 定义索引为升序或降序 索引名 为索引在索引文件中定义索引标记名 类型 从主索引 候选索引 普通索引 唯一索引中选择一种索引类型 表达式 指定进行索引的索引关键字表达式 可以是一个字段名 也可以是包含字段的索引表达式 建立结构复合索引文件 菜单方式 索引表达式 索引后 各记录将按索引表达式值排序 数值型数据按数值大小排序 字符型数据按其ASCII码值从左到右依次排序 日期型数据按日期先后排序 逻辑型数据按 T 大于 F 排序 当表达式中含有多个字段时 表达式各项的数据类型必须一致 若各字段数据类型不一致 一般通过转换函数STR 和DTOC 转换成字符型 组合成字符型索引表达式 字符型表达式按从左到右的顺序依次排序 建立结构复合索引文件 菜单方式 例如索引表达式 STR 基本工资 性别 DTOC 工作日期 已转换为字符型表达式 排序时先排 基本工资 基本工资相同排 性别 性别再相同排 工作日期 筛选 定义筛选条件 用关系表达式或逻辑表达式表示 只有满足条件的记录参加索引 若不设置筛选条件 将索引所有记录 建立后的索引可以修改 可以利用 插入 和 删除 按钮插入或删除索引 建立结构复合索引文件 命令方式 格式 INDEXONTAG FOR ASCENDING DESCENDING UNIQUE CANDIDATE ADDITIVE 功能 建立结构复合索引文件中的候选索引 唯一索引或普通索引标记 说明 ON 表达式 为索引关键字表达式 TAG 索引标记名 为该索引在结构复合索引文件中的标记名 FOR 条件表达式 定义筛选条件 只有满足条件的记录参加索引 建立结构复合索引文件 命令方式 格式 INDEXONTAG FOR ASCENDING DESCENDING UNIQUE CANDIDATE ADDITIVE ASCENDING DESCENDING 指定升序或降序索引 默认为升序索引 UNIQUE指定为唯一索引类型 CANDIDATE指定为候选索引类型 默认为普通索引类型 ADDITIVE 使已打开的索引文件保持打开状态 再添加新索引 缺省为关闭已打开的索引文件 建立新索引 建立结构复合索引文件 命令方式 该命令可以为结构复合索引文件增加主索引 也可以使用下面命令增加主索引 格式 ALTERTABLE 数据表文件名 ADDPRIMARYKEY 主关键字 TAG 索引标记名 功能 为结构复合索引文件增加主索引 建立独立复合索引文件 独立复合索引文件的扩展名也是 CDX 但是主文件名与数据表文件无关 是单独的 使用时需单独打开 经常使用的索引应建立在结构复合索引文件中 而不经常使用的索引可建立在独立复合索引文件中 在其中还可以建立普通索引和唯一索引 独立复合索引文件不能在 表设计器 中同表一起创建 只能使用命令建立 建立独立复合索引文件 格式 INDEXON 索引关键字表达式 TAG 索引标记名 OF 功能 创建独立复合索引文件及其中的索引 说明 ON 索引关键字表达式 指定按表达式建立索引 TAG指定索引标记名 OF指定索引建立在给出的独立复合索引文件中 若磁盘中没有给出的则建立该文件名的独立复合索引文件 若磁盘中已有该独立复合索引文件 则打开该文件添加的索引 建立独立复合索引文件 例如 USERSDA DBFINDEXON编号TAGBHOFRS CDXINDEXON性别 DTOC 工作日期 TAGXBGZRQOFRS CDX 建立单入口索引文件 单入口索引文件中只能建立一个索引 可以建立普通索引和唯一索引 只能用命令方式建立单入口索引文件 扩展名为 IDX 格式 INDEXON 索引关键字表达式 TO 文件名 IDX FOR 条件表达式 COMPACT UNIQUE ADTIVITE 说明 一个表可以为之建立多个单入口索引文件 COMPACT 创建压缩的单入口索引文件 复合索引文件都是压缩的 FoxBASE兼容非压缩单入口索引文件 UNIQUE 建立唯一索引 缺省建立普通索引 重新索引 当数据表打开时结构复合索引文件将自动打开 数据表在对记录进行修改 添加 删除等操作时 结构复合索引文件中的每个索引同时得到维护 独立复合索引文件和单入口索引文件使用时需要单独打开 而且是不经常使用的索引 若对数据表进行维护时 未打开这些索引文件 这些索引文件不会同时得到维护 就会产生 阴差阳错 为此就需要对索引文件再次重新索引 格式 REINDEX COMPACT 功能 对已打开的索引文件 根据数据表按建立索引时的要求重新索引 3 6 2索引文件的使用 对一个数据表可以建立多个索引 一种索引将生产一种排序方式 但这些索引不能同时对排序有效 只有指定一个索引为 主控索引 后 才使数据表产生逻辑顺序 在此之前访问数据表仍然按物理顺序 索引文件的使用 在结构复合索引文件中指定主控索引 菜单方式在为结构复合索引文件建立索引时 已为每个索引定义了索引标记 通过选择索引标记指定为主控索引 在 表 菜单中选择 属性 命令 出现 工作区属性 对话框 一个工作区只打开一个数据表 工作区属性即工作区中的数据表属性 在 索引顺序 项的下拉列表中 选择一个索引标记为主控索引 决定索引顺序 索引文件的使用 命令方式指定主控索引 格式一 USE 数据表名 ORDER TAG 索引标记名 ASCENDING DESCENDING 格式二 SETORDERTO TAG 索引标记名 ASCENDING DESCENDING 功能 指定结构复合索引文件中的主控索引 说明 格式一是打开数据表的同时指定结构复合索引文件的主控索引 格式二是打开数据表后指定主控索引或调整主控索引 无可选项取消主控索引 ASCENDING DESCENDING 重新指定排序顺序 索引文件的使用 打开独立复合索引文件且指定主控索引 格式一 USE 数据表名 INDEX 索引文件名表 ORDER TAG 索引标记名 OF 独立复合索引文件名 ASCENDING DESCENDING 说明 打开数据表并同时打开多个独立复合索引文件及单入口索引文件 还可以指定某索引标记为主控索引 OF 独立复合索引文件名 表示索引标记在独立复合索引文件中 缺省表示索引标记在结构复合索引文件中 索引文件的使用 格式二 SETINDEXTO 索引文件名表 ORDER TAG OF ASCENDING DESCENDING 说明 单独打开多个索引文件 并可同时指定主控索引标记 格式三 SETORDERTO TAG OF 独立复合索引文件名 ASCENDING DESCENDING 说明 指定或调整主控索引 OF 独立复合索引文件名 表示索引标记在独立复合索引文件中 缺省表示索引标记在结构复合索引文件中 索引文件的使用 打开单入口 IDX索引文件 格式一 USE 表文件名 INDEX 索引文件名表 格式二 SETINDEXTO 索引文件名表 说明 格式一 打开表文件同时打开多个索引文件 包括单入口索引文件和独立复合索引文件 格式二 是在打开表文件后再打开索引文件 索引文件的使用 打开索引文件时 文件名写在 索引文件名表 第一位的单入口索引文件 为主控索引文件 也可以用命令单独指定主控索引 格式三 SETORDERTO 数值表达式 IDX索引文件名 说明 数值表达式 的值指定打开索引文件时 排列在索引文件名表第几位的单入口索引文件为主控索引文件 也可直接指定主控索引的 IDX索引文件 索引小结 格式 INDEXONTO 文件名 IDX TAG OF FOR ASCENDING DESCENDING UNIQUE CANDIDATE ADDITIVE 格式 USE 数据表名 INDEX 索引文件名表 ORDER TAG OF 独立复合索引文件名 ASCENDING DESCENDING 索引小结 格式二 SETINDEXTO 索引文件名表 ORDER TAG OF ASCENDING DESCENDING 格式三 SETORDERTO 数值表达式 IDX索引文件名 TAG OF 独立复合索引文件名 ASCENDING DESCENDING 3 6 2索引文件的使用 关闭索引文件 格式一 USE 格式二 SETINDEXTO 格式三 CLOSEINDEX说明 USE命令关闭数据表文件并关闭与之同时打开的所有索引文件 格式二 三均关闭当前表的所有索引文件 结构复合索引文件与数据表同时关闭 控制输入值不重复主索引和候选索引都能确保字段输入值的唯一性 为了控制某字段的输入值不重复 除了要将该字段建立主索引或候选索引外 还应使该索引为主控索引 索引文件的使用 6 索引查询对数据表记录指针的定位 采用菜单方式通过 表 菜单 转到记录 级联菜单中的 定位 命令 实现带FOR条件的定位 或者通过LOCATEFOR 条件表达式 命令 实现FOR定位 这都是在数据表中直接查找符合某一条件的记录 索引查询是利用索引文件进行查询 由于索引已排序 索引文件内容又少 故查询快捷 由于索引文件是按索引关键字表达式建立的 故索引查询是对给出的索引关键字表达式值进行查询 索引查询 用FIND命令对索引文件进行查询 格式 FIND 常量 功能 将记录指针定位于索引关键字表达式值与给定常量匹配的第一个记录上 说明 在使用FIND命令之前 要打开相应的索引文件 并使被查询的索引成为主控索引 FIND命令只能对常量进行查询 不能对表达式进行查询 因此使该命令的使用受到限制 索引查询 用SEEK命令对索引文件进行查询 格式 SEEK 表达式 功能 在索引文件的关键字表达式值中查找与给定的 表达式 值相匹配的第一条记录 说明 该命令可以查找数值 字符 日期 逻辑类型的数据 表达式可以由常数 变量 函数组成 SEEK和FIND命令在程序中可用FOUND 和EOF 函数测试是否查找到 若找到FOUND 为 T EOF 为 F 若查找的数据可能有多条相同数据的记录 可以用SKIP命令配合查找 但是下一条记录是否符合查找要求 还需要判断 SEEK命令索引查询 例如 OPENDATABASE人事管理 DBCUSERSDA DBFORDERTAGBHSEEK 03001 DISPLAYSETORDERTOTAGZCSEEK 讲师 DISPLAYSKIPDISPLAYCLOSEDATABASE 3 7数据表统计与汇总 3 7 1数据表求和及求平均值对数据表每个记录内的横向数据运算用 替换字段数据 的操作来实现 可采用菜单方式或使用REPLACE替换命令 对数据表数值字段纵向求和及求平均值可以使用命令完成 3 7 1数据表求和及求平均值 格式一 SUM 表达式表 范围 FOR WHILE TO TOARRAY 数组名 格式二 AVERAGE 表达式表 FOR WHILE TO TOARRAY 数组名 说明 SUM对数值字段求和 AVERAGE求平均值 指定的一个或多个包含数值字段的表达式 求和或求平均值 缺省则对所有数值字段运算 命令可以将运算结果存储到对应的内存变量或数组变量中 在程序中可以利用这些变量 缺省时只在屏幕显示出来 默认为ALL 数据表求和及求平均值 例 USERSGZ DBFSUM实发工资 基本工资 12TOSFGZ NJBGZAVERAGE基本工资TOJBGZUSE 3 7 2统计记录个数 格式 COUNT FOR WHILE TO 功能 统计当前表中指定范围内符合条件的记录数 例 USERSDA DBFCOUNTTONOCOUNTFOR性别 男 AND 职称 教授 TONJSUSE 3 7 3分类汇总 在实际应用中经常需要对同类数据分组求和 分类汇总 数据表的分类汇总是先按要求把数据分类 再把同一类数据中连续排列的各条记录 对数值型字段分别求和 形成一条新记录 并写到新数据表中形成汇总数据表 如 某商店各班组每天的销售额已统计在XSE DBF数据表中 该数据表有 月份 型 日期 型 班组 型 和销售额 型 等字段 根据需要可能要统计 每月全商店的销售总额 每月各班组的销售额 全年全商店的销售总额 全年各班组的销售额等等 通过使用数据表的分类汇总命令 可以很方便快捷地实现以上统计工作 分类汇总 格式 TOTALONTO FIELDS FOR WHILE 功能 在当前数据表中 分别对具有相同关键字表达式值的连续记录 对数值字段求和 产生一个新纪录汇总到新表中 说明 1 在对数据表汇总之前 应该根据分类汇总的要求对数据表索引 并指定为主控索引 索引一般与汇总用同一个 但是也可以不相同 总之必须保证同类数据的记录连续排列 2 FIELDS短语指定需要汇总的数值字段 缺省则汇总所有数值型和货币型字段 不汇总的字段在纪录中取连续排列的首记录字段值 分类汇总 举例 见前例 某商店各班组每天的销售额已统计在XSE DBF数据表中 该数据表有 月份 型 日期 型 班组 型 和销售额 型 等字段 统计 每月全商店的销售总额 每月各班组的销售额 全年全商店的销售总额 全年各班组的销售额 USEXSE DBFINDEXON月份TOYF IDXTOTALON月份TOYZXSE DBF 每月全商店销售额INDEXON月份 班组TOYFBZ IDXTOTALON月份 班组TOYBZXSE DBF 每月各班组销售额INDEXON班组TOBZ IDXTOTALON班组TONBZXSE DBF 全年各班组销售额USE 分类汇总 以上是索引和汇总为同一个 但是在满足使汇总的关键字表达式值相同记录连续排列在一起的前提下 汇总可以与索引不同 也可以在汇总之前不对数据表索引 例如 USEXSE DBFINDEXON月份 班组TOYFBZ IDXTOTALON月份TOYZXSE DBF 每月全商店销售额TOTALON班组TOYBZXSE DBF 每月各班组销售额INDEXON班组TOBZ IDXTOTALON班组TONBZXSE DBF 全年各班组销售额CLOSEINDEXTOTALON NOT EOF TOZXSE DBF 全年全商店销售额USE 3 7 4数据表的复制 格式 COPYTO FOR WHILE FILES DATABASE NAME WITH CDX WITH PRODUCTION SDF 功能 将打开的数据表复制成一个数据表 自由表 文本格式的文件 Excel电子表格等 说明 无任何可选项 是将当前数据表原样复制到的自由表中 当选择 DATABASE 短语则复制到的数据库中 利用 NAME 短语可以给出表长文件名 选择CDX或PRODUCTION是将结构复合索引文件一起复制 若给出 SDF 短语则复制为扩展名为 TXT的系统文本格式文件 3 8使用多表 前面有关对数据表的操作都是针对一个数据表进行的 实际中一个数据库系统的数据库是由多个数据表组成 例如 学籍管理数据库系统 任课老师为自己授课的每班建立一个数据表 统计期末考试成绩 这样对于一个班 本学期开设了几门课就对应几个数据表 最后根据这几个表可以汇总成一个总表 表中除包含 学号 姓名 字段外 还包含各门课程的考试成绩 这就是多表操作 此外 通过学生基本信息数据表进行多表操作 也可以查询到每个学生各科的考试成绩 3 8 1工作区编号及别名 数据表是以文件形式存储在磁盘上 但是对数据表的操作是在内存进行 在内存中开辟一个空间区域专门处理数据表 称为工作区 1 工作区的性质 1 在每一个工作区中只能打开一个表 VFP最多可以开辟32767个工作区 打开32767个表 允许一个表在几个工作区中同时打开 2 在某一时刻只能选择一个工作区为 当前工作区 对其中的表进行操作 系统初始状态默认1号工作区为当前工作区 工作区编号及别名 工作区性质 3 每一工作区打开的数据表都有各自的记录指针 在一般情况下 对数据表的操作只能移动当前工作区的记录指针 当使得数据表之间建立临时关系以后 另一工作区的记录指针才能根据要求伴随当前工作区的记录指针作相应的移动 4 内存变量对各工作区是公用的 每一工作区的字段变量对其它各工作区也是公用的 在任意工作区都可以对其它工作区的当前记录进行读 写操作 工作区编号及别名 工作区的编号和别名为了标识每一个工作区 系统给每一工作区编号码为1 2 32767 同时还为工作区规定了别名 其中1至10号工作区别名为A B J 11至32767号工作区别名为W11 W12 W32767 系统所定义的别名不能单独作为表名使用 数据表别名 数据表别名在打开数据表的同时 可以为数据表定义一个别名 这个别名也作为打开该数据表的工作区别名 格式 USE ALIAS IN AGAIN 说明 ALIAS为打开的数据表定义别名 也作为该工作区的另一别名 若不使用此短语定义别名 系统则默认数据表名 不包括扩展名 为别名 数据表别名 格式 USE ALIAS IN AGAIN IN短语可以在非当前工作区打开数据表 指定工作区号 0表示在最低的可用工作区中 也可以用工作区别名指定工作区 AGAIN表明再一次打开在其他工作区已经打开的数据表 以便数据表自身建立临时关系 3 8 2工作区的选择和使用 菜单方式选择 窗口 菜单中的 数据工作期 命令 或单击常用工具栏中的 数据工作期窗口 按钮 打开 数据工作期 窗口 这时默认当前工作区为1 单击 打开 按钮选择一个数据表打开 若再次单击 打开 按钮 可以依次在其它工作区打开其它数据表 并且可以在显示的别名选择工作区 在数据工作期窗口还可以浏览各工作区打开的数据表 还可以关闭他们 工作区的选择和使用 命令方式 格式 SELECT 说明 选择当前工作区 选择的工作区中可以是在前面已经打开了数据表 也可以是未曾打开表 使用非当前工作区表的数据在当前工作区使用其它工作区表中的字段变量时 应在字段变量名前冠以别名标识 格式 或 3 8 3建立表间的临时关系 使用两个或多个工作区中的数据表 记录指针之间建立起一定的逻辑关系 在建立了表间的临时关系以后 就会使得其它工作区中表 子表 的记录指针 按照给定的逻辑关系跟随当前工作区中表 父表 的记录指针移动 临时关系也称 关联 表间建立临时关系后 便允许当父表选择一个记录时 会自动去访问表关联中的一个或多个子表的相关记录 建立表间的临时关系 表间建立的临时关系是临时性的 关闭表后临时关系不复存在 但是创建了一个使用多个表的表单 再使用数据环境创建表关系 并把它们和表单存储在一起 这样运行表单时 在数据环境中建立的关系会自动打开 还可以在单个表中创建记录间的临时关系 即自引用关系 为此 应该在其它工作区再一次打开同一表 并在两个工作区之间创建同一表的临时关系 记录间 建立表间的临时关系 建立临时关系说明 建立临时关系是在各数据表记录指针之间建立一定的逻辑关系 建立临时关系时 在父表和子表中把所要建立的逻辑关系 即临时关系 用表达式表示出来 在子表中 为了使子表记录指针跟随父表记录指针移动 子表中要通过索引查寻 找到符合逻辑关系的记录 并将指针定位在该记录 为此在子表应该索引 索引表达式就是建立逻辑关系 临时关系 的表达式 并将该索引指定为主控索引 在父表中 要指定建立临时关系的表达式 该表达式与子表的索引表达式 对临时关系具有同一逻辑含义 可以是同一表达式 也可以不是同一表达式 建立临时关系说明 建立临时关系以后 父表和子表记录指针的移动 将一直保持父表的临时关系表达式值与子表的索引表达式值相等 即父表指针每移动到一个记录便产生一个临时关系表达式的值 子表则按该表达式值进行索引查找 并将记录指针定位在相应记录上 通常这两个表个具有相同字段 而且用来建立临时关系的表达式 就是子表主控索引的索引表达式 建立临时关系可以采用菜单方式 也可以采用命令方式 建立表间的临时关系 菜单方式选择 窗口 菜单中 数据工作期 命令 在该窗口中用 打开 按钮在不同工作区打开准备建立临时关系的表 首先在 别名 框中选定父表 单击 关系 按钮 关系 框中出现父表别名的显示 再选定一个子表 这时会弹出 设置索引顺序 对话框 为子表指定主控索引 按 确定 后 弹出 表达式生成器 在SETRELATION文本框中输入父表建立临时关系的表达式 便完成了建立临时关系 建立表间的临时关系 命令方式 格式 SETRELATIONTO INTO INTO ADDITIVE 功能 建立当前工作区的表 父表 与另外工作区的表 子表 的临时关系 建立表间的临时关系 说明 TO短语 指定建立临时关系的表达式 当表达式为时 建立关系的子表必须按能够建立起临时关系的关键字表达式索引 并设置为主控索引 当短语为 则子表不必索引 子表是以数值表达式的值为记录号建立关系 一个父表可以与多个子表建立关系 ADDITIVE短语是添加新的关系 而不关闭先前的关系 建立表间的临时关系 SETRELATIONTO将取消当前表与各工作区的临时关系 也可以用SETRELATIONTO取消与指定工作区已建立的临时关系 举例 将英语成绩YYCJ DBF表中的 英语 成绩 计算机成绩JSJCJ DBF表中的 计算机 成绩 都统计到各科成绩GKCJ DBF表中 三个表都含有 学号 字段 且YYCJ DBF和GKCJ DBF表都已按 学号 字段索引 3 8 4创建表间的永久关系 永久关系永久关系是存储在数据库文件 DBC 中的数据表之间的关系 它作为数据库的组成部分一直保留 它不像临时关系每次打开数据表时都要重新建立 数据库中的数据表建立永久关系后 借助这种关系不仅仅从当前选定的表中访问数据 而且还可以访问相关数据表中的数据 当在查询设计器 视图设计器 表单设计器中的数据环境中使用这些数据表时 这些永久关系将作为这些表之间的默认连接关系自动出现 而且以后使用查询文件 视图文件及表格文件时 这些永久关系也自动把相关数据表连接起来 创建表间的永久关系 与永久关系的作用不同 临时关系是控制表之间记录指针的连动关系 永久关系不具有这个功能 而是使相关数据建立连接关系 在永久关系中还可以建立参照完整性 对各数据表之间进行完整性约束 创建表间的永久关系 表之间关系的类型表与表之间的关系实际上就是 按照某一关键字建立的几个数据表之间相关记录的关系 根据一个表中的记录与另一表中相关记录之间的对应数量关系 关系的类型可分为 一对一关系 是指一个表中的一个记录与另一表中的唯一记录相关联 一对多关系 是指一个表中的一个记录与另一表中的多个记录相关联 但另一表中的一个记录则只能与这个表中的唯一记录相对应 创建表间的永久关系 多对多关系 是指一个表中的多个记录与另一表中的多个记录相关联 在关系数据库设计时 应避免将表设计成 多对多关系 通过数据规范化设计将 多对多关系 转换成 一对多关系 来建立数据库 也可以在两个表间建立一个连接表 两个表分别和连接表建立一对多关系 间接实现多对多关系 创建表间的永久关系 创建表间的永久关系建立永久关系的表可以从逻辑上分为 父表 又称 主表 和 子表 又称相关表 一个父表可以关联多个子表 而每个子表只能关联一个父表 在一对多关系中 一方 应该是父表 多方 应该是子表 创建永久关系时 父表必须使用 主索引 或 候选索引 索引类型 子表在一对一关系中使用 主索引 或 候选索引 索引类型 在一对多关系中使用 普通索引 或 唯一索引 索引类型 创建表间的永久关系 在VFP中是使用索引在数据库中建立表间的永久关系 这样通过索引表达式使数据表之间形成关联 创建永久关系是在 数据库设计器 中进行 打开一个数据库时 数据库设计器 自动打开 选择想要关联的索引 然后用鼠标把它拖到相关表的索引名上即生成 创建表间的永久关系 举例 在学生管理 DBC数据库中 有XSDA DBF学生档案数据表 按 学号 字段主索引 还有 GKCJ DBF各科成绩数据表 按 学号 字段主索引 YYCJ DBF英语成绩数据表 按 学号 字段候选索引 JSJCJ DBF计算机成绩数据表 按 学号 字段唯一索引 XXCJ DBF选修成绩数据表 按 学号 字段普通索引 创建表间的永久关系 都通过 学号 索引建立永久关系 其中 XSDA DBF与GKCJ DBF建立一对一关系 与XXCJ DBF建立一对多关系 GKCJ DBF与YYCJ DBF建立一对一关系 与JSJCJ DBF建立一对多关系 打开 学生管理 dbc 数据库 在 数据库设计器 中建立 创建表间的永久关系 编辑数据表之间的永久关系 打开 数据库设计器 打开一个数据库时 数据库设计器 自动打开 鼠标单击表间的关联线 连线变粗 再单击右键在快捷菜单中选择 编辑关系 或 删除关系 快捷菜单也可以通过双击关联线弹出 数据表之间的永久关系在使用查询文件 视图文件 表单文件时将得到应用 3 8 5参照完整性 在数据表之间的永久性关系中建立参照完整性 就是在关系中生成一系列完整性约束规则 以便在修改 增加或删除相关联表中的记录时 参照完整性将起作用 保持已定义的表间关系 以保证数据库的完整性和数据的一致性 当实施了参照整性规则 可以确保 当主表 父表 中没有所关联的记录时 这记录不得添加到相关表 子表 中 否则主表没有关联记录与之对应 主表关键字段 建立永久关系的索引字段 的值不得单方面更改 否则相关表将没有关联记录与之对应 若主表某记录在相关表中有匹配记录 则主表记录不能被删除 参照完整性 建立参照完整性建立参照完整性是在 参照完整性生成器 中完成 首先打开数据库 在 数据库设计器 中选择某一关联线 表示永久性关系 单击右键或双击关联线 弹出快捷菜单 选择 编辑参照完整性 打开 参照完整性生成器 也可以在 数据库 菜单选择 参照完整性 命令进入 参照完整性生成器 在 参照完整性生成器 窗口中 以列表显示出数据库 DBC 中的所有永久性关系 每一关系为一条记录 建立参照完整性 在列表中还显示每一关系的 父表名 子表名 父表索引标记 子表索引标记 以及对关系中的数据表记录进行更新 删除 插入时 参照完整性的规则类型 参照完整性的规则类型分别是 级联 限制 和 忽略 这三种规则类型在对记录进行更新 删除 插入时的含义是不同的 在选择规则类型时 分别给出说明 建立参照完整性 在 参照完整性生成器 窗口中为每一关系定义参照完整性规则 有两种方法 依次选择每一个关系 并分别在 更
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 流程图格式转换指南
- 商业街物业管理合同续签及商业活动支持协议
- 精细化管理型私人小企业员工考勤管理合同
- 小学美术培训课件
- 潮流门店分享课件
- 企业环保员工培训
- 幼儿手工彩虹课件
- 人物速写面试课件
- 吸虫与绦虫课件
- 皮划艇技术测试题及答案
- DZ/T 0430-2023 固体矿产资源储量核实报告编写规范(正式版)
- 2024年海南省中职教师技能大赛-新能源汽车维修 赛项规程
- 人美版六年级上册美术教案完整版
- (正式版)YBT 072-2024 方坯和圆坯连铸结晶器
- 广东高职高考数学题分类
- 建筑外观设计设计理念
- 部编人教版一年级上册道德与法治全册教案
- 乳牙根管治疗的护理配合
- 新概念二单词表
- 突发性耳聋演示课件
- 《雅思阅读技巧》课件
评论
0/150
提交评论