VFP第3章数据库与表的创建及使用.ppt_第1页
VFP第3章数据库与表的创建及使用.ppt_第2页
VFP第3章数据库与表的创建及使用.ppt_第3页
VFP第3章数据库与表的创建及使用.ppt_第4页
VFP第3章数据库与表的创建及使用.ppt_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2019/8/4,1,1,主讲:王学军 电话移动校园网) 电邮: 办公地点:系部办公楼(原学生1号宿舍楼)507,Visual FoxPro教程,2019/8/4,2,第3章 数据库与表的创建和使用,信息系统的基础是数据库。设计一个完善、高效、结构优化的数据库,是创建信息系统过程中必不可少的重要环节。在VFP中,表是数据的容器,系统使用表以行和列的形式存储数据,这些行和列就是记录和字段;数据库是表的容器,它联合、组织以及使用表和视图提供的结构和操作环境。,在VFP中,构建数据库也包含创建表。但要注意的是,数据库和表均以文件形式存储在磁盘上,其中数据库文件扩展名为.dbc、表文件扩展名为.dbf,只是表可以属于数据库管理。,2019/8/4,3,本章要点,数据库概述 数据库的创建、打开与使用 表的创建与使用 永久性关系与参照完整性 有关数据库及其对象的常用函数,2019/8/4,4,3.1 数据库概述,确定建立数据库的目的,进行数据需求分析。 确定需要的各种表,即将信息分为若干个独立的主题,每个主题都将是数据库中的一个表。 确定所需字段,也就是将在表中保存的信息。 确定表之间的关系,形象而又直观地反映现实世界中各实体间的真正关系。 改进设计、优化设计。,3.1.1 数据库设计的过程,数据库的概念设计,数据库的逻辑设计,2019/8/4,5,3.1 数据库概述,3.1.2 数据库的组成,1. 表(Table),属于某一数据库的表称为“数据库表”。与自由表相比,数据库表具有许多扩展功能和管理特性。 表与数据库之间的相关性是通过表文件与库文件之间的双向链接(前链和后链)实现的。前链是保存在数据库文件中的表文件的路径和文件名信息;后链是存放在表文件中的数据库文件的路径和文件名信息。,2019/8/4,6,2. 视图(View),视图是从分散在相关表中的数据通过链接条件收集在一起的“虚表”。视图兼有表和查询的特点。,3. 连接(Connection),连接是保存在数据库中的一个定义,它指定了数据源的名称。这里所说的数据源是指远程数据源,一个远程数据源通常是一个远程数据库服务器或文件,并且已为它在本地安装了ODBC驱动程序和设置了ODBC数据源名称。,4. 存储过程(Stored Procedure),存储过程是在数据库数据上执行特定操作并储存在数据库文件中的程序代码。在数据库打开时会自动加载到内存中。,2019/8/4,7,表中字段的标题、注释、默认值、输入掩码和显示格式,以及字段在表单中使用的默认控件类。 表的主索引关键字 数据库表之间的永久性关系 长表名和表注释 字段级和记录级有效性规则 存储过程 插入、更新和删除事件的触发器,3.1 数据库概述,3.1.3 数据字典,数据字典是指存储在数据库中用于描述所管理的表和对象的数据,即关于数据的数据(元数据)。 数据字典可创建和指定如下内容:,2019/8/4,8,界面操作方式创建数据库 用项目管理器创建 用菜单命令或工具栏创建 命令方式创建数据库 CREATE DATABASE DatabaseName|? 数据库设计器与“数据库”菜单,3.2 数据库的创建、打开与使用,在VFP中,每创建一个数据库都将在磁盘上产生三个文件:数据库文件(.dbc)、关联的数据库备注文件(.dct)、关联的数据库索引文件(.dcx)。,3.2.1 数据库的创建,2019/8/4,9,新建的数据库,保存后自动以独占方式打开; 打开数据库中的表,系统会自动打开相应的数据库; 在项目管理器中选择一个数据库并单击“修改”按钮; OPEN DATABASE DatabaseName EXCLUSIVE|SHAREDNOUPDATEVALIDATE 打开多个数据库可重复进行数据库打开操作即可,系统默认最后一个打开的数据库为当前数据库。 根据需要可用SET DATABASE TO命令将另一个被打开的数据库设为当前数据库或在“常用”工具栏“数据库”下拉列表中选择一个已打开的数据库作为当前数据库。,3.2.2 数据库的打开与关闭,打开数据库 使用数据库前必须打开数据库,2019/8/4,10,2.检查数据库的有效性,在使用命令打开数据库时若使用了VALIDATE关键字,则系统会检查数据库的有效性;也可在打开数据库后用VALIDATE DATABASE命令检查数据库的有效性和更新链接。 VALIDATE DATABASE RECOVER TO PRINTER|TO FILE FileName,【注】 RECOVER用于说明更新链接,缺省时仅检查数据库的有效性 TO FILE用于说明检查结果信息的去向,缺省时在VFP主窗口显示; VALIDATE DATABASE命令只能处理以独占方式打开的当前数据库。,2019/8/4,11,在项目管理器中选择要关闭的数据库后单击“关闭”按钮; 使用CLOSE DATABASE命令关闭当前数据库; 使用CLOSE DATABASE ALL关闭所有打开的数据库; 关闭(退出)Visual FoxPro系统。,3.关闭数据库,【注】在关闭数据库时,从属于该数据库的表同时被关闭(如果表已被打开); 使用CLOSE DATABASE命令可关闭当前数据库和表,若没有打开的数据库,则关闭所有工作区内所有打开的自由表、索引,并将当前工作区设为1。,2019/8/4,12,用Windows操作系统删除;非正常删除 用DELETE FILE命令删除; 非正常删除 在项目管理器中通过“移去”操作进行删除。 正常删除,这样才能删除数据库中所包含的表的链接信息,数据库表将自动变成自由表。否则,只能用命令FREE TABLE 强行解除数据库与表间的链接,将表变成自由表。,4.删除数据库,删除数据库意味着删除存储在数据库中的一切数据,包括存储过程、视图、表之间的关系、数据字典等。,2019/8/4,13,VFP中的表(Table)是指存放在磁盘文件中的一张二维表,通常用来描述一个实体。 表中的一列称为字段(Field),字段规定了数据的特征。 表中的一行称为记录(Record),记录是字段值的集合。 表的记录必须用一个公共结构来存储,这个结构就是表结构。 表分为数据库表(简称“表”)与自由表两种类型。 表文件名队要遵守Windows中的约定外,不可使用AJ中的单个字母作为文件名,且最好不要包含空格字符。,3.3 表的创建与使用,2019/8/4,14,字段名:用以在表中标识该字段。 字段的数据类型:表中每个字段都有特定的数据类型(参见课本P.76表3-1) 字段的宽度:是指该字段所能容纳数据的最大字节数。有一些数据类型的宽度是固定的。 小数位数:对于数值型、浮点型和双精度型的字段,可以指定其小数的位数。如数据的整数部分不为0,则整个宽度至少应比小数位数大2,如是纯小数,则整个宽度只要比小数位数大1。 空值支持(NULL):通过使用空值(NULL),就有了一个判定某个字段是否具有一个值的办法。,3.3.1 表结构概述,3.3 表的创建与使用,2019/8/4,15,用“表设计器”创建表结构 项目中的表: 项目自由表新建新表保存(表向导另存为保存) 非项目中的表: 新建新建文件保存(向导另存为保存),3.3.2 创建和修改表结构,【注】在“表设计器”中创建结构完成后,会出现一对话框,问你是否立即输入数据。如果要立即输入数据,可单击“是”按钮,否则单击“否”按钮。创建表结构后,在磁盘上会生成扩展名为.DBF和.FPT的两个文件。,用“表设计器”修改表结构 项目表修改或用命令MODIFY STRUCTURE表设计器,2019/8/4,16,字段的标题和注释 标题:浏览表时代表字段的标签,但引用字段时必须使用其字段名。 注释:字段的说明信息,在项目管理器中选择一个字段时,在窗口下部将显示该注释。 字段的显示属性 格式(Format):用于指定输入和显示时的格式(对输入字段值的整体约束)。P.79表3-2 输入掩码(InputMask):用于指定字段中输入数据的格式(对输入字段的每位约束)。 P.79表3-3,3.3.3 字段属性与表属性,1. 字段的扩展属性,2019/8/4,17,默认值 为字段所指定的最初的值。设定默认值时必须是一个与字段类型相同的表达式。如果字段设置为允许Null,则字段默认值可设置为“Null”,否则字段的默认值不可设置为“Null”。如果用户未指定字段的默认值且字段不允许为空值,则系统按下表所述的方式设置字段的默认值。,2019/8/4,18,字段的有效性规则和有效性信息 字段有效性规则:用来控制输入到字段中的数据的取值范围。该规则是一个包含当前字段的逻辑表达式,如果输入的值不满足规则要求(即逻辑表达式的值为.F.)则拒绝该字段值并显示一个消息框。 字段有效性信息:也称字段有效性说明,是一个字符型表达式,通常与字段的有效性规则配合使用,用于指定在不满足规则要求时所显示的消息框中的说明信息。 字段的默认控件类 作用是指定使用“表单向导”生成表单或从数据环境中将字段拖放到表单上时,与该字段相应的控件类。,2019/8/4,19,显示打开 用菜单等界面操作方法或USE命令直接打开表 隐式打开 指在执行某些操作时系统会自动打开相应的表。如在项目管理器窗口中选择一个表后单击“修改”或“浏览”按钮时,会自动打开表;在执行SELECT-SQL语句进行查询时,也会自动打开数据源表等。,3.3.4 表的打开与关闭,在VFP中,表使用前必须打开。表的打开可以是显式打开,也可以是隐式打开。,2019/8/4,20,概念 在打开一张表时,必须为该表指定一个“工作区”。它是用以标志一张打开的表的区域。 编号132767,前10个也可用AJ 工作区中表的别名 USE 表文件名 ALIAS 别名 函数ALIAS(工作区号)可得到指定工作区的表别名。 函数SELECT(别名)可测试指定表别名的工作区号。 当前工作区 在“数据工作期”中设置当前工作区 命令:SELECT 工作区号|别名,3.3.4 表的打开与关闭,1. 工作区,2019/8/4,21,【注】 操作非当前工作区中的表的方法:一是把非当前工作区的表选为当前工作区(用SELECT命令);二是在命令中强行指定工作区(用IN 工作区号|别名)如:GO TOP IN js。 SELECT 0 指将未被使用的编号最小的工作区设为当前工作区,2. 数据工作期窗口,数据工作期窗口是当前数据动态工作环境的一种表示。VFP启动后,系统自动生成一个数据工作期,称为“默认工作期”。数据工作期窗口的打开方法: 窗口数据工作期 常用工具栏上的“数据工作期窗口”按钮,2019/8/4,22,界面方式 文件打开 数据工作期打开 项目管理器修改或浏览 在命令窗口中用命令USE ? 打开“使用”窗口 命令方式 USE 表名 IN 别名|区号AGAINALIAS 表别名 ; NOUPDATE,3. 表的打开,【注】如一张表同时在多个工作区中打开且均未指定别名,则在第一次打开的工作区中,别名与表名相同,其他工作区中用AJ以及W11W32767表示。,2019/8/4,23,界面方式 在数据工作期中关闭 命令方式 USE IN 别名|工作区 关闭所有的表 CLOSE TABLES ALL CLOSE DATABASE ALL CLOSE ALL,4. 表的打开,【注】在退出Visual FoxPro系统时,所有的表都将被关闭。,2019/8/4,24,设置独占与共享打开表的默认状态 工具选项数据 SET EXCLUSIVE ON默认“共享”打开 SET EXCLUSIVE OFF默认“独占”打开 强行用一种方式打开表 在“打开”窗口中设置 USE 表名 SHARED|EXCLUSIVE,5. 表的独占与共享,【注】当一个表被多次打开时,只能以第一次打开方式为准。SET EXCLUSIVE的设置并不能改变已经打开表的状态。,2019/8/4,25,表结构创建后立即输入记录 在浏览窗口中追加记录 菜单命令“表”“追加新记录” 菜单命令“显示” “追加方式” 使用INSERT-SQL命令追加记录 INSERT INTO 表名(字段名1,字段名2,); VALUES(表达式1,表达式2,) 举例:INSERT INTO xs(xh,xm,xb,xzydm); VALUES(“050503017“,“高山“,“男“,“050301“),3.3.5 记录的处理,1. 记录的输入,【注】VALUES后面括号中的具体记录的值要和INSERT INTO后面的字段名列表保持位置和类型上的一致。,2019/8/4,26,使用APPEND与APPEND FROM命令追加记录 APPEND BLANKIN 工作区号|别名 APPEND FROM 文件名FIELDS 字段列表FOR 条件; DELIMITED|XLS 其中,DELIMITED用于说明追加文件为文本文件;XLS用于说明追加文件为Excel文件,缺省时追加文件为表文件。该命令也可通过界面完成:“表”“追加记录” 备注型字段与通用型字段的数据输入 备注型:浏览窗口中,备注型字段上显示memo表示无内容;Memo表示有内容。备注型字段内容输入方法是光标定位到该字段上,按+或双击 通用型:浏览窗口中,通用型字段上显示gen表示无内容;Gen表示有内容。通用型字段内容输入方法同上,然后再用菜单命令“编辑” “插入对象”插入其内容。,2019/8/4,27,界面 菜单命令“显示”“浏览”(编辑) 命令 BROWSE FIELDS 字段列表FOR 条件; RREEZE 字段名NOAPPEND; NODELETE NOMODIFYTITLE 表达式 例:CLOSE TABLES ALL USE xs BROWSE FIELDS xh,xm FOR xb=女 ; NOMODIFY TITLE 女学生,2. 浏览窗口,3. 记录的筛选(横向筛选),界面 菜单命令“表”“属性” “数据过滤器” 命令 SET FILTER TO 条件,2019/8/4,28,界面 菜单命令“表”“属性” “字段筛选” 命令 SET FIELD TO 字段列表 SET FIELD TO ALL列出所有字段(取消筛选),4. 限制对字段的访问(纵向筛选),5. 记录定位,(1)记录指针,表被打开后,有三个控制记录的标志:开始标志、指针标志、结束标志。每当打开表文件时,指针总是指向第一个记录。,2019/8/4,29,【注】 RECNO()测试当前记录指针的位置,开始标志用BOF()测试,结束标志用EOF()测试。打开表时记录指针情况如下表:,记录指针的初始值总是1,不可能为0或负数,最大值是表中记录总数+1。,2019/8/4,30,界面操作 表转到记录 在浏览窗口移动光标 “记录号”:绝对定位 “定位”:条件定位 范围选项有ALL、NEXT、RECORD n、REST,5. 记录定位,(2)记录定位的实现,2019/8/4,31,【注】若定位时未找到相应记录,则指针指向指定范围的结尾。,2019/8/4,32,使用命令 绝对定位:GOTO 记录号 | TOP | BOTTOM IN 区号|别名 相对定位:SKIP nRecords 条件定位:LOCATE FOR 条件表达式 范围,(2)记录定位的实现,【注】若从第一条记录向上移动一条记录,记录指针指向开始标志,BOF()函数值为.T.,RECNO()值仍为1。若再执行SKIP -1命令,系统将显示出错信息“已到文件头”,此时记录指针仍然指向记录开始标志。 若从最后一条记录向下移动一条记录,记录指针指向结束标志,EOF()函数值为.T.,RECNO()值为表记录数加1。若再执行SKIP命令,系统将显示出错信息“已到文件尾”,此时记录指针仍然指向记录结束标志。 如果表有一个主控索引,SKIP命令将使记录指针移动到索引顺序决定的记录上。 对于条件定位来说,可使用CONTINUE命令从当前记录继续进行条件定位到下一条满足条件的记录。,2019/8/4,33,界面方式的记录修改 对于当前工作区中的表,可在浏览窗口中修改记录 批量修改:在浏览表状态下,用菜单“表”“替换字段”,6. 记录的修改,2019/8/4,34,使用命令修改记录 UPDATE命令 UPDATE 表名 SET 字段名1=表达式1; ,字段名2=表达式2WHERE 条件 REPLACE命令 REPLACE 字段名1 WITH 表达式1 ADDITIVE; ,字段名2 WITH 表达式2 ADDITIVE范围FOR 条件,6. 记录的修改,【注】REPLACE命令只能用于修改当前工作区打开的表,而UPDATE命令在执行时不需事先打开表,系统会自动在最小未使用的工作区中打开表; ADDITIVE仅对备注型字段有效,使用时表示替换的内容追加到原备注中,否则替换原内容;,2019/8/4,35,UPDATE命令中没有“范围”选项;缺省WHERE选项时更新所有记录,执行完记录指针指向最后一条记录;带有WHERE选项时更新满足条件的所有记录,执行完记录指针指向满足条件的最后一条记录上。 REPLACE命令中有“范围”选项和”FOR条件“选项,用法比较复杂:两者都有时,表明更新指定范围内满足条件的记录,执行完指针指向指定范围的末尾记录;两者均缺省时,仅对当前记录(一条记录)进行替换;只有“范围”选项,替换指定范围内所有记录,执行完指针指向指定范围的末尾记录;只有FOR子句,则替换表中所有满足条件的记录,执行完指针指向表中最后一条记录。 UPDATE命令执行时虽然可自动打开要更新的表,但不会改变当前工作区。,2019/8/4,36,标记要删除的记录(逻辑删除) 浏览表时,手动删除 浏览表时,用菜单“表”“删除记录” 打开“删除”对话框进行删除 DELETE-SQL命令删除: DELETE FROM 表名 WHERE 条件 DELETE命令删除: DELETE 范围FOR 条件IN 工作区|别名,7. 记录的删除与恢复,【注】DELETE-SQL命令执行时不需事先打开表,系统会自动在最小未使用的工作区中打开表,但不改变当前工作区;其WHERE选项的使用情况同UPDATE命令。 DELETE命令执行时必须先打开表,其“范围”和“FOR”子句的使用同REPLACE命令。,2019/8/4,37,恢复带删除标记的记录 RECALL 范围FOR 条件 (两个可选项的使用同DELETE命令) 彻底删除记录(物理删除) 在表浏览状态,用菜单“表”“彻底删除” 对当前工作区中的表,用命令PACK 用ZAP命令物理删除当前工作区中打开表的所有记录而不论记录是否有删除标记 对带有删除标记的记录的访问 对带有删除标记的记录,在默认情况下有些命令仍然可以对其进行操作,而有些命令则忽略这些记录。 可用SET DELETED ON|OFF来指定VFP是否处理带有删除标记的记录,但该设置也不是对所有命令或函数起作用。DELETE()函数可用于测试记录是否被删除。,2019/8/4,38,该命令只能用于当前工作区中打开的表的数据复制 缺省FIELDS子句则复制表中所有字段,但如果复制产生的文件不是默认的表文件,则即使备注字段包含在字段列表中,也不把备注字段复制到新文件中 SDF选项指明产生的新文件类型为文本文件(.TXT)而XLS选项指明产生文件为电子表格文件(.XLS),8. 数据的复制,COPY TO 文件名 FIELDS 字段列表范围; FOR 条件SDF|XLS,例: USE xs COPY TO xs01 FOR xb=“女“ COPY TO xs01 FIELD xh,xm SDF COPY TO xs01 XLS,2019/8/4,39,记录的物理顺序 按输入记录时间顺序实际存放的顺序,用记录号来标识不同的记录,函数RECNO()可测试当前记录号。 记录的逻辑顺序 为实现对表记录的快速查询,可根据需要对表文件中的记录按某个字段(单字段索引)或某些字段(多字段索引)值排序,这就是逻辑顺序。,3.3.6 索引的创建与使用,1. 索引概述,【注】索引排序并没有真正更改表记录的物理顺序,只是建立了一个逻辑顺序与原表物理顺序的记录号之间的对照表,并把对照表保存到一个索引文件中。,2019/8/4,40,字符+字符: 数值+字符: 数值+数值: 日期+字符: 其它:逻辑型、物理顺序等 一升序一降序问题:,2. 索引表达式,索引表达式也叫索引关键字,它是建立一个索引的排序依据,通常是一个字段或由多个字段组成的表达式。需注意:不能基于备注字段或通用字段建立索引。如索引表达式是基于多个字段的,系统将根据整个表达式的值进行排序。书写表达式时要注意:,2019/8/4,41,普通索引:索引表达式的值允许重复,即在普通索引上查找的记录不具有唯一性。一个表可以创建多个普通索引。 唯一索引:索引表达式的值可以重复,但在索引文件中重复的值仅存储一次。一个表可以创建多个唯一索引。,3. 索引类型,在VFP中,表的索引类型总共有4种:主索引、候选索引、唯一索引、普通索引。其中,主索引只能在数据库表中创建。当数据库表移出数据库变成自由表时,索引仍然有效,只是主索引将自动变成候选索引。,2019/8/4,42,候选索引:以表的候选关键字为索引表达式而创建的索引,所以,对于表中记录来说,指定的索引表达式的值不可重复。如果在任何已经含有重复数据的字段中指定候选索引,系统将产生错误信息;如果表已经建立了候选索引,在追加新记录或修改记录时,系统会检测索引表达式的值是否有重复,如有重复则拒绝接收数据的输入或修改。一个表可以建立多个候选索引。 主索引:对于数据库表来说,可以从候选索引中选取一个作为主索引。每个数据库表只能创建一个主索引,且主索引的索引表达式在表的所有记录中不允许有重复的值,也不允许NULL值。,注:在实际应用中,一个表一般创建一个主索引,根据需要可创建多个普通索引。,2019/8/4,43,结构复合索引文件 将表的一个或多个索引的索引信息存储在一个索引文件中,且索引文件名与表名相同,扩展名为.CDX。结构复合索引能自动地与表同步打开、更新和关闭。不要建立无用的索引,过多索引将会降低系统性能。 非结构复合索引文件 与结构复合索引文件一样,索引文件扩展名为.CDX,但其文件名不与表同名,非结构复合索引也不会随表的打开而自动打开。 独立索引文件 只存储一种索引的索引文件,其扩展名为.IDX,文件名由用户指定。与非结构复合索引一样,独立索引也不会随表的打开而自动打开。,4. 索引文件的类型,2019/8/4,44,排序:对索引表达式值的整体升序或降序,默认为升序。 索引名:也叫索引标识(Tag),其长度最多10个。 筛选:指定仅有符合条件的记录参加索引。,5. 使用表设计器创建结构复合索引,2019/8/4,45,6. 索引的使用,起作用的索引,(1)设置主控索引,2019/8/4,46,SEEK 表达式 ORDER 索引标识名IN 工作区|别名 ASCENDING|DESCENDING 如:USE xs ORDER xh SEEK “040701004”,(2)利用索引快速定位,【注】 SEEK命令可在表中搜索指定表达式的值首次出现的记录,这个记录的索引关键字必须与指定表达式类型匹配。 SEEK命令只能在索引过的表中使用,且只能基于索引关键字进行搜索。如果找到与索引关键字相匹配的记录,则RECNO()返回定位的记录号,FOUND()函数返回.T.,EOF()函数返回.F.;否则RECNO()函数返回表中记录数加1,FOUND()函数返回.F.,EOF()函数返回.T.。,2019/8/4,47,3.3.7 自由表,自由表就是不隶属于任何一个数据库的表。自由表的创建与数据库表的创建相似,但自由表不能创建数据库表的那些扩展属性,也不能创建主索引,不能建立表间的永久性关系与设置参照完整性等。 自由表可以添加到数据库中,使之成为一个数据库表(此时该表可以设置数据库表的一切属性);反之,可以将一个数据库表从数据库中移出,使之成为一个自由表。注意:一个数据库表变成自由表后,一切扩展属性均自动丢失,索引仍然保留,如果有主索引将自动变成候选索引。,2019/8/4,48,用CREATE-SQL命令创建表结构 CREATE TABLE 表文件名(字段名1 字段类型; (字段宽度, 小数位数) NULL | NOT NULL; , 字段名2 ,) 例:学生表结构的创建用命令实现。 Create Table xs(xh C(8),xm C(8),xb C(2),zydh C(6) Create Table js(gh C(5),xm C(8),gzrq D,jbgz N(7,2),jl M) 【注】上面建立的表结构是针对“自由表”而言,而“数据库表”是属于某一数据库的,所以要在项目列表中先选择已存在的数据库,然后再点“新建”,后面方法同上。 “数据表”还可以通过添加已有的“自由表”而产生。,3.3.8 利用命令创建和修改表结构,2019/8/4,49,用ALTER TABLE-SQL命令更改表的结构 添加字段 ALTER TABLE xs ADD COLUMN bjmc c(12) 重命名字段 ALTER TABLE xs RENAME COLUMN bjmc TO bj 删除字段 ALTER TABLE xs DROP COLUMN bj 修改字段 ALTER TABLE xs ALTER COLUMN xh c(6),3.3.8 利用命令创建和修改表结构,2019/8/4,50,一对一关系 设A、B两张表,A表中的一个记录在B表中只有一个记录与之对应,B表中的一个记录在A表中也只有一个记录与之对应。在很多情况下,两张表可以简单地合并成一个表。 一对多关系 如A表中的任意一个记录在B表中可有多个记录与之对应,而B表中的每个记录,在A表中仅有一个记录与之对应,则称两表之间存在一对多关系。A为主表,B为子表。,3.4 永久性关系与参照完整性,3.4.1 表之间的永久性关系,1. 表之间关系的类型,2019/8/4,51,多对多关系 若A表的一个记录在B表中可对应多个记录,而B表中的一个记录在A表中也对应多个记录,则称为多对多关系。 遇到多对多关系时,必须建立第三张表,把多对多关系分解成两个一对多关系。第三张表就称作“纽带表”。把两张表的主关键字都放在这个纽带表中。 对于纽带表,除了包含两个外部关键字外,还可以有其他字段。纽带表的主关键字可以由两个外部关键字组成。,2019/8/4,52,它是库表之间的一种关系,不仅在运行时存在,而且一直保留,拥有永久关系的表必须的数据库中。 表间的永久关系是通过索引建立的,永久关系的类型决定了所使用的索引的类型:在一对多中,主表必用主索引关键字(或侯选索引关键字),子表则用普通索引关键字;一对一中,两张表都用主索引关键字(或侯选索引关键字)。,2. 表之间的永久关系,(1)永久关系的作用 在“查询(视图)设计器”中,自动作为默认联接条件; 作为表单和报表的默认临时关系,在“数据环境设计器”中显示 用来存储参照完整性信息。,2019/8/4,53,(2)永久关系的建立 确定两张具有一对多或一对一关系的表 建立主表的主索引或侯选索引 如是一对多,在子表中以外部关键字建立普通索引 ;如是一对一,在子表中以与主表相同的关键字建立主索引或侯选索引。 建立主表与子表的永久关系,即在数据库设计窗口中,将主表的主索引或候选索引标识拖放到子表相应的索引标识上。 (3)删除、编辑永久关系 在“数据库设计器”中单击关系连线后(这时连线变粗),按键;编辑关系时,可双击连线打开“编辑关系”对话框进行编辑修改。,2019/8/4,54,“参照完整性”是用来控制数据的一致性,尤其是控制数据库相关表之间的主关键字和外部关键字之间数据一致性的规则。 1.参照完整性的一般要求(一对多或一对一) 子表的每一个记录在对应的父表中有一个父记录。 在父表中修改记录时,如改了主关键字的值,则子表中相关记录的外部关键字值必须同时改。 在子表中插入记录时,其外部关键字必须是主表主关键字值中的一个。 在父表中删除记录,与该记录相关的子表中的记录必须全部删除。,3.4.2 参照完整性,2019/8/4,55,用“参照完整性生成器”完成。参照完整性规则包括更新规则、删除规则、插入规则。,2. 参照完整性的设置,2019/8/4,56,父表:显示一个关系中的父表名 子表:显示一个关系中的子

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论