第7章数据库与多表操作_第1页
第7章数据库与多表操作_第2页
第7章数据库与多表操作_第3页
第7章数据库与多表操作_第4页
第7章数据库与多表操作_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、7.1 关系数据库的基础知识7.1.1 基本概念1. 关键字、主关键字、组合关键字与候选关键字 关系表中,其值可以唯一地标识一条记录的字段称为关键字。如果几个字段的值组合后可以唯一地标识一条记录,则这几个字段就称为组合关键字。表中可能有多个关键字,选取表中的一个关键字作为对该表进行各种操作时,用以区别每条记录的唯一性标志,并作为该表与其他表实现关联的关键字,则该关键字称为主关键字或主码。其他的关键字,称为候选关键字。2. 数据之间的联系类型 一对多关系;多对多关系;一对一关系。7.1.2 数据库的设计1. 1. 数据库表之间的联系与外部关键字数据库表之间的联系与外部关键字 表与表之间是一对多的

2、联系:实现该联系需将父表中的主关键字放入子表当中,以实现两表之间的有效关联。 表1与表2之间是多对多的联系:实现该联系需另外增加一个新表,这个表称为“关联表”,其中包括表1和表2的主关键字,并且加进两表之间的关联字段。 表与表之间是一对一的联系:实现该联系需要根据实际情况而定,设计时可以分为两个表或合并为一个表。u外部关键字 在一对多的关系表中,子表中的某一字段是父表的主关键字,则该字段称为子表的外部关键字或外码。u数据库表、自由表 属于数据库的表称为数据库表;独立存在、不与任何数据库相关联的表称为自由表。2. 2. 关系数据库的完整性关系数据库的完整性 实体完整性。实体完整性是指一个表中主关

3、键字的取值必须是确定的、唯一的,不允许为null值。 参照完整性。数据库的参照完整性是指在“子表”当中实现关联的外部关键字,它的取值或者为“空”值、或者为“父表”中实现相应关联的主关键字值的子集。 用户自定义完整性。这部分是由实际应用环境当中的用户需求决定的。通常为某个字段的取值限制、多个字段之间取值的条件等。7.2 数据库的基本操作7.2.1 建立数据库 建立数据库主要有如下三种方法:1. 在“新建”菜单中建立数据库2. 在项目管理器中建立数据库3. 使用命令建立数据库命令格式:Create Database 数据库名 / ?例如,要创建学生“学籍”数据库,可以使用以下命令:7.2.2 数据

4、库设计器 打开数据库设计器的方法有以下三种:打开数据库设计器的方法有以下三种:1. 1. 从项目管理器中打开数据库设计器从项目管理器中打开数据库设计器2. 2. 从打开菜单中打开数据库设计器从打开菜单中打开数据库设计器3.3. 用命令打开数据库设计器用命令打开数据库设计器 打开数据库设计器的命令的语法格式如下: MODIFY DATABASE 文件名 / ? NOWAIT NOEDIT 7.2.3 数据库的基本操作1. 1. 打开数据库打开数据库打开数据库的方式也有三种:在“项目管理器”中打开已存在的数据库:从“打开”对话框打开数据库:使用命令方式打开数据库。格式:OPEN DATABASE

5、文件名 / ?2. 2. 关闭数据库关闭数据库关闭数据库一般有两种方性:是在项目管理器中关闭数据库二是用命令方式关闭数据库格式:CLOSE DATABASES ALL功能:不带选项:表示关闭当前数据库和表。带“ALL”:表示关闭当前打开的数据库和数据库表、自由表及索引文件等。3. 在打开的多个数据库间切换在打开的多个数据库间切换 Visual FoxPro在同一时刻可以打开多个数据库,但在同一时刻只有一个当前数据库。也就是说,所有作用于数据库的命令或函数是对当前数据库而言的。 指定当前数据库的命令是: SET DATABASE TO DatabaseName 4. 4. 修改数据库修改数据库使

6、用“项目管理器”修改数据库使用命令修改一个数据库格式: MODIFY DATABASE 数据库名 / ? NOWAIT NOEDIT例如,要修改学生“学籍”数据库,可用命令: MODIFY DATABASE 学籍5. 5. 删除数据库删除数据库在“项目管理器”中删除数据库使用命令删除数据库例如,要删除学生“学籍”数据库,可用命令: DELETE DATABASE 学籍7.2.4 数据库表和自由表的相互转换1. 概念概念数据库表:已加入到某个数据库中的表。自由表:不属于任何数据库的表。2. 将表加入到数据库将表加入到数据库为了把一个已存在的表加入到数据库,可从“数据库”菜单中选择“添加表”,或者

7、单击工具栏中的“添加表”按钮。 使用命令方式 格式:ADD TABLE 表名 / ? 长表名 例如,打开“学籍”数据库,并向其中添加表“学生.DBF”: ADD TABLE 学生3. 从数据库中移出表从数据库中移出表从“数据库”菜单中选择“移出表”,或者单击工具栏中的“移出表”按钮。使用REMOVE TABLE命令。格式: REMOVE TABLE 表名 / ? DELETE RECYCLE 例如,打开“学籍”数据库,并将其中的表“学生.DBF”移出: REMOVE TABLE 学生4. 删除表文件删除表文件使用DROP TABLE命令删除表文件格式: DROP TABLE 表名 / 文件名

8、/ ? RECYCLE 7.2.5 工作区1 工作区工作区 工作区是Visual FoxPro在内存中开辟的临时区域。用户可以在不同的工作区中打开多个不同的表,并且可以利用多种方法访问不同工作区中的表。工作区及工作区编号 每一个工作区都有一个编号区域,它标识一个已打开的表。Visual FoxPro中最多允许使用32767个工作区,可以用工作区编号1、2、3、4、32767来标识。当前工作区及当前表 当前正在操作的工作区为当前工作区,称在当前工作区中打开的表文件为当前表。当前工作区是可变的,可以根据需要选择任意一个工作区做为当前工作区。工作区的别名 给工作区取一个除工作区编号外的名字,它可以用

9、来标识一个工作区。每个工作区都有两个等效的别名,一种是系统固有指定的,另一种是用户自己定义的(表别名)。通过别名可以引用在工作区中打开的表。 指定在一个工作区中打开的表时,可以使用下列命令为该表定义一个别名: USE ALIAS 如果省略 ALIAS ,则该工作区的用户自己定义默认别名为表文件名。 如果打开表时没有指定别名,或别名发生冲突时,Visual FoxPro自动指定表的别名。系统固有指定的别名为:A、B、C、D、J,分别对应工作区1、2、3、4、10。工作区的选择及当前工作区的转换使用SELECT命令可以选择或转换当前工作区。格式:SELECT / 功能:带表示激活指定该工作区,带表

10、示激活表别名代表的表打开时所用的工作区。 工作区之间的联访指系统在当前工作区访问另一个工作区中表内容(字段)的一种联系形式。工作区之间的联访是通过工作区的别名实现的。即用别名限制访问的对象。具体访问的格式如下: . 或 - 2 工作区使用规则工作区使用规则在一个工作区内只能存在一个打开的表文件;当前工作区只有一个,对非当前工作区中的表文件进行操作时,必须采取引用的方式(别名.字段名或别名-字段名);每个工作区中的表文件都有自己独立的记录指针;一个表文件能在多个工作区中打开;指定工作区可以使用命令: SELECT / USE IN / 由系统指定当前可用的最小号工作区可以使用: SELECT 0

11、 或 USE IN 03 工作区操作示例工作区操作示例7.2.6 建立表间的关联1. 表间的永久关系表间的永久关系在数据库表间建立永久关系 建立永久关系的目的是:l为实现参照完整性提供依据;l在查询设计器、视图设计器中,作为默认连接条件;l在数据库设计器、数据环境设计器中直接显示为表索引之间的连线,作为表单和报表之间的默认关系;建立永久性关联的方法:可以通过“数据库设计器”建立永久关系 例如,要建立“学生”表和“成绩”表之间的永久性关系,假定两表已建索引,使用如下命令: ALTER TABLE 成绩 ADD FOREIGN KEY 学号 TAG 学号 REFERENCES 学生删除表间的永久性

12、关联 通过“数据库设计器” 删除永久关系: 在“数据库设计器”中,用鼠标单击连接线使线条变粗(说明已被选中),再按键盘的DELETE 键即可。 使用命令删除永久性关联: 例如,要删除“学生”表和“成绩”表之间的永久性关系 ALTER TABLE 成绩 DROP FOREIGN KEY TAG 学号 SAVE2. 表之间的临时关系表之间的临时关系 表间的永久性关系并不能使子表的记录指针随父表的记录指针产生联动,而这一特性又是实际应用当中非常有用的,建立表间的临时关系可以达到这一目的。在建立了表间的临时关系后,父表可以控制子表。当在父表中移动记录指针时,子表中的记录指针也作相应移动。 创建表间的临

13、时性关联通过以下两种方法可以创建表间的临时性关联:通过“数据工作期”窗口创建表间的临时性关联 通过命令SET RELATION也可创建表间的临时性关联命令格式:SET RELATION TO INTO ,INTO IN ADDITIVE 在建立临时关系之前,子表必须先建立与相匹配的结构复合索引(.CDX)或独立索引(.IDX)。 例如,在“学生”表与“成绩”表间建立临时关系,假定“学生”表尚未建立了任何索引文件,则命令代码如下: USE 成绩 IN 1 USE 学生 IN 2 SELECT 成绩 INDEX ON 学号 TO ICJ SELECT 学生 SET RELATION TO 学号 I

14、NTO 成绩 这时打开“浏览”窗口,同时浏览“学生”表和“成绩”表,改变学生表中的当前记录,可以看到“成绩”表浏览窗口中只显示相关联的记录。解除表之间的临时性关联命令格式: SET RELATION OFF INTO 例如,要解除上述实例中已经建立的关联,命令代码如下: USE 学生 IN 2 USE 成绩 IN 1 SELECT 学生 SET RELATION OFF INTO 成绩 也可以使用不带任何参数的SET RELATION TO命令,将当前工作区中的所有关系解除。7.3 有效性、触发器与参照完整性7.3.1有效性1. 表的字段级属性 定义长字段名 设置字段标题 设置字段注解 建立输

15、入掩码 设置字段的默认值 字段级有效性规则2. 数据库表的其他属性数据库表的其他属性长表名 数据库表可以使用长达128个字符的名称,作为数据库引用该表的名称。表的记录级有效性规则 表的记录级有效性规则可以在同一条记录的多个字段间进行比较,完成有效性规则的约束。7.3.2 触发器1. 触发器触发器是建立在表上的表达式,当表中的任何记录被指定的操作命令修改时,在执行了字段级、记录级、主关键字等有效性检查后,触发器被激活。 利用触发器的工作原理,可以完成特殊的数据检验、参照完整性实施及数据库更新的维护操作等许多功能。触发器分为插入触发器、更新触发器和删除触发器三种,分别对应于数据库表记录的插入、更新

16、和删除操作。2. 创建触发器 以创建“插入触发器”为例,“插入触发器”就是当向表中插入或 追加记录时,将执行对应该触发器的一段程序或过程。3. 删除、移出触发器 直接在“表设计器”的触发器框中,删除指定的触发器即可。 使用如下命令也可实现: DELETE TRIGGER 学生 FOR INSERT如果从数据库中移去或删除表,则所有属于该表的触发器都从数据库中删除。4. 修改触发器直接在“表设计器”的触发器框中输入新的表达式即可。7.3.3 参照完整性实现1. 参照完整性规则参照完整性规则 参照完整性规则主要为了保证数据库表中数据的有效性和一致性,防止出现下列问题: ,造成子表中出现“孤立”记录。 当父表中没有关联记录时,将记录添加到相关子表中; 改变父表关键字值,而子表未作相应的改变; 删除父表记录,而子表未作相应的改变。 利用“参照完整性生成器”能很好地实施参照完整性规则的类型、规则实施表等。当更改或删除父表记录时,“参照完整性生成器”自动完成相关子表中的记录的级联操作。2. 实现

温馨提示

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

评论

0/150

提交评论