版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第5章数据库的管理,本章要点5.1数据库的基本操作5.2数据库表的属性设置5.3创建索引文件5.4表间关系5.5数据完整性,本章逻辑结构,5.1数据库的基本操作5.1.1数据库的打开和关闭5.1.2查看数据库信息5.1.3修改数据库5.1.4删除数据库5.2数据库表的属性设置5.2.1设置字段级属性5.2.2设置表的属性,本章逻辑结构,5.3创建索引文件5.3.1索引的作用5.3.2索引文件的类型5.3.3索引文件的创建5.3.4索引文件的使用5.4表间关系5.4.1关系的类型5.4.2表间的临时关系5.4.3建立表间永久关系,本章逻辑结构,5.5数据完整性5.5.1参照完整性设计器5.5.2
2、参照完整性的设置,5.1数据库的基本操作,5.1.1数据库的打开和关闭1数据库的打开对数据库操作之前要先打开,打开数据库的方法有多种,常用的方法有菜单方式和命令方式。另外,也可以打开项目管理器后直接对数据库做各种操作。实例49打开“招生管理”数据库。方法一菜单方式(1)单击“文件”“打开”命令,弹出“打开”对话框。(2)在“文件类型”下拉列表框中选择“数据库(*.DBC)”选项。(3)在“查找范围”处选择“招生管理”数据库所在的位置,选中“招生管理”数据库,单击“确定”按钮即可弹出“数据库设计器-招生管理”窗口,并在“数据库设计器”窗口中显示出组成该数据库的若干表以及它们的关系。方法二命令方式
3、在“命令”窗口中输入打开数据库文件的命令:,5.1数据库的基本操作,OPENDATABASE|?另外,也可以用修改数据库的命令打开数据库文件:MODIFYDATABASE|?或使用打开表文件的命令打开数据库文件:USE|?其中,用于指定打开数据库的位置、文件名。若不指定文件名或在命令后加?,则会弹出“打开”窗口。打开“招生管理”数据库用命令:opendatabase招生管理或modifydatabase招生管理或use招生管理,5.1数据库的基本操作,其中,opendatabase是一条专用于打开数据库的命令。使用modifydatabase命令,会弹出“数据库设计器”窗口。因为数据库文件从结
4、构上看仍然是一个表文件,所以用打开表文件的命令use打开数据库时,VisualFoxPro的“显示”菜单栏中多了“浏览”、“表设计器”菜单项。选择“表设计器”菜单项,可以见到如图5-1所示的数据库结构,该结构是伴随着数据库的生成自动生成的。选择“浏览”菜单项,可以见到如图5-2所示的数据库记录,“Objecttype”字段显示了对象的类型,“Objectname”字段显示了对象的名。例如“Objecttype”字段值为“Table”,“Objectname”字段值为“学生基本情况”,表示“学生基本情况”是个表文件。尽管在此环境下可以修改数据库的结构和记录,但最好还是不要做任何改动,因为这种改动
5、很容易将数据库破坏。其实,在VisualFoxPro中,项目、数据库、报表、标签、类库在本质上都是表,都可以用use命令打开,并用browse来查看它们的内容。,5.1数据库的基本操作,图5-1招生管理数据库文件的结构,5.1数据库的基本操作,图5-2招生管理数据库文件中的记录,5.1数据库的基本操作,2指定当前数据库在VisualFoxPro中每个工作区都可以打开一个数据库,所以可以有多个数据库在不同的工作区内同时打开。因为只有一个工作区为当前工作区,所以当前数据库也只能有一个。若在不同工作区打开了多个数据库,可以用命令指定其中的一个为当前数据库。在“命令”窗口中输入指定当前数据库的命令:S
6、ETDATABASETO其中,用于指定打开数据库的位置、文件名。若没有此项则该命令的作用是关闭当前数据库。3数据库的关闭使用完毕的数据库文件,一定要关闭。这样既保障了数据库的安全,又提高了系统的运行效率。通常关闭数据库的同时也关闭其中的表文件。,5.1数据库的基本操作,5.1.2查看数据库信息数据库信息包括数据库名、数据库的存储路径、数据库中包含的表文件名、表文件中包含的字段名等等。在“命令”窗口中输入查看数据库信息的命令:LIST|DISPLAYDATABASETOPRINTERPROMPT|TOFILENOCONSOLE其中,LISTDATABASE命令连续显示数据库中的信息,DISPLA
7、YDATABASE命令分屏显示数据库中的信息。TOPRINTERPROMPT:将显示结果输出到打印机,包含PROMPT选项可以在打印之前显示“打印”对话框。TOFILE:将显示结果输出到指定的文件中。NOCONSOLE:指明不向VisualFoxPro主窗口或活动的用户自定义窗口输出。实例50查看“招生管理”数据库中信息。在命令窗口中输入:,5.1数据库的基本操作,opendatabase招生管理&打开数据库文件displaydatabase&显示数据库中的信息屏幕显示如图5-3所示。前面显示了数据库的名称、路径、版本。每一个“Table”处显示数据库中的一个表文件名,其后是该表的基本信息。每
8、一个“Field”处显示表中的字段名。每一个“Index”处显示表中的一个索引名。按照这种结构,显示所有信息。由于本例用的是displaydatabase命令,所以当显示满一屏时,屏幕右上角显示“按任意键继续”,不断按任意键显示完所有信息为止。若用listdatabase则所有信息快速滚动显示完毕,也许用户什么也没看清楚!,5.1数据库的基本操作,图5-3显示数据库的信息,5.1数据库的基本操作,5.1.3修改数据库修改数据库是维护数据库的一项重要任务。在“命令”窗口中输入修改数据库的命令:MODIFYDATABASE|?其中,用于指定被修改数据库的位置、文件名。若不指定文件名或在命令后加?,
9、则会弹出“打开”窗口。实例51修改“招生管理”数据库。在命令窗口中输入:modifydatabase招生管理此时,将打开“数据库设计器-招生管理”窗口。同时VisualFoxPro的菜单项中多了“数据库”,“数据库设计器”工具栏也自动打开。对数据库的修改是借助“数据库”菜单项和“数据库设计器”工具栏实现的。在此可以根据需要向数据库中添加、移去、删除表或视图,可以根据需要对表或视图浏览、修改,还可以建立、编辑和删除表之间的关系。修改数据库也可以在项目管理器中实现。,5.1数据库的基本操作,5.1.4删除数据库不再需要的数据库只要未被打开,可以随时删除。删除数据库.dbc文件的同时,也会把同名的.
10、dcx、.dct文件一起删除。在“命令”窗口中输入删除数据库的命令:DELETEDATABASE|?DELETEABLES其中,:用于指定被删除数据库的位置、文件名。若在命令后加?,则会弹出“删除”窗口,选择要删除的数据库文件。DELETEABLES:加此参数,在删除数据库的同时会将其中的表文件一同删除。若省略此参数,数据库中的表文件将会保留。删除数据库也可以在项目管理器中实现。建议不要在操作系统中直接删除数据库文件,例如在Windows的资源管理器里删除。这样容易导致不可预料的后果。,5.1数据库的基本操作,实例52删除“招生管理”数据库。在命令窗口中输入:deletedatabase招生管
11、理此时,弹出“删除数据库?”对话框,若确信无误,则单击“是”按钮即可。,5.2数据库表的属性设置,数据库中的表,可以获得许多在自由表中没有的属性。数据库中的表可以使用长字段名,而自由表的字段名长度不能超过10个字符;数据库中的表可以使用标题(Caption);可以为字段设置默认值,可以设置字段的输入掩码和显示格式等。另外,有些操作只有在数据库中才被支持,例如永久的表间关系、参照完整性、创建视图文件等。这些属性被作为数据库的一部分保存起来,直到表从这个数据库中移去为止。对数据库中的表设置属性分为表的字段级属性和表的属性两部分。字段级属性都集中在如图5-4所示的“字段”选项卡中。表的属性都集中在“
12、表”选项卡中,如图5-5所示。字段级的属性无论是显示,还是注释或者有效性验证都停留在某个字段上。表的属性有针对整个表文件的,也有针对整条记录的。,5.2数据库表的属性设置,图5-4数据库表的字段属性,图5-5数据库表的表属性,5.2数据库表的属性设置,5.2.1设置字段级属性1长字段名自由表的字段名最长仅为10个字符。但数据库表就可以起长达128个字符的长字段名,但不允许用空格。VisualFoxPro将长字段名存在数据库.dbc文件的Objectname字段中,将长字段名的前10个字符作为字段名存储在表文件.dbf中。如果将数据库表从数据库中移出,其长字段名就会丢失,只保留存储在表文件.db
13、f中的前10个字符。设置长字段名只要在如图5-4所示的“字段名”处直接输入即可。,5.2数据库表的属性设置,2设置字段标题在设计表结构时,为了便于操作,或考虑版本升级时的中、英文兼容问题,经常根据字段含义将字段名“缩写”。但“缩写”的字段名不易阅读理解。为了解决这个问题,可以给字段建立标题,在“浏览”窗口中或表单上显示字段名位置处显示设置的标题信息,但不可以作为字段名使用。可以把字段标题理解为对字段名的注释。实例53给“学生基本情况”表的“学习计划”字段设置标题“近两年的学习计划”。(1)打开“学生基本情况”表的表设计器,如图5-4所示。选中“学习计划”字段。(2)在“显示”栏的“标题”文本框
14、中输入“近两年的学习计划”,如图5-6所示。,5.2数据库表的属性设置,图5-6设置字段标题,5.2数据库表的属性设置,(3)单击“确定”按钮即可。此后再浏览“学生基本情况”表时,“学习计划”字段名处均显示“近两年的学习计划”。3设置字段默认值字段默认值是指当添加新记录时,字段值自动设置为由用户预先为该字段设置的值。此设置通常用于该字段大多数记录的值相同的情况下,可以减少重复输入的麻烦。默认值可以是常数,也可以是表达式,只要其数据类型与字段类型一致即可。实例54给“学生基本情况”表的“性别”字段设置默认值为“男”,“报名时间”字段设置默认值为报名当天的日期。(1)打开“学生基本情况”表的表设计
15、器,如图5-4所示。选中“性别”字段。(2)在“字段有效性”栏的“默认值”文本框中输入“男”,如图5-7所示。,5.2数据库表的属性设置,图5-7设置“性别”字段默认值,5.2数据库表的属性设置,(3)同样,选中“报名时间”字段。(4)在“字段有效性”栏的“默认值”文本框中输入显示系统日期的函数date(),如图5-8所示。用户会发现,选择不同的字段时对应的是不同的字段有效性规则。,图5-8设置“报名时间”字段默认值,5.2数据库表的属性设置,(5)设置完毕后单击“确定”按钮即可。4设置字段注释字段注释是指为了便于提醒用户该字段的作用而设置的提示信息。实例55给“学生基本情况”表的“住址”字段
16、设置提示信息“写明所在城市、区县”。(1)打开“学生基本情况”表的表设计器,如图5-4所示。选中“住址”字段。(2)在“字段注释”文本框输入“写明所在城市、区县”,如图5-9所示。,5.2数据库表的属性设置,图5-9设置字段注释,5.2数据库表的属性设置,(3)确认无误后单击“确定”按钮。5设置字段有效性规则与有效性说明数据库表可以设置字段的有效性规则,用来对输入的数据进行验证,减少输入的错误。当用户输入的数据违反该规则时,光标不会离开该字段,系统会弹出违反有效性规则的提示信息,但规则到底是什么样的,如何符合规则要求,用户还是不清楚。这样就希望在定义规则的同时定义有效性说明。实例56“学生基本
17、情况”表的“年龄”字段的值要求大于15小于50,若不满足此年龄范围,显示“参加社会培训的年龄应大于15岁,小于50岁!”(1)打开“学生基本情况”表的表设计器,如图5-4所示。选中“年龄”字段。(2)在“字段有效性”栏的“规则”文本框处输入或单击其右侧的“表达式生成器”按钮,生成具体规则:年龄15and年龄开课日期。(3)在“记录有效性”栏的“信息”文本框处输入:“日期有误,不符合实际情况!请重新输入!”。需要注意的是,此处的信息作为字符串对待,所以要加引号,如图5-15所示。,5.2数据库表的属性设置,图5-15记录有效性规则与有效性说明,5.2数据库表的属性设置,3触发器“表”选项卡中还有
18、一个“触发器”栏。此栏内的3个触发器插入触发器、更新触发器和删除触发器分别控制插入记录、更新记录、删除记录3种操作。当触发器中表达式结果为“真”时,可以做相应操作,否则会弹出“触发器失败”对话框,以此制约用户的操作。触发器的使用类似于有效性规则,但要想对错误操作给出更详尽的解释只能通过编写代码。实例59因为“学生基本情况”表的数据是学生来报名时的原始数据,所以设置删除触发器,不允许删除记录。(1)打开“学生基本情况”表的表设计器,选中“表”选项卡。(2)在“触发器”栏的“删除触发器”文本框处输入:.F.,令此处的表达式结果永远为假,也就永远不允许删除此表的记录了。(3)单击“确定”按钮即可。在
19、实际应用中,触发器的功能通常可以用其他方式实现。在调试程序时触发器可能成为干扰。假如确实需要采用触发器,最好集中对它文档化。,5.3创建索引文件,5.3.1索引的作用VisualFoxPro中的索引类似于新华字典的“音节表”和“部首检字表”。字典中的“音节表”或“部首检字表”是按照拼音顺序或偏旁部首的顺序对汉字排序,并生成指明各个汉字所在页号的列表。VisualFoxPro中的索引也是按照不同的顺序,例如年龄由小到大或性别先男后女,对记录排序的一个列表。就像字典不能只有“音节表”和“部首检字表”而撕掉字典正文一样,索引也不能脱离原表文件独立存在。实际上索引是按照某种方式的一种逻辑排序方法,它并
20、不会改变表中记录的物理顺序。它可以加速检索数据的速度、选择记录、控制重复字段值的输入,还可支持表间的关系操作。,5.3创建索引文件,5.3.2索引文件的类型VisualFoxPro中的索引文件有扩展名为.idx和.cdx两种。生成文件扩展名为.idx时称为独立索引,在此文件中只存储一个按照某表达式生成的一种逻辑排序方法。独立索引主要是为了和以前的版本兼容。例如在“学生基本情况”表中分别按照身份证号、姓名建立单一索引,则将会生成两个独立的扩展名为.idx的索引文件。扩展名为.cdx的是复合索引文件。在一个.cdx文件中可以根据多个表达式生成多种逻辑排序方法。为了区分每种逻辑排序方法,分别为它们起
21、了一个名字,称为该索引文件的索引标识符复合索引文件又分为结构复合索引文件和非结构复合索引文件。结构复合索引文件的主文件名与对应的表名相同,而且由系统自动生成。与结构复合索引文件不同的是非结构复合索引文件的文件名由用户给定。打开表文件的时候,非结构复合索引文件不会同时打开,当然也就不能根据表中数据的改变而更新了。,5.3创建索引文件,根据索引方式的不同,在VisualFoxPro中有4种类型的索引。(1)主索引:此类型索引仅用于数据库中的表,而且每个表文件只能有一个主索引。要建立主索引的字段的值应具有惟一性,即组成索引的字段或表达式在表中不允许有两条以上的记录具有相同的值。例如,在“学生基本情况
22、”表中就不能根据年龄字段建立主索引,因为很难保证每个学生的年龄各不相同。而身份证号字段就是建立主索引的一个非常棒的字段,因为每个人的身份证号都不会相同!(2)候选索引:此类型索引可用于数据库中的表和自由表。每个表文件可以有多个候选索引。像主索引一样,它要求建索引的字段的值具有唯一性。,5.3创建索引文件,(3)唯一索引:此类型索引可用于数据库中的表和自由表。每个表文件可以有多个唯一索引。它允许建索引的字段有相同的值,但仅对首次出现该值的记录进行索引,其余的全部忽略。例如,在“学生基本情况”表中若按性别字段建立唯一索引,结果就只有两条记录第一个来报名的男性记录和第一个来报名的女性记录!(4)普通
23、索引:此类型索引可用于数据库中的表和自由表。每个表文件可以有多个普通索引。它允许建索引的字段有相同的值,并且将具有相同关键字的各条记录按照出现的顺序全部进行索引。,5.3创建索引文件,5.3.3索引文件的创建建立索引文件,常用在表设计器中利用菜单直接建立和使用命令两种方法。实例60为“学生基本情况”表按“身份证号”升序建立唯一索引。方法一菜单方式(1)单击“文件”“打开”命令,弹出“打开”对话框。在“文件类型”处选择“表(*.dbf)”选项。在“查找范围”处选择“学生基本情况”表所在的位置,选中“学生基本情况”表,单击“确定”按钮。(2)单击“显示”“表设计器”命令,弹出“表设计器学生基本情况
24、”窗口。(3)在“字段”选项卡中选择“身份证号”字段,单击“索引”列的下拉箭头,在下拉列表框中选择“升序”,如图5-16所示。(4)单击“索引”选项卡。此时,在“排序”列显示一个向上的箭头,表示升序。在“索引名”列默认以该字段的字段名作为索引名,当然也可以重新命名。在“类型”列默认为普通索引,单击下拉箭头,在下拉列表框中选择“主索引”。在“表达式”列显示建立索引的依据,此处可以是字段名,也可以是表达式,如图5-17所示。此外,若希望对满足条件的部分记录建立索引还可以在“筛选”列中输入条件表达式。,5.3创建索引文件,图5-16选择升序索引,5.3创建索引文件,图5-17选择主索引,5.3创建索
25、引文件,图5-18确认更改(5)单击“确定”按钮,弹出“表设计器”对话框,询问是否永久性地更改表结构,如图5-18所示,单击“是”按钮即可。此时生成的索引文件为结构复合索引文件。在数据库设计器中,索引标识符将被显示在表中字段名的下方,若是主索引还会在索引名前加一个钥匙标记。方法二命令方式(见书),图5-18确认更改,5.3创建索引文件,实例61(见书)实例62为“学生基本情况”表按住址所在的城区对学历是大专的学生建立名为“edu_background”的独立索引文件。用命令:use学生基本情况indexonsubstr(住址,7,6)toedu_backgroundfor文化程度=大专list
26、身份证号,姓名,住址,文化程度显示结果如图5-22所示。,5.3创建索引文件,图5-22索引结果,需要注意的是,在独立索引中不能使用descending参数,若要降序索引需要设计适当的表达式。实例63(见书),5.3创建索引文件,5.3.4索引文件的使用1索引文件的打开只有在打开表文件时才能打开索引文件,只有索引文件打开时才能起到索引作用。当打开表文件时自动打开结构复合索引文件,但独立索引文件和非结构复合索引文件则需用专有命令打开。打开非结构复合索引文件的同时其中的所有索引标识均可使用。由前面的例子可以发现,一个表文件可以根据不同的要求建立多个索引,但多个索引中只能按其中的一个索引记录,也就是
27、说任意时刻只能有一个索引对表有效。把当前对表有效的索引文件或索引标识称为主索引。打开索引文件有菜单方式和命令方式两种。命令有打开表文件的同时打开索引文件和专门用于打开索引文件的命令。方法一菜单方式,5.3创建索引文件,实例64打开独立索引文件“edu_background”。(1)单击“文件”“打开”命令,弹出“打开”对话框。(2)在“文件类型”处选择“索引(*.idx;*.cdx)”选项。(3)在“查找范围”处选择“edu_background”索引文件所在的位置。选中“edu_background”索引文件,单击“确定”按钮。若此时“学生管理系统”表已打开,则edu_background索
28、引立即生效,若此时“学生管理系统”表未打开,则要求打开与索引文件相应的表文件。需要注意的是,若打开“按需排序”非结构复合索引,则记录还是按照物理顺序显示,除非指定其中的某个索引标识作为主索引。方法二命令方式打开表文件的同时打开索引文件在命令窗口中输入命令:USE表文件名|?INDEX|?ORDER|TAGOFASCENDING|DESCENDING,5.3创建索引文件,ASCENDING|DESCENDING其中,INDEX|?:指定一组索引文件随表文件同时打开。索引文件可以是独立索引文件,也可以是非结构复合索引文件。若无额外参数则索引文件名表中的第一个索引为主索引。但若第一个索引文件名是非结
29、构复合索引文件,则记录按物理顺序显示。ORDER:按INDEX中的顺序,从1开始依次为索引文件排号,ORDER就是将第n号索引作为主索引。ORDER1为默认顺序,ORDER0为按物理顺序显示。ORDER:将中的第一个独立索引文件作为主索引。ORDERTAGOF:设置一个结构复合索引文件或非结构复合索引文件中的索引标识作为主索引。ASCENDING|DESCENDING:指定表中的记录按升序或降序方式显示。默认为升序。方法三命令方式独立打开索引文件,5.3创建索引文件,在打开表文件后,也可以单独打开索引文件,在命令窗口中输入命令:SETINDEXTO|?ORDER|TAGOFASCENDING|
30、DESCENDING其中,各参数的含义、用法与USE命令的相同。先打开“学生基本情况”表,再打开edu_background索引文件使用命令:use学生基本情况setindextoedu_background,5.3创建索引文件,2主索引文件的设置除了在打开索引文件时设置主索引外,还可以使用VisualFoxPro提供的数据工作期和专用命令。方法一数据工作期方式实例65设置“身份证号”索引为主索引。(1)单击“窗口”“数据工作期”命令,弹出如图5-24所示的“数据工作期”对话框。(2)单击“打开”按钮,弹出“打开”对话框,选择“学生基本情况”表。该表被显示在“数据工作期”对话框的“别名”列表处
31、,如图5-25所示。,5.3创建索引文件,图5-24“数据工作期”对话框,图5-25打开学生基本情况表,5.3创建索引文件,(3)选中“学生基本情况”表后,单击“属性”按钮,弹出如图5-26所示的“工作区属性”对话框。刚刚打开的表文件在“索引顺序”下拉列表框中显示“”。即此时任何索引都未生效,记录按物理顺序显示。(4)单击“索引顺序”下拉列表框的下拉箭头,选择“学生基本情况.身份证号”索引,如图5-27所示。单击“确定”按钮,索引文件打开。此时,“身份证号”索引生效,记录按该索引顺序显示。,5.3创建索引文件,图5-26“工作区属性”对话框,图5-27选择索引文件,方法二命令方式(见书),5.
32、3创建索引文件,3索引文件的关闭索引文件会随着表文件的关闭而关闭,也可以用命令关闭。在命令窗口中输入下列命令都可以关闭索引文件:CLOSEINDEX或SETINDEXTO4重建索引文件当对表文件中的记录做修改、添加、删除等操作时,若其独立索引文件和非结构复合索引文件打开,则其中的数据会跟着一起变化;若没打开,就不会跟着变化。这就导致索引文件中的数据与表中的数据不一致。为了避免这种现象发生,可以对已有索引文件进行重建。若要重建索引,只要在打开索引文件后,在“命令”窗口中输入命令:REINDEX,5.3创建索引文件,5删除索引标识在复合索引文件中,可以随时删除不需要的索引标识。删除索引标识可以通过
33、表设计器,也可以通过命令。实例66删除“学生基本情况”表的“身份证号”索引。方法一在表设计器中删除索引(1)单击“文件”“打开”命令,弹出“打开”对话框。在“文件类型”的下拉列表框中选择“表(*.dbf)”选项。在“查找范围”下拉列表框选择“学生基本情况”表所在的位置,选中“学生基本情况”表,单击“确定”按钮。(2)单击“显示”“表设计器”命令,弹出“表设计器学生基本情况”窗口。(3)单击“索引”选项卡。选中身份证号索引,单击“删除”按钮。(4)单击“确定”按钮,弹出“表设计器”对话框,询问是否永久性地更改表结构,单击“是”按钮即可。方法二命令方法(见书),5.4表间关系,5.4.1关系的类型
34、如图5-28所示,在设计表文件时要求每个表的字段突出一个中心,而使用数据库管理系统时往往又需要涉及到多个数据库表中的数据。例如在招生管理系统中,“学生基本情况”表存储学生来报名时的自然情况;“学生工作情况”表存储了学生的工作信息;而“学生培训”表中存储了学生在本校学习过程中的情况。若想了解某个学生的年龄、性别、工作单位、在哪个班学习、考试的成绩是多少就必须在这三个表之间建立关系,保证当指针指向“学生基本情况”表中的某学生的记录时,“学生工作情况”表中的指针也指向该学生记录,“学生培训”表中的指针同样指向该学生记录;这样产生的结果才是有效的。在此过程中,我们把主动移动指针的表称为“父表”,例如“
35、学生基本情况”表,把被动移动指针的表称为“子表”,例如“学生工作情况”表和“学生培训”表,它们都是“学生基本情况”表的子表。,5.4表间关系,图5-28数据库中的表,5.4表间关系,表之间有3种关系:一对一关系、一对多关系、多对多关系。(1)一对一关系:A表的一条记录只能对应B表的一条记录,而B表的一条记录也只能对应A表中的一条记录。对于一对一关系的两个表一般可以合并为一个表,但为了避免一个表的字段过多或者为了突出一个中心,将这些字段分离为一对一的两个表。例如“学生基本情况”表与“学生工作情况”表中的记录,一个学生当前只对应一种工作情况,如图5-29所示。,5.4表间关系,图5-29一对一关系
36、,5.4表间关系,(2)一对多关系:一对多关系是关系数据库中最普遍的关系。在一对多关系中,A表中的一条记录在B表中可以有多条记录与之对应,但B表中的一条记录只能对应A表中的一条记录。通常,A表为“父表”,B表为“子表”。例如“学生基本情况”表与“学生培训”表中的记录,每个学生都可以参加多个班的学习,得到多门课程的成绩,如图5-30所示。,图5-30一对多关系,5.4表间关系,(3)多对多关系:在多对多关系中,A表的一条记录在B表中可以对应多条记录,而B表的一条记录在A表中也可以对应多条记录。多对多的关系常常通过一个“纽带表”,转换成两个一对多的关系实现。在纽带表中包含两个表的关键字。例如“学生
37、基本情况”表与“培训班情况”表中的记录:一位学生可以参加多个培训班的学习,一个培训班又可以有多名学员。若要实现他们之间的关系,引入了“学生培训”表作为“纽带表”。在“学生培训”表中既有和“学生基本情况”表相同的关键字“身份证号”,又有和“培训班情况”表相同的关键字“开班编号”,如图5-31所示。,5.4表间关系,图5-31多对多关系,5.4表间关系,5.4.2表间的临时关系根据表之间的关系是否能被保留,VisualFoxPro将关系分为临时关系和永久关系两种。临时关系在表打开后建立并起作用,父表的指针移动时子表的指针也跟着移动。表关闭后关系自动解除,每次使用时都要重新建立。适用于数据库表和自由
38、表。永久关系是在为数据库表之间建立的一种关系。这种关系建立后无论数据库是否打开都一直存在,并作为数据库的一部分保存起来,每次使用时不需要重新建立。永久关系并不控制相关表记录指针间的关系。在查询设计器、视图设计器中使用表时,或在创建表单、报表等文件所用的数据环境中永久关系将作为表间的默认连接。1建立表间临时关系建立临时关系有两种方法。一种是在“数据工作期”窗口中创建,另一种是命令方式。,5.4表间关系,实例67为“学生基本情况”表和“学生工作情况”表建立一对一临时关系。方法一在“数据工作期”窗口中创建一对一临时关系图5-32“数据工作窗口(1)单击“窗口”“数据工作期”命令。单击“打开”按钮,弹
39、出“打开”对话框,选择“学生基本情况”表和“学生工作情况”表,则两个表的表名被列在该对话框的“别名”列表框中,如图5-32所示。在对话框的状态栏显示了被选中的表所在的数据库名、当前被打开的工作区号以及所包含的记录数。,图5-32“数据工作期”窗口,5.4表间关系,(2)选择作为父表的“学生基本情况”表,单击“关系”按钮,对话框中“关系”列表框如图5-33所示。(3)选择作为子表的“学生工作情况”表,弹出如图5-34所示的“设置索引顺序”对话框。在此对话框中显示出该表已建的所有索引。选择与父表具有相同关键字值的索引“学生工作情况:身份证号”,单击“确定”按钮。,5.4表间关系,图5-33选择父表
40、,图5-34“设置索引顺序”对话框,5.4表间关系,(4)弹出“表达式生成器”对话框,若不需对索引表达式进行修改,单击该对话框的“确定”按钮,“关系建立,结果如图5-35所示。单击“关闭”按钮,临时关系建立完毕。此时,在命令窗口中键入命令:browsefields身份证号,姓名,b.工作单位,显示结果如图5-36所示。,5.4表间关系,图5-35关系建立,图5-36浏览结果,方法二命令方法(见书),5.4表间关系,2建立一对多关系以上方法只是建立了表间一对一的关系,若要建立一对多关系,需在此基础上再进行操作。实例68为“学生基本情况”表和“学生培训”表建立一对多临时关系。方法一在“数据工作期”
41、窗口中创建一对多临时关系(1)单击“窗口”“数据工作期”命令。单击“打开”按钮,弹出“打开”对话框,选择“学生基本情况”表和“学生培训”表。(2)选择作为父表的“学生基本情况”表,单击“关系”按钮。(3)选择作为子表的“学生培训”表,弹出“设置索引顺序”对话框。在此对话框中显示出该表已建的所有索引。选择与父表具有相同关键字值的索引“学生培训:身份证号”,单击“确定”按钮。(4)弹出“表达式生成器”对话框,若不需对索引表达式进行修改,单击该对话框的“确定”按钮即可,“数据工作期”对话框如图5-37所示。(5)单击“一对多”按钮,弹出“创建一对多关系”对话框,如图5-38所示。在此已说明了父表,要
42、求从“子表别名”列表框中选择子表。选中“学生培训”,单击“移动”按钮。“学生培训”被移到了“选定别名”列表框处。单击“确定”按钮,返回“数据工作期”对话框,如图5-39所示。与一对一关系相比,两个表间用了两条连线。,5.4表间关系,图5-37“数据工作期”对话框,图5-38“创建一对多关系”对话框,5.4表间关系,此时,在命令窗口中键入命令:browsefields身份证号,姓名,b.开班编号,b.成绩显示结果如图5-40所示。,图5-39一对多关系,图5-40浏览结果,方法二命令方法(见书),5.4表间关系,3解除临时关系两个数据表建立关系后,解除关系可用命令:SETRELATIONOFFI
43、NTO表别名setrelationoff命令与setrelationto命令不同,前者只解除指定的关系,后者则解除与父表的所有关系。5.4.3建立表间永久关系只有数据库表才可以建立表间的永久关系。建立表间的永久关系需在数据库设计器中进行,无论父表还是子表都要建立相应的索引。1建立表间永久关系实例69为“学生基本情况”表和“学生工作情况”表建立一对一永久关系。,5.4表间关系,(1)打开“招生管理”数据库,弹出“数据库设计器-招生管理”窗口。(2)检查“学生基本情况”表和“学生工作情况”表是否都已按照共同的关键字段建立了相应的索引。此处,以“学生基本情况”表作为父表,为其“身份证号”字段建立主索
44、引;以“学生工作情况”表作为子表,为了保证一对一的关系,为其“身份证号”字段建立候选索引。(3)选中“学生基本情况表(父表)”的“身份证号”索引,拖曳到“学生工作情况表(子表)”的“身份证号”索引处。此时,在两表的索引名之间出现了一条两端是“十”字形状的连线,如图5-41所示,关系建立完毕。实例70为“学生基本情况”表和“学生培训”表建立一对多永久关系。与实例69相同,检查“学生基本情况”表和“学生培训”表是否都已按照共同的关键字段建立了相应的索引。此处,以“学生基本情况”表作为父表,为其“身份证号”字段建立主索引;以“学生培训”表作为子表,所不同的是,为了保证一对多的关系,为其“身份证号字段
45、”建立普通索引。,5.4表间关系,选中“学生基本情况表(父表)”的“身份证号”索引,拖曳到“学生培训表(子表)”的“身份证号”索引处。此时,在两表的索引名之间出现了一条父表一端为“十”字形状,子表一端为三条短线的连线,如图5-42所示,关系建立完毕。,5.4表间关系,图5-41一对一永久关系,图5-42一对多关系,实例71(见书),5.4表间关系,图5-44永久关系的快捷菜单2编辑永久关系永久关系建立后,用鼠标右键单击关系连线,此时关系连线加粗,并弹出快捷菜单,如图5-44所示。选择“编辑关系”菜单项,弹出如图5-45所示的对话框。另外,双击连线也可以弹出此对话框。在对话框中,左边下拉列表框中
46、显示了父表的名称及索引列表。右边下拉列表框中显示了子表的名称及索引列表。“关系类型”显示了父表与子表之间的关系。可以通过单击父表与子表下拉列表框的箭头,改变各自的关联表达式。,5.4表间关系,图5-44永久关系的快捷菜单,图5-45“编辑关系”对话框,5.4表间关系,3删除永久关系若要删除永久关系只需选中相应的关系连线,按键盘上的Del键,或在连线上单击鼠标右键,选择快捷菜单中的“删除关系”命令即可。,5.5数据完整性,图5-46子表中有父表没有的记录,5.5数据完整性,参照完整性是指一些建立了关系的数据库表,在插入记录、更新记录、删除记录时的有关规则。通过这些规则控制各表间数据的一致性,保持
47、记录的完整性。这些规则将被写到相应的表触发器中。如果在设计数据库时使用参照完整性规则,则可以保证当父表中没有关联记录时,不允许子表加入该记录;如果因修改父表的值导致子表中出现孤立记录时,则不许父表进行修改;如果父表记录在子表中有匹配的记录,则不允许删除父表中的记录。例如,如图5-46所示的一对一关系的父子表,在子表“学生工作情况”中有一条索引关键字“身份证号”的值为的记录,该记录在父表“学生基本情况”表中根本没有。由于来报名的学生都应先在“学生基本情况”表中出现,有工作的才到“学生工作情况”表中填写相关信息,所以这条记录根本不应在此出现。像这种错误就可以利用参照完整性的规则来避免。,5.5数据完整性,5.5.1参照完整性设计器“参照完整性生成器”对话框如图5-47所示。,图5-47“参照完整性生成器”对话框,5.5数据完整性,在此对话框中包含了三个选项卡。(1)“更新规则”选项卡:用于设置当父表中关键字值被修改时应用的规则,保证修改后父表与子表数据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 美术班班级奖惩制度范本
- 大学寝室管理奖惩制度
- 生产重大异常奖惩制度
- 收货员奖惩制度条例规定
- 六年级课堂奖惩制度
- 流水线小组长奖惩制度
- 财务收支审计奖惩制度
- 超市员工考核奖惩制度
- 庭审奖惩制度汇编模板
- 家庭作业语文奖惩制度
- 烟花爆竹储存培训课件
- 静脉输液不良反应临床识别与应急处理标准化流程指南
- 无偿献血培训课件
- 敬老院及附属工程监理规划以及实施细则
- DG∕T 017-2021 谷物烘干机标准
- 红曲科普课件
- 2025极狐品牌官方直播运营方案
- 2026年江西电力职业技术学院单招职业技能考试题库及参考答案详解一套
- DB32/T 4400-2022 饮用水次氯酸钠消毒技术规程
- 2025年重庆市政府采购评审专家考试真题含答案
- 2025年鄂尔多斯职业学院单招职业技能考试模拟测试卷附答案
评论
0/150
提交评论