




已阅读5页,还剩63页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章 数据库的创建和使用 4 1VFP数据库概述4 2创建数据库4 3数据库的使用4 4VFP的数据字典 DataDictionary 4 5数据库表4 6永久关系和参照完整性4 7操作数据库及其对象的几个常用函数 结束放映 YES 是 NO 否 数据库是一个包容器 是许多相关的数据库表的集合 是数据组织层次中目前已达到的最高级别 它包括数据表以及表之间的关系等 4 1VisualFoxPro数据库 4 2创建数据库 VFP数据库的创建方法界面操作方式创建数据库命令方式创建数据库VFP数据库的组成1 数据库表2 本地视图及远程视图3 连接4 存储过程 创建一个新的数据库将生成三个文件 数据库文件 dbc 关联的数据库备注文件 dct 和关联的数据库索引文件 dcx 4 3数据库的使用 打开数据库设置当前数据库使用数据库中的表关闭数据库删除数据库 数据字典是指存储在数据库中用于描述所管理的表和对象的数据 即关于数据的数据 这些数据称为元数据 包括长表名 长字段名 有效性规则和触发器 以及有关数据库对象的定义如视图和命名连接等 VFP数据字典可以创建和指定以下内容 主关键字和候选索引关键字 字段级和记录级有效性规则 表单中使用的默认控件类 表中字段的标题和注释 数据库表之间的永久性关系 存储过程 字段的输入掩码和显示格式 表中字段的默认值 长表名和表中的长字段名 插入 更新和删除事件的触发器除了以上这些表的功能扩展 使用数据库还能访问与远程数据源的连接 并可创建本地表和远程表的视图 4 4VFP的数据字典 4 5数据库表 数据库表的字段扩展属性数据库表的表属性数据库表的约束机制及其激活时机综述数据库表的索引数据库表的添加与移去 数据库表字段的扩展属性 引言字段的显示属性字段的格式 Format 字段的输入掩码 InputMask 字段的标题 Caption 与注释 Comment 字段验证规则字段验证规则 ruleexpression 字段验证信息 ruleexpressiontext 字段默认值 defaultvalue 命令方法实现字段验证规则在数据库中查看字段的扩展属性 在使用命令createtable sql创建表文件时 可以利用check子句 error子句和default子句设置字段的有效性规则 有效性信息和默认值 在使用altertable sql命令修改表的结构时 可以通过setcheck子句 setdefault子句设置字段的有效性规则 有效性信息和默认值 删除字段的有效性规则时 可以利用带dropcheck子句的altertable sql命令 删除字段的默认值时 可以利用带dropdefault子句的altertable sql命令 数据库表的表属性 长表名与表注释表记录的验证规则表记录的验证信息表的触发器 Trigger 触发器的基本概念创建表的触发器移去或删除触发器 相关表之间的参照完整性 参照完整性 RI 概念设置参照完整性参照完整性设置方法参照完整性规则VFP数据完整性综述实体完整性参照完整性用户自定义完整性 4 7操作数据库及其对象的几个常用函数 DBC 函数与DBUSED 函数DBGETPROP 函数DBSETPROP 函数 1 一对多关系设有甲乙两个表 如果甲表中的任意一个记录在乙表中都有几个记录与之对应 而乙表中的每个记录在甲表中仅有一个记录与之对应 则称甲乙两个表之间存在一对多关系 并称甲表为 一 表 或 主表 乙表为 多 表 或 子表 外部关键字首先必须是 一 表中存在的字段 外部关键字的值输入到 多 表中的条件也必须是在 一 表中早已存在的 一般 将在 多 表中存在但在 一 表中不存在的记录称为 孤立记录 表之间的关系 1 2 多对多关系遇到 多对多 的情况时 必须建立第三个表 把多对多的关系分解成两个一对多关系 这第三个表就称作 纽带表 JunctionTable 因为它在两表之间起着纽带的作用 可以把两个表的主关键字都放在这个纽带表中 对于纽带表 除了包含两个外部关键字 即来自于学生表的主关键字Xh 学号 和课程表的主关键字Kcdh 课程代号 外 还可以有其他字段 如Cj 成绩 字段 但允许没有单个字段的主关键字 主关键字可以由两个外部关键字组成 表之间的关系 2 3 一对一关系一对一关系是这样一种关系 甲表的一个记录在乙表中只能对应一个记录 而乙表中的一个记录在甲表中也只能有一个记录与之对应 这种关系不经常使用 因为在许多情况下 两个表的信息可以简单地合并成一个表 出于一些原因 如字段项太多 不能合并的 可以建立一对一关系 只要把一个主关键字同时放到两个表中 并以此建立一对一关系 表之间的关系 3 4 分析并确定表之间关系 表之间的关系 4 界面操作方式创建数据库 在 项目管理器 中新建数据库通过 新建 对话框新建数据库 创建数据库的命令 语法 CREATEDATABASE 说明 1 如果在命令中没有给出数据库名或给出了 则命令自动打开 新建 对话框 如 CREATEDATABASECREATEDATABASE 2 如果给出数据库名 则创建数据库 并使该数据库处于打开状态 但不出现数据库设计器 如 CREATEDATABASEJXSJ1 3 用命令方式创建的数据库不会自动添加到项目管理器中 命令方式创建数据库 从属于某一个数据库的表 称为 数据库表 也叫 相关表 1 前链和后链库表与数据库之间的相关性是通过表文件 DBF 与库文件 DBC 之间的双向链接实现的 双向链接包括前链和后链 2 在数据库中添加 新建和移去表在数据库中添加表是指把自由表添加到数据库中使之成为库表 本质上是建立了库与表之间的双向链接 新建数据库表是指把新建的表直接创建成数据库中的表 从数据库中移去表是指把库表从数据库中释放为自由表 本质上是删除了库文件与表文件中的双向链接信息 在数据库中添加 新建和移去表的方法有多种 3 更新表和数据库的链接如果移动了数据文件 DBC DCT和 DCX 或与数据库关 数据库表 1 联的表文件 则这些文件的相对路径会改变 可能会破坏已有的前链或后链 如将库表XS由C盘移至A盘 由于表文件的移动引起库文件中的前链被破坏 可使用命令VALIDATEDATABASERECOVER 更新相对路径信息以重建前链 也可用USE命令打开表 系统会显示 打开 对话框 允许重新定位该表所属的数据库或删除链接 如果从磁盘中意外地删除了某个数据库文件 那么原来此数据库中包含的表仍然保留对该数据库引用的后链 这些表就不能再被添加到其他的数据库中 这时就需要从表中删除后链 其命令是 FREETABLE表文件名如 FREETABLEXS表被删除了后链以后 便成为自由表 可再添加到其他的数据库中 数据库表 2 前链是保存在数据库容器 DBC 中的有关表文件的路径和文件名信息 它将数据库与库表文件相链接 前链指向数据库中包含的表 它由各个表文件的相对路径和文件名称构成 后链是存放在一个表的表头中的数据库的路径和文件名 用以将自身与包含自身的数据库容器相链接 后链指向拥有该表的数据库 它由数据库的相对路径和数据库名称构成 前链和后链 1 利用 项目管理器 在数据库中添加 新建和移去表2 利用 数据库设计器 在数据库中添加 新建和移去表3 使用命令在数据库中添加 移去表语法 ADDTABLE自由表表文件名 NAME长表名 功能 向数据库中添加自由表 语法 REMOVETABLE表名 DELETE 功能 从数据库中移去表 添加 新建和移去数据库表的方法 例 OPENDATABASEjxsjEXCLUSIVEADDTABLExs 使用ADDTABLE命令往数据库中添加表时 必须保证数据库处于打开状态 REMOVETABLEXS 将XS表从数据库中移出 若加上DELETE可选项 则不仅将XS从数据库中移出 而且还把表文件从磁盘上删除 一个表在同一时间内只能属于一个数据库 如果所需要的数据表已隶属于其他数据库 则必须先从其他数据库移去此表 使其成为自由表 然后才能将其添加到当前数据库中来 使用命令在数据库中添加 移去表 一 表之间的关系二 表之间的永久关系1 永久关系 persistentrelationship 的概念2 永久关系的作用3 永久关系的建立4 删除 编辑修改永久性关系 库表之间的关系 永久关系是库表之间的一种关系 不仅在运行时存在 而且一直保留 拥有永久关系的表必须在数据库中 数据库表间的永久关系是根据表的索引建立的 索引的类型决定了要创建的永久关系类型 在一对多关系中 一方 必须用主索引关键字 或标识 或者用候选索引关键字 或标识 在 多方 则使用普通索引关键字 或普通索引标识 在一对一关系中 两个表必须都用主索引关键字 或标识 或候选索引关键字 或标识 永久关系 persistentrelationship 的概念 在 查询设计器 和 视图设计器 中 自动作为默认联接条件 作为表单和报表的默认的关系 在 数据环境设计器 中显示 用来存储参照完整性信息 这是永久关系的主要作用 永久关系的作用 建立永久关系的一般步骤是 确定两个存在一对多或一对一关系的表 建立主表的主索引或候选索引 如果是一对多关系 则在子表中按外部关键字建立普通索引 如果是一对一关系 则在子表中以与主表相同的关键字建立主索引或候选索引 从主表的主索引或候选索引到子表相关的索引建立永久关系 方法一 在数据库设计器中建立永久关系 将主表的主关键索引 XSXH 拖放到子表中的外部关键索引 CJXH 上 方法二 用命令方式建永久关系CREATETABLEcj xhC 6 kcdhC 6 cjN 3 0 FOREIGNKEYxhTAGcjxhREFERENCExs ALTERTABLEcjADDFOREIGNKEYxh TAGcjxhREFERENCExs 永久关系的建立 删除永久性关系在 数据库设计器 中 单击关联连线后 该线变粗 此时 按 Del 键即可删除关系 或用鼠标右键单击关系连线 在快捷菜单中单击 删除关系 后 关联的线被擦除 编辑修改永久性关系用鼠标右键单击关系连线 在快捷菜单中单击 编辑关系 后出现 编辑关系 对话框 删除 编辑修改永久性关系 永久关系连线 拖放 永久关系连线 快捷菜单 编辑关系 对话框 引言 数据库表的字段除了具有字段的基本属性外 还含有自由表所没有的扩展属性 包括字段的显示格式 输入掩码 默认值 标题 注释以及字段的验证规则和验证信息等 这些高级属性都保存在库表所在的数据库文件中 字段的高级属性都可以在数据库表的 表设计器 中进行设置 还可以用函数DBSETPROP 设置 打开数据库表设计器和自由表设计器进行比较 可看到二者之间的差别 字段的格式 字段的格式用于指定字段显示时的格式 设置字段的显示格式的方法与步骤 以JS表为例 如下 1 打开JS表设计器 2 选择要加格式的字段 3 在格式框中键入格式内容 如 设置JS表的JBGZ字段格式为 设置JS表的JBGZ字段格式为 L 设置JS表的CSRQ字段格式为 E 以上字段格式符号的意义见 字段格式表 字段的输入掩码用于指定字段中输入数据的格式 设置字段输入掩码的方法与步骤如下 1 在表设计器中打开表 2 选择要加输入掩码的字段 3 在 输入掩码 框中键入掩码 如 为JS表的JBGZ字段设置掩码为 9 999 99 JBGZ字段类型为N型 宽度为9 小数位为2 输入掩码的具体含义见 输入掩码表 字段的输入掩码 输入掩码表 字段标题的作用是为了使表具有更好的可读性 在取字段名时 为了在命令方式下更方便地使用字段 字段名常常采用简练的形式 常用拼音字母代替汉字 如 出生日期 的字段名取为 CSRQ 在浏览时也以字段名作为列的标题 不直观 可读形不好 利用数据库表字段的标题属性 可以为字段设置一个含义明确的标题 但标题只是在浏览 显示时起作用 并不能作为字段名用于表达式及命令中 字段注释也是为了使表具有更好的可读性 所以在注释框中可以填入对字段的文字说明 字段的标题与注释 字段验证用来限定字段的取值及取值范围 在所选字段的字段验证规则框内键入一逻辑表达式 当往字段中输入数据并当焦点离开该字段时 将数据代入逻辑表达式 若表达式的值为真则接受该数据作为该字段的值 否则拒绝将该数据作为该字段的值 如将JS表的JBGZ字段验证规则设为 JBGZ 500ANDJBGZ 2000当关闭表设计器并保存对结构的修改时 可以选择用此规则对照现有的数据或不对照现有的数据 字段验证规则 在字段验证信息框中键入对验证规则的说明文本 当字段值不满足字段验证规则时将显示该说明 如在上述JS表的JBGZ字段验证信息框中输入文本 基本工资必须在500 2000之间 作为字符串常量必须加引号 当在JBGZ字段中输入2100时就会显示信息 基本工资必须在500 2000之间 并拒绝接受2100作为JBGZ字段的值 该属性为可选项 既字段可以有字段验证规则而没有字段验证信息 当出现违背字段验证规则的数据时 系统显示默认的信息 如 违反了字段JBGZ的验证规则 字段验证信息 当向一个数据库表中添加记录时 为字段所指定的最初的值 称为该字段的默认值 如为JS表的JBGZ字段设置默认值为800 则每次向JS表中追加新记录时 JBGZ字段都已有数据800 如果没有设置默认值 则在追加新记录时 各字段也有系统自动设置的默认值 如下表所示 字段的默认值 上述7个属性均为数据库表字段的扩展属性 这些属性存储为数据库的一部分 而且只要表属于该数据库 它们就一定存在 而在VFP中数据库实质是一个表文件 可用USE命令打开查看 也可用DISPLAYDATABASE命令查看 例如 USEJXSJ DBCBROWSE或OPENDATABASEJXSJDISPLAYDATABASE 在数据库中查看字段的扩展属性 如果为数据库表设置了长表名属性 则该数据库表在各种选项卡 窗口中均以长表名代替表名 在打开数据库表时 长表名与文件名可以同样使用 例如 用表设计器为JS表设置长表名 TEACHER 以后打开该表可以有两种方法 USEJS 此时表的别名为 JS USETEACHER 此时表的别名为 TEACHER 也可以在使用CREATETABLE命令创建表时 CREATETABLEB01NAMETAB01 F01C 3 长表名 NAME 在向表中输入记录时 当两个字段之间存在一定的关系 如出生日期总是比工作日期小 这是可以通过设置数据库表的记录验证规则来实现 例如 在教师表JS中可以设置如下记录级规则 工龄 年龄 15 则应在 规则 框中输入如下规则的表达式 js gl year date year js csrq 15或者使用CREATETABLE或ALTERTABLE命令的CHECK子句 ALTERTABLEJSSETCHECK js gl year date year js csrq 15 表记录的验证规则 1 和字段级规则一样 记录级规则在记录值改变时被激活 如果该记录中的值没有变化 则在移走记录指针时 不检查记录级规则 因此可以自由地在记录间移动指针 而系统却不会检查任何数据 如果修改了记录 若没有移动记录指针 则在关闭 浏览 窗口时检查记录级规则 并对所发生的任何错误提出警告 然后才关闭 浏览 窗口 若记录指针移离记录时 立即检查记录级规则 并对所发生的任何错误提出警告 和字段级验证规则一样 在设置结束时可以选择是否用此规则对照现有的记录 表记录的验证规则 2 在记录验证信息框中键入对验证规则的说明文本 当记录不满足验证规则时将显示该说明 如在上述JS表的记录验证信息框中输入文本 参加工作年龄必须大于15岁 作为字符串常量必须加引号 当JS表中某记录的CSRQ和GL字段不满足这一条件时 就会显示信息 参加工作年龄必须大于15岁 并拒绝接受该记录 该属性为可选项 即可以有记录验证规则而没有记录验证信息 当出现违背记录验证规则的记录时 系统显示默认的信息 如 违反了记录验证规则 表记录的验证信息 表的触发器 是绑定在表上的表达式 当表中任何记录被指定的操作命令 插入 更新或删除 修改时 在进行其他所有检查之后 例如有效性规则 主关键字的实施 以及null值的实施 被激活 表的触发器是表在插入 更新或删除记录时进行的检验规则 可分为插入触发器 更新触发器和删除触发器 触发器的基本概念 可使用 表设计器 或CREATETRIGGER命令来创建触发器 插入触发器 向表中插入或追加记录时触发该规则 更新触发器 在表中修改记录时触发该规则 删除触发器 在表中删除记录时触发该规则 上述触发器的默认设置是 T 创建触发器的一个方法是 在表设计器中为触发器设置一个逻辑表达式 其返回值是 真 T 或 假 F 如将JS表的删除触发器设置为GL 40 则JS表中只有GL大于40年的记录才可以做逻辑删除 另一个方法是用CREATETRIGGER命令 CREATETRIGGERONFOR INSERT UPDATE DELETEAS例 CREATETRIGGERONJSFORDELETEASJS GL 40 创建表的触发器 在 表设计器 的 表 选项卡的 触发器 区中 从 插入触发器 更新触发器 或 删除触发器 框里选定触发器表达式 并删除它 使用DELETETRIGGER命令 格式如下 DELETETRIGGERONFORDELETE INSERT UPDATE如果从数据库中移去或删除表 则所有属于该表的触发器都从数据库中删除 但是 由被移去或删除的触发器引用的存储过程没有删除 移去或删除触发器 数据库表的字段级和记录级规则以及表的触发器 为数据的输入和修改实施了约束 库表的约束机制及其激活时机 参照完整性 ReferentialIntegrity RI 是用来控制数据的完整性 尤其是控制数据库中相关表之间的主关键字和外部关键字之间数据一致性的规则 数据一致性要求相关表之间满足如下规则 1 子表中的每一个记录在对应的主表中必须有一个父记录 否则子表中的记录是 孤立记录 2 在子表中插入记录时 其外部关键字必须是父表主关键字值中的一个 3 在父表中删除记录时 与该记录相关的子表中的记录必须全部删除 参照完整性的概念 设置参照完整性是利用数据库表之间的永久关系 控制记录如何在相关表中被插入 更新或删除 参照完整性规则被设置在主表或子表的触发器中 规则的代码被保存在数据库的存储过程中 设置过程如下 在 数据库设计器 中 用鼠标右击永久性关系联线 出现快捷菜单 单击其中的 编辑参照完整性 项 或者单击 数据库 菜单中的 编辑参照完整性 出现 参照完整性 生成器 VFP中的参照完整性规则包括更新规则 删除规则和插入规则三种 参照完整性的设置 参照完整性规则表 VFP引进了关系数据库的三类完整性 实体完整性 参照完整性和用户自定义完整性 前两类是数据库本身自我约束的完整性规则 由系统自动支持 实体完整性包括两级 字段和记录的数据完整性 字段的数据完整性通过设置字段的有效性规则实现 记录的数据完整性通过设置记录的有效性规则实现 参照完整性是指相关表之间的数据一致性 通过字段级 记录级和表间三级完整性约束 有效地实现了数据的完整性和一致性 从而方便和简化了用户的数据维护 数据完整性综述 打开一个数据库1 界面方式2 命令方式OPENDATABASE Database EXCLUSIVE SHARED NOUPDATE VALIDATE 2 打开多个数据库正如表可以打开多个一样 数据库也可以打开多个 但不必在多个工作区打开 打开数据库 打开多个数据库的方法很简单 只要多次使用打开一个数据库的命令 例如 要同时打开三个数据库DB1 DB2 DB3的命令是 OPENDATABASEDB1OPENDATABASEDB2OPENDATABASEDB3 所有打开的数据库中 只有一个是当前数据库 在打开数据库时 最后一个打开的数据库为当前数据库 也可把其他打开的数据库设置为当前数据库 1 在 常用 工具条的 数据库 下拉列表中 显示了所有已打开的数据库 可以在列表中选择一个作为当前数据库 2 用SETDATABASETO命令将某一已打开的数据库设置为当前数据库 如 SETDATABASETODB2 3 与数据库相关的两个函数 函数DBC 返回当前打开的数据库的完整文件名 DBC 返回a db1 dbc 函数DBUSED 数据库名 返回指定的数据库文件是否已经打开的状态 如果已打开 则函数返回值为 T 否则函数返回值为 F 例如 DBUSED DB1 返回 T 设置当前数据库 数据库表和自由表都可以使用USE命令打开 但是 如果打开的是数据库表 则系统会首先自动打开表所在的数据库 打开数据库时不会自动打开表 关闭数据库时会自动关闭数据库中所有已打开的表 关闭表时不会自动关闭数据库 要打开非当前数据库中的表 可以使用 符号 例如 USEjxsj xs也可以直接使用表文件名打开数据库表 如 USEjs 使用数据库中的表 1 从项目管理器中 选定要关闭的数据库并选择 关闭 按钮 2 使用CLOSEDATABASE命令 CLOSEDATABASES关闭当前数据库和表 若没有当前数据库 则关闭所有工作区内所有打开的自由表 索引和格式文件 并选择工作区1 例如 下面的代码关闭了JXSJ数据库 SETDATABASETOjxsjCLOSEDATABASE CLOSEDATABASESALL关闭所有打开的数据库和其中的表 所有打开的自由表 所有工作区内所有索引和格式文件 并选择工作区1 CLOSEALL该命令除了不关闭 命令窗口 调试窗口 帮助 和 跟踪窗口 外 将关闭所有的数据库 表 索引以及各种设计器 包括项目管理器 并选择工作区1 关闭数据库 DBC 函数返回当前打开数据库的完整文件名 该函数无参数 DBUSED 函数返回指定的数据库文件是否已经打开 如果打开 则函数的值为 T 否则为 F 语法 DBUSED 数据库名 其中 数据库名为字符表达式 语法 DBGETPROP cName cType
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/TS 19206-9:2025 EN Road vehicles - Test devices for target vehicles,vulnerable road users and other objects,for assessment of active safety functions - Part 9: Require
- GB/T 45906.8-2025变电站二次系统第8部分:电气操作防误
- 桥梁远景图文体课件
- 《机械员》考试题库含完整答案【网校专用】
- 常见病症用药测试题库含答案
- 2025年物流行业招聘面试实战指南与预测题解答
- 2025年电子商务运营师中级面试必-备题库
- 2025广东政府采购评标专家考试题库及答案
- 2025年注册验船师资格考试(A级船舶检验专业法律法规)练习题及答案一
- 2025年高级电子商务运营师认证考试题库及参考答案
- 2025新版企业员工劳动合同范本
- PCR实验室基因扩增检验人员培训试题及答案
- 2025年全国版图知识竞赛(中学组)历年参考题库含答案详解(5卷)
- 2025年西藏自治区三支一扶人员招募考试(公共基础知识)历年参考题库含答案详解(5卷)
- 2025年富县辅警考试题库(附答案)
- 2026届张家港市达标名校中考语文模试卷含解析
- 国家中医药管理局《中医药事业发展“十五五”规划》全文
- 上交叉综合征的肌肉失衡及处理
- 开学安保工作方案(6篇)
- QC080000-2017 HSF有害物质管理程序文件全套
- 碳九加氢标准工艺标准流程
评论
0/150
提交评论