第五章 数据库综合操作第 5 章数据库数据库综合操作数据库应用往往涉及到多个表 。
第五章 数据库综合操作
5.1 索引及索引类型
5.1.1 索引
5.1.2 索引的类型
5.1.3 索引文件及其分类
5.2 创建索引与索引的使用
5.2.1 用表设计器创建索引
5.2.2 用命令方式创建索引
5.2.3 使用索引
5.3 数据库中多表的使用
5.3.1 工作区
5.3.2 工作区选择教学内容第五章 数据库综合操作
5.4 建立表间的关系
5.4.1 建立表间永久关系
5.4.2 设置参照完整性
5.4.3 建立表间临时关系教学内容第五章 数据库综合操作
1,记录的物理顺序
Visual FoxPro 中表文件的记录号是按记录输入时的先后顺序给定的,我们把这种顺序称为记录的物理顺序 。
2,记录的逻辑顺序
Visual FoxPro 中表的索引和一本书中的索引类似 。 书中的索引是一份页码的列表,指向书中的页号 。 表的索引按某种规则对记录进行逻辑排序,是一个记录号的列表,指向待处理的记录,并确定了记录的处理顺序 。
5.1 索引及索引类型
5.1.1 索引第五章 数据库综合操作
3,索引索引不是重排记录的物理顺序生成一个新的表文件,而是选定一个关键字,根据关键字的值对记录进行逻辑排序 。 按关键字值的顺序记录此关键字值所在记录的记录号 。
当表文件打开时,若对应索引文件也已打开,表中记录的输出顺序就是在索引文件中的顺序,称为记录的逻辑顺序 。
索引可以加速检索数据的速度 。
第五章 数据库综合操作
5.1.2 索引的类型
1,主索引
数据库中的每一个表建立一个主索引,且一个表只能创建一个主索引 。
不能为自由表建立主索引
2,候选索引
3,唯一索引
4,普通索引第五章 数据库综合操作
5.1.3 索引文件及其分类
1,结构复合压缩索引文件
以,CDX为扩展名
在打开表时自动打开,此文件在对表进行修改时,能自动更新 。
2,非结构复合压缩索引文件
3,独立索引文件第五章 数据库综合操作
5.2 创建索引与索引的使用
1.设置普通索引
命令格式,INDEX ON <关键字表达式 > TAG <标识名 > [FOR
<条件表达式 >] [ASCENDING|DESCENDING]
命令功能:创建一个复合索引文件。
说明:
(1)复合索引标识是一种可以包含任意数量的独立标识(索引项)的单个索引文件,每一个标识都由其惟一标识名确定。
5.2.1 用表设计器创建索引
5.2.2 用命令方式创建索引使用索引第五章 数据库综合操作
(2)FOR <条件表达式 >短语:用于建立有条件筛选索引 。 即只有符合 FOR条件的记录才会出现在索引文件关键字值列表中 。
(3)ASCENDING|DESCENDING短语:用于指定索引的排序方式,
其中 ASCENDING表示按升序排列,DESCENDING表示按降序排列。默认值为 ASCENDING。
2.设置唯一索引
3.建立非结构索引文件
命令格式,INDEX ON <关键字表达式 > TAG <标识名 > OF
<非结构复合索引文件名 > [FOR 条件表达式 ]
[ASCENDING|DESCENDING]
说明:在非结构复合索引文件中可有多个标识。
第五章 数据库综合操作
4,建立独立结构索引文件
命令格式,INDEX ON <关键字表达式 > TO <IDX索引文件名 > [FOR 条件表达式 ] [ASCENDING|DESCENDING]
说明:用此命令建立独立结构索引文件后,该文件自动处于打开状态并作为当前索引生效 。
第五章 数据库综合操作
5.2.3 使用索引
1,菜单方式
2,指定多个字段对记录排序
3,使用不同索引类型的选择
4.命令方式使用索引
命令格式:
SET INDEX TO [<索引文件名表 >|? ] [ORDER <索引号 >|<IDX
索引文件名 >] | [TAG ] <标识名 > [OF <CDX索引文件名 >]
[ASCENDING | DESCENDING]
命令功能:打开一个或多个索引文件。
第五章 数据库综合操作命令使用说明:
( 1) <索引文件名表 >用于指定要打开的一个或多个索引文件 。
这些索引文件彼此之间用逗号隔开 。 在索引文件列表中可以指定独立结构索引文件或非结构复合索引文件 。 另外,索引文件列表中指定第一个索引文件自动作为当前索引生效 。 但要注意的是,如果在索引文件列表中指定的第一索引是非结构复合索引,那么若要作为当前索引生效还需要使用 ORDER短语或 SET
ORDER TO 命令 。
( 2)? 用于在执行 SET INDEX TO命令时弹出,打开,对话框以选择要打开的索引文件 。
( 3) ORDER <索引号 >用于指定在索引文件列表中第几个索引文件作为当前索引生效 。
第五章 数据库综合操作命令使用说明:
( 4) ORDER <IDX索引文件名 >用于指定在 <索引文件列表 >中哪一个独立结构索引文件为当前索引 。
( 5) ORDER <标识名 > [OF <CDX索引文件名 >]用于指定在 <索引文件列表 >中哪一个复合索引标识作为当前索引 。
( 6) [ASCENDING | DESCENDING]用于指定复合索引中的某一索引标识是按照升序还是降序方式显示记录 。
( 7) 若 SET INDEX TO后不带任何参数表示关闭索引文件 。
( 8) 在 Visual Foxpro中如果用户已同时打开了某一个表的多个索引文件,但在任何一个时刻只能有一个索引文件作为当前索引文件生效 。 若要改变当前索引可以使用 SET ORDER TO命令来设置当前索引 。
第五章 数据库综合操作
命令格式,SET ORDER TO [<索引号 >| <IDX索引文件名 >] |
[TAG ] <标识名 > [OF <CDX索引文件名 >] [ASCENDING |
DESCENDING]
功能:设置当前索引。
第五章 数据库综合操作
5,3 数据库中多表的使用
5.3.1 工作区
1.工作区工作区是 Visual FoxPro在内存中开辟的能独立地使用命令对一个数据库文件进行操作的一块区域 。
2.工作区号与工作区别名
Visual FoxPro6.0中最多能同时打开 32767个工作区工作区的别名前十个为 A,B,…,J,对于工作区 11到 32767,
自动指定的别名是 W11到 W32767。
当前工作区与当前表当 Visual FoxPro系统启动后,自动选择 1号工作区为当前工作区 。
第五章 数据库综合操作
3.用户定义的别名
命令格式,USE 〈 表文件名 〉 [ALIAS〈 别名 〉 ] [AGAIN]
命令功能:打开一个表 。
说明:
( 1) 若无 ALIAS短语,以表文件名作为别名 。
( 2) AGAIN短语,表示表文件可在多个工作区中同时被打开。
第五章 数据库综合操作
5.3.2 工作区选择
1.命令方式
命令格式,SELECT 〈 工作区号 〉 |〈 工作区别名 〉
功能:选择某工作区为当前工作区。
2.菜单方式第五章 数据库综合操作
5,4 建立表间的关系
5.4.1 建立表间永久关系
1,表的关系表的关系可分为一对一关系,一对多关系和多对多关系 。
2,表间关系的类别在 Visual FoxPro中,表间关系分为临时表间关系和永久表间关系两种 。
第五章 数据库综合操作
5.4.2 设置参照完整性
( 1) 级联:不论何时更改父表中的某个字段,Visual
FoxPro 都会自动更改所有相关子表记录中的对应值 。
( 2) 限制:禁止更改父表中的主关键字段或候选关键字段中的值,这样在子表中就不会出现孤立的记录 。
( 3) 忽略:即使在子表中有相关的记录,仍允许更新父表中的记录 。
第五章 数据库综合操作
5.4.3 建立表间临时关系命令方式建立关系
命令格式,SET RELATION TO
[〈 关系表达式 1〉 INTO 〈 工作区号 1〉 |〈 别名 1〉
[,〈 关系表达式 2〉 INTO 〈 工作区号 2〉 |〈 别名 2〉 … ]
[IN 〈 工作区号 〉 |〈 别名 〉 ] [ADDITIVE]
功能:建立两个打开的表之间的关系。
第五章 数据库综合操作
〈 关系表达式 〉 可以是:
( 1) 关键字表达式:指定在父表和子表之间建立关系的关系表达式 。 子表必须按关键字建立索引,且索引必须是主索引 。 索引形式不限,可以是复合索引,也可以是普通索引 。
( 2) 数值表达式:两表按照记录号相联系,子表不必排序或索引 。
当父表记录指针移动时,子表的记录指针指向与数值表达式值相匹配的记录上 。 例如,SET RELATION TO 2*RECNO( ) INTO YK,则父表的记录号为 1与别名为 YK的子表记录号为 2的关系,父表记录号为 3与 YK的记录号为 6的记录关系 … 。
第五章 数据库综合操作
INTO 〈 工作区号 1〉 |〈 别名 1〉,指定非当前工作区中的子表 。
〈 关系表达式 2〉 INTO 〈 工作区号 2〉 |〈 别名 2〉 …,指定其他关系表达式和其他子表,建立另一个父表和子表之间的关系 。 在一条
SET RELEATION命令中可以创建单个父表与多个子表之间的关系,各关系之间用逗号隔开 。
[IN 〈 工作区号 〉 |〈 别名 〉 ]:指定父表所在的工作区 。
ADDITIVE表示建立新关系时,当前工作区中先前建立的关系仍保留,
无此项则表示失效 。
说明:在建立关系之前,必须打开一个表 ( 父表 ),而且还必须在另一个工作区内打开其他表 ( 子表 ) 。 建立关系的各表之间通常有一个相同的字段,即使字段名不同,数据类型必须相同 。
若要切断数据表间的关系,可用命令 SET RELATION TO 。
第五章 数据库综合操作
5.1 索引及索引类型
5.1.1 索引
5.1.2 索引的类型
5.1.3 索引文件及其分类
5.2 创建索引与索引的使用
5.2.1 用表设计器创建索引
5.2.2 用命令方式创建索引
5.2.3 使用索引
5.3 数据库中多表的使用
5.3.1 工作区
5.3.2 工作区选择教学内容第五章 数据库综合操作
5.4 建立表间的关系
5.4.1 建立表间永久关系
5.4.2 设置参照完整性
5.4.3 建立表间临时关系教学内容第五章 数据库综合操作
1,记录的物理顺序
Visual FoxPro 中表文件的记录号是按记录输入时的先后顺序给定的,我们把这种顺序称为记录的物理顺序 。
2,记录的逻辑顺序
Visual FoxPro 中表的索引和一本书中的索引类似 。 书中的索引是一份页码的列表,指向书中的页号 。 表的索引按某种规则对记录进行逻辑排序,是一个记录号的列表,指向待处理的记录,并确定了记录的处理顺序 。
5.1 索引及索引类型
5.1.1 索引第五章 数据库综合操作
3,索引索引不是重排记录的物理顺序生成一个新的表文件,而是选定一个关键字,根据关键字的值对记录进行逻辑排序 。 按关键字值的顺序记录此关键字值所在记录的记录号 。
当表文件打开时,若对应索引文件也已打开,表中记录的输出顺序就是在索引文件中的顺序,称为记录的逻辑顺序 。
索引可以加速检索数据的速度 。
第五章 数据库综合操作
5.1.2 索引的类型
1,主索引
数据库中的每一个表建立一个主索引,且一个表只能创建一个主索引 。
不能为自由表建立主索引
2,候选索引
3,唯一索引
4,普通索引第五章 数据库综合操作
5.1.3 索引文件及其分类
1,结构复合压缩索引文件
以,CDX为扩展名
在打开表时自动打开,此文件在对表进行修改时,能自动更新 。
2,非结构复合压缩索引文件
3,独立索引文件第五章 数据库综合操作
5.2 创建索引与索引的使用
1.设置普通索引
命令格式,INDEX ON <关键字表达式 > TAG <标识名 > [FOR
<条件表达式 >] [ASCENDING|DESCENDING]
命令功能:创建一个复合索引文件。
说明:
(1)复合索引标识是一种可以包含任意数量的独立标识(索引项)的单个索引文件,每一个标识都由其惟一标识名确定。
5.2.1 用表设计器创建索引
5.2.2 用命令方式创建索引使用索引第五章 数据库综合操作
(2)FOR <条件表达式 >短语:用于建立有条件筛选索引 。 即只有符合 FOR条件的记录才会出现在索引文件关键字值列表中 。
(3)ASCENDING|DESCENDING短语:用于指定索引的排序方式,
其中 ASCENDING表示按升序排列,DESCENDING表示按降序排列。默认值为 ASCENDING。
2.设置唯一索引
3.建立非结构索引文件
命令格式,INDEX ON <关键字表达式 > TAG <标识名 > OF
<非结构复合索引文件名 > [FOR 条件表达式 ]
[ASCENDING|DESCENDING]
说明:在非结构复合索引文件中可有多个标识。
第五章 数据库综合操作
4,建立独立结构索引文件
命令格式,INDEX ON <关键字表达式 > TO <IDX索引文件名 > [FOR 条件表达式 ] [ASCENDING|DESCENDING]
说明:用此命令建立独立结构索引文件后,该文件自动处于打开状态并作为当前索引生效 。
第五章 数据库综合操作
5.2.3 使用索引
1,菜单方式
2,指定多个字段对记录排序
3,使用不同索引类型的选择
4.命令方式使用索引
命令格式:
SET INDEX TO [<索引文件名表 >|? ] [ORDER <索引号 >|<IDX
索引文件名 >] | [TAG ] <标识名 > [OF <CDX索引文件名 >]
[ASCENDING | DESCENDING]
命令功能:打开一个或多个索引文件。
第五章 数据库综合操作命令使用说明:
( 1) <索引文件名表 >用于指定要打开的一个或多个索引文件 。
这些索引文件彼此之间用逗号隔开 。 在索引文件列表中可以指定独立结构索引文件或非结构复合索引文件 。 另外,索引文件列表中指定第一个索引文件自动作为当前索引生效 。 但要注意的是,如果在索引文件列表中指定的第一索引是非结构复合索引,那么若要作为当前索引生效还需要使用 ORDER短语或 SET
ORDER TO 命令 。
( 2)? 用于在执行 SET INDEX TO命令时弹出,打开,对话框以选择要打开的索引文件 。
( 3) ORDER <索引号 >用于指定在索引文件列表中第几个索引文件作为当前索引生效 。
第五章 数据库综合操作命令使用说明:
( 4) ORDER <IDX索引文件名 >用于指定在 <索引文件列表 >中哪一个独立结构索引文件为当前索引 。
( 5) ORDER <标识名 > [OF <CDX索引文件名 >]用于指定在 <索引文件列表 >中哪一个复合索引标识作为当前索引 。
( 6) [ASCENDING | DESCENDING]用于指定复合索引中的某一索引标识是按照升序还是降序方式显示记录 。
( 7) 若 SET INDEX TO后不带任何参数表示关闭索引文件 。
( 8) 在 Visual Foxpro中如果用户已同时打开了某一个表的多个索引文件,但在任何一个时刻只能有一个索引文件作为当前索引文件生效 。 若要改变当前索引可以使用 SET ORDER TO命令来设置当前索引 。
第五章 数据库综合操作
命令格式,SET ORDER TO [<索引号 >| <IDX索引文件名 >] |
[TAG ] <标识名 > [OF <CDX索引文件名 >] [ASCENDING |
DESCENDING]
功能:设置当前索引。
第五章 数据库综合操作
5,3 数据库中多表的使用
5.3.1 工作区
1.工作区工作区是 Visual FoxPro在内存中开辟的能独立地使用命令对一个数据库文件进行操作的一块区域 。
2.工作区号与工作区别名
Visual FoxPro6.0中最多能同时打开 32767个工作区工作区的别名前十个为 A,B,…,J,对于工作区 11到 32767,
自动指定的别名是 W11到 W32767。
当前工作区与当前表当 Visual FoxPro系统启动后,自动选择 1号工作区为当前工作区 。
第五章 数据库综合操作
3.用户定义的别名
命令格式,USE 〈 表文件名 〉 [ALIAS〈 别名 〉 ] [AGAIN]
命令功能:打开一个表 。
说明:
( 1) 若无 ALIAS短语,以表文件名作为别名 。
( 2) AGAIN短语,表示表文件可在多个工作区中同时被打开。
第五章 数据库综合操作
5.3.2 工作区选择
1.命令方式
命令格式,SELECT 〈 工作区号 〉 |〈 工作区别名 〉
功能:选择某工作区为当前工作区。
2.菜单方式第五章 数据库综合操作
5,4 建立表间的关系
5.4.1 建立表间永久关系
1,表的关系表的关系可分为一对一关系,一对多关系和多对多关系 。
2,表间关系的类别在 Visual FoxPro中,表间关系分为临时表间关系和永久表间关系两种 。
第五章 数据库综合操作
5.4.2 设置参照完整性
( 1) 级联:不论何时更改父表中的某个字段,Visual
FoxPro 都会自动更改所有相关子表记录中的对应值 。
( 2) 限制:禁止更改父表中的主关键字段或候选关键字段中的值,这样在子表中就不会出现孤立的记录 。
( 3) 忽略:即使在子表中有相关的记录,仍允许更新父表中的记录 。
第五章 数据库综合操作
5.4.3 建立表间临时关系命令方式建立关系
命令格式,SET RELATION TO
[〈 关系表达式 1〉 INTO 〈 工作区号 1〉 |〈 别名 1〉
[,〈 关系表达式 2〉 INTO 〈 工作区号 2〉 |〈 别名 2〉 … ]
[IN 〈 工作区号 〉 |〈 别名 〉 ] [ADDITIVE]
功能:建立两个打开的表之间的关系。
第五章 数据库综合操作
〈 关系表达式 〉 可以是:
( 1) 关键字表达式:指定在父表和子表之间建立关系的关系表达式 。 子表必须按关键字建立索引,且索引必须是主索引 。 索引形式不限,可以是复合索引,也可以是普通索引 。
( 2) 数值表达式:两表按照记录号相联系,子表不必排序或索引 。
当父表记录指针移动时,子表的记录指针指向与数值表达式值相匹配的记录上 。 例如,SET RELATION TO 2*RECNO( ) INTO YK,则父表的记录号为 1与别名为 YK的子表记录号为 2的关系,父表记录号为 3与 YK的记录号为 6的记录关系 … 。
第五章 数据库综合操作
INTO 〈 工作区号 1〉 |〈 别名 1〉,指定非当前工作区中的子表 。
〈 关系表达式 2〉 INTO 〈 工作区号 2〉 |〈 别名 2〉 …,指定其他关系表达式和其他子表,建立另一个父表和子表之间的关系 。 在一条
SET RELEATION命令中可以创建单个父表与多个子表之间的关系,各关系之间用逗号隔开 。
[IN 〈 工作区号 〉 |〈 别名 〉 ]:指定父表所在的工作区 。
ADDITIVE表示建立新关系时,当前工作区中先前建立的关系仍保留,
无此项则表示失效 。
说明:在建立关系之前,必须打开一个表 ( 父表 ),而且还必须在另一个工作区内打开其他表 ( 子表 ) 。 建立关系的各表之间通常有一个相同的字段,即使字段名不同,数据类型必须相同 。
若要切断数据表间的关系,可用命令 SET RELATION TO 。