Download presentation
Presentation is loading. Please wait.
1
第二章 数据库及其操作 本章基本目标 *掌握数据库和数据表的操作及与其操作相关的简单命令 *掌握数据库表和自由表的区别以及两者相互转化
*掌握索引的概念、分类以及与其操作相关的简单命令 *掌握数据表间关系
2
第三讲 索引与表间关系 本讲学习内容 索引的概念及分类 在表设计器中建立索引 索引文件类型 与索引有关的命令 表记录的搜索命令
表间关系的分类 表间关系的建立 表间关系的修改与删除
3
索引:不改变物理顺序,所有关键字按升(降)排列,每个值对应原文件的一个记录号,确定记录的逻辑顺序
索引的概念 1.表记录的存储、输出等按记录的输入顺序改变输出顺序 排序 索引 改变物理顺序 改变逻辑顺序 2.记录的物理顺序与逻辑顺序 物理顺序:记录在磁盘中的存储顺序 逻辑顺序:按某个关键字(或表达式)的值建立起来的记录顺序 宿舍 电话 记录 编号 4 5 1 2 3 记录 编号 宿舍 电话 号码 1 101 2 102 3 103 4 104 5 105 索引:不改变物理顺序,所有关键字按升(降)排列,每个值对应原文件的一个记录号,确定记录的逻辑顺序
4
索引分类 主索引是指关键字段或索引表达式中不允许出现重复值的索引,一个表只能创建一个主索引。不能给自由表建立主索引 。
根据关键字字段(用来确定索引顺序的字段 )可以建立四种类型的索引:主索引、候选索引、唯一索引和普通索引 主索引是指关键字段或索引表达式中不允许出现重复值的索引,一个表只能创建一个主索引。不能给自由表建立主索引 。 候选索引与主索引的特性相同。在数据表和自由表中均可以为每个表建立多个候选索引。 惟一索引为了保持与早期版本的兼容性,可建立惟一索引。惟一索引文件只存储数据表中第一次出现的重复记录值,而忽略第二次或以后重复出现的记录。在一个表中可以建立多个惟一索引。 普通索引可以决定记录的处理顺序,它允许字段值重复,并且在一个表中可以有多个普通索引。
5
决定索引类型时一般应遵循的原则为: • 为了提高显示、查询、打印的速度,应使用普通索引、候选索引或主索引。 • 为了控制字段的重复值或者对记录进行排序,对数据表使用主索引或候选索引(对自由表使用候选索引)
6
索引文件类型 建立时,用户单独为其命名 非结构复合索引 复合索引 (扩展名CDX) 结构复合索引 需使用单独命令打开、关闭 索引 单一索引
(扩展名IDX) 含多个索引 需使用单独命令打开、关闭 建立时,用户未单独为其命名 与表同时打开、关闭 需使用单独命令打开、关闭 建立时,用户单独为其命名 为与FOXBASE兼容
7
表设计器中建立索引 “索引”选项卡 : 按钮 排序列 索引名列 类型列 表达式列 筛选列 插入按钮 删除按钮
如果要按已经排序的字段浏览,则继续以下操作: 建立完索引→ 打开表→ “表”菜单→ “属性”命令→ “工作区属性”对话框→在“索引顺序”中选择“学生成绩.综合测评” →按“确定”。
8
建立索引文件或增加索引标识命令 INDEX ON 索引关键字 TO 单索引文件名|TAG 索引标识名 [FOR逻辑表达式 ] [ASCENDING|DESCENDING] (1)为“学生档案”表建立单一索引文件,索引关键字为“学号”,索引文件名 为“xh” USE 学生档案 INDEX ON 学号 TO xh &&该文件的后缀名 .idx (2)为“学生档案”表建立复合索引,自定义文件名称和标记名称。 INDEX ON 学号 TAG xh1 && 建立结构化复合索引文件,索引文件名为“学生档案.cdx”,索引标识 为 xh1。 INDEX ON 学号 TAG xh OF xh2 && 建立非结构化复合索引文件,名字为“xh.cdx”,索引标识为 xh2。
9
建立主索引 1.建立索引总结: 单一索引: INDEX ON <索引关键字> TO <索引文件名>……
结构复合索引:INDEX ON <索引关键字> TAG<索引标识名>…… 非结构复合索引:INDEX ON <索引关键字> TAG<索引标识名> OF <索引文件名>…… 2.设置主索引 ①ALTER TABLE 数据表名 ADD PRIMARY KEY 表达式 TAG 标记名称 ②ALTER TABLE 数据表名 ALTER [COLUMN] 字段名 字段类型[(字段宽度)] PRIMARY KEY P82页 OPEN DATABASE 数据库1 ALTER TABLE 学生档案 ADD PRIMARY KEY 学号 TAG xh ALTER TABLE 学生档案ALTER COLUMN学号 c(10) PRIMARY KEY
10
索引的使用 一个表可以有多个索引文件,同一个复合索引文件可以包含多个索引标识,但某一时刻只有一个索引文件起作用(主控索引文件),在复合索引文件中只有一个索引标识起作用(主控索引) 1、打开索引文件 结构化复合索引在打开表的同时自动打开,但是单一索引和非结构化复合索引就需要设置打开命令. ①USE 表名 INDEX 索引名 ②SET INDEX TO 索引列表 [ASCENDING︱DESCENOING][ADDITIVE] 2、关闭索引文件 关闭数据库或者数据表,与表相关的索引文件均被关闭。关闭除结构化复合索引以的外其它索引文件命令如下: 例: SET INDEX TO xh,xh1 CLOSE INDEX ①SET INDEX TO ②CLOSE INDEX
11
索引的使用 3.确定主控索引 SET ORDER TO [主控索引号︱独立索引文件名︱[TAG 标记名称] ︱[OF 复合索引文件名]]
指定为主控索引文件 SET ORDER TO [主控索引号︱独立索引文件名︱[TAG 标记名称] ︱[OF 复合索引文件名]] 说明:“主控索引号”是系统分配的一种有序的编号, 特别不容易记清,建议使用索引名。 例如:将结构索引文件中的xh设置为当前索引。 SET ORDER TO TAG xh
12
4.删除索引 DELETE TAG 标记名称 [OF 非结构化复合索引文件名]… DELETE FILE 索引文件名 例如:
DELETE TAG XH DELETE FILE xh.idx
13
排序就是根据表的某些字段重排记录,产生新表,原文件不变
排 序 排序就是根据表的某些字段重排记录,产生新表,原文件不变 产生的新文件是关闭的 升序 降序 不区分大小写 SORT TO 新表文件名 ON 字段名1 [/A|/D][/C][,字段名2 [/A|/D][/C]…] [SCOPE][FOR 逻辑表达式1] [WHILE 逻辑表达式2][FIELDS 字段列表] 说明:1.多重排序,先按字段1排序,字段1的值相同,再按字段2,… 2.缺省[SCOPE]对所有记录。 3.FIELDS子句指定新表的字段构成,默认为全部字段。 例:将学生档案 .dbf按姓名降序排列,当姓名相同时,按学号 的升序排列。新表只包含学号、姓名、和专业。 USE 学生档案 SORT TO xsdapx ON 姓名/D,学号/A FIELDS 学号,姓名, 专业
14
索引查询命令 索引查询用二分法算法来实现,速度快,但需事先对表进行索引 说明:1和2用法基本相同,但FIND后的表达式必须为字符串,若
1. SEEK 表达式 FIND 字符串|常数 说明:1和2用法基本相同,但FIND后的表达式必须为字符串,若 FIND后是内存变量,则该变量前必须加宏替换符“&”。命令都是找到第一个就停止查找,并将指针指向该记录。 例: xh=“ ” USE 学生档案 INDEX ON 学号 TO 学号 &&建立独立索引文件“学号.idx” SET ORDER TO 学号 && 设置“学号”为主控索引 SEEK xh && 使用SEEK方式 FIND &xh && 使用FIND方式 DISP
15
表间关系 理解:一个数据库中可以存放多个数据表,各表之间可以建立相互关联, 即表间关系。关系建立之后,表有主、从表之分。
分类:主表的索引必须是主索引,关系的分类由从表的索引类型决定。 1、一对一关系 主索引或候选索引 2、一对多关系 普通索引或唯一索引 3、多对多关系 建立:1.永久关系在数据库设计器中表现为表索引之间的连线,永久关系建立后存储在数据库文件中,永久关系在查询和视图中起联接作用。 2.临时关系是使用时临时建立的,关闭任意一个表时关系被自动关闭,它是控制关联表的记录指针有序移动。
16
永久关系建立 方法:打开数据库表→建立索引→保证需要的表在同一个数据库中→建立关系(从一个表的主索引或候选索引拖到另一个表的任一索引,即出现表间关系连线) 连线一端为一根(一多关系的一端主表),另一端为三根(一多关系的多端从表)
17
永久关系的修改删除 永久关系删除→单击关系连线,当关系连线变粗后,右击 1.删除关系:选择该命令可以将此关系从数据库中删除。
2.编辑关系:在“Edit Relationship”(编辑关系)对话框中显示了建立关系的两个表的名称以及两个表之间的关系类型。 3.编辑参照完整性:是表间关系设置中最重要的问题。通过对其设置保证数据库中数据的完整性和一致性。
18
删除父表记录时的规则 子表插入或更新记录时的规则
修改父表关键字值时的规则 删除父表记录时的规则 子表插入或更新记录时的规则 级联规则 限制规则 忽略规则 父表的索引关键字名 子表的索引标识名 所选定选项按钮名称 父表名 子表名
19
建立临时关系 (一) 菜单操作:“窗口”菜单→“数据工作期”命令→保证需要的 表“别名”列表框内→选中需要表→点击“属性” →在工作
区属性窗口中选择关联的索引顺序→所操作的表前面均加上了 ↑箭头→选择主表单击“关系”按钮加入到右边的“关系”列 表框中 →单击从表→出现“表达式生成器”对话框→写明关 系确定→单击“一对多”按钮→单击“All”按钮→单击OK。
20
建立临时关系(二) select 2 命令操作: SET RELATION TO [表达式 INTO 工作区 | 工作区别名]
父表的字段表达式 子表或其所在工作区 命令操作: SET RELATION TO [表达式 INTO 工作区 | 工作区别名] [ADDITIVE] 不解除以前的关联 全部省略,解除关联 select 2 use 选课登记 index on 学号 tag 学号 select 1 use 学生档案 set relation to 学号 into 选课登记 前提:子表必须以关键字建立索引
21
作业:本章课后练习。 上机作业: 1、按照课本中的例题在计算机上练习所学的命令 2、书后实验题 3、本章习题
Similar presentations