当前位置:文档之家› 数据库表之间的联系

数据库表之间的联系

数据库表之间的联系表之间的关系主要有三种:一对一,一对多,多对多。

VFP支持前两种。

理解好“表之间的关系主要要掌握好主关键字和外部关键字”,如果两张表都具有相同的主关键字,则认为它们具有“一对一”关系,如果一张表的主关键字存在于另一张表中称为“外部关键字”,则认为它们具有“一对多”关系。

14.永久关系与临时关系的联系和区别[例]:永久关系OPEN DATABASE JXSLALTER TABLE CJ ADD FOREIGN KEY XH TAG XH REFE XS&& 前提是XS表已建立索引表达式为XH的主索引或:CREATE TABLE CJ (XH C(6),KCDH C(6), CJ N(3,0);FOREIGN KEY XH TAG XH REFE XS)[例]:临时关系SELE 1USE XSSELE 2USE CJ ORDER XHSELE XSSET RELA TO XH INTO CJGO 2BROW NOWAITSELE CJBROWCLOSE TABLE ALL15.数据完整性(1)字段格式及字段掩码:字段格式码:A D E L $ ! T 等p98输入掩码:X 9 # $ * . , $$[例]:XH字段格式设为T! --- 表示在输入或显示XH时,忽略其前导空格、字母转换为大写[例]:输入掩码为“999-9999999”(2)标题与默认值:注意默认值数据类型。

(3)字段有效性规则:控制输入到字段中的数据的取值范围,该规则是一个逻辑表达式,且当前字段包含在该表达式中。

如果结果为.F.,则拒绝所输入的字段值,并显示提示信息.[注]:该规则只对当前字段有效.如果有判断空的逻辑表达式,例XH为空,则不能用XH=””,而需要用函数EMPTY(XH),ISNULL()等来判断.(4)记录有效性规则:可以校验多个字段之间的关系是否满足某种规则,该规则也是一个逻辑表达式.(5)触发器:绑定在表上的逻辑表达式,是在插入、更新、删除记录时进行的检验规则。

返回值为.T.时,允许执行相应操作,.F.时不允许执行相应操作.[例] 1.js表中有字段gl(工龄),要求“值不能大于50”在gl的字段有效性规则中输入gl<=502.js表中有字段jbgz(基本工资),要求jbgz在“100—1000”之间在jbgz的字段有效性规则中输入jbgz>=100.and.jbgz<=10003.js表中有字段xb(性别),要求xb必须是“男”或“女”在xb的字段有效性规则中输入xb=”男” .or. xb=”女”4.js表中有字段xm(姓名),要求xm至少含有两个汉字在xm的字段有效性规则中输入len(alltrim(xm))>=45.js表中有字段ximing(系名),要求除了“信息管理系”的老师记录,其它记录都不能进行修改在js表的更新触发器中输入js.ximing=”信息管理系”6.js表若有gl小于等于0,则允许删除在js表的删除触发器中输入gl<=0[例]:利用SQL命令设置规则等OPEN DATABASE JXSLALTER TABLE CJ ALTER COLUMN CJ SET CHECK CJ>=0 AND ;CJ<=100 ERROR "成绩在0~100之间"ALTER TABLE CJ ALTER COLUMN CJ SET DEFAULT 016.参照完整性建立在表关系之上的表之间的约束关系。

通过触发器调用存储过程。

17.常用函数DBC()、DBUSED()、DBGETPROP()、DBSETPROP() p110SELECT()、USED()、ALIAS()、FCOUNT()、DELETED()[例]:OPEN DATABASE JXSL? DBC() &&显示C:\NEC\VFP\JXSL.DBC?DBUSED(“JXSL”)&&显示 .T.? DBGETPROP(“XS”,”TABLE”,”PRIMARYKEY”)&&显示XS表主索引标识? DBG ETPROP(“CJ.CJ”,”FILELD”,”RULEEXPRESSION”)&&显示字段规则?DBSETPROP(“XS.XH”,”FIELD”,”CAPTION”,”学号”)&&设置标题四.练习题1.vfp是一种()的数据库管理系统。

A 网络模型 B层次模型C 对象模型D 关系模型2.对于二维表的关键字来说,不一定存在的是()A 超关键字B 候选关键字C 主关键字D 外部关键字3.若同时打开了甲、乙两个项目,对于从甲项目中拖放文件到乙项目的操作,下列说法中正确的是()A 拖放操作并不创建文件的副本,只保存了一个对该文件的引用B 拖放操作后在乙项目文件同一文件夹下创建了该文件的副本C 允许从甲项目的某数据库中拖放一张表到乙项目的某一数据库中D 若拖放操作成功则甲项目中便不存在该文件了4.二维表的结构取决于()A 字段的个数、名称、类型和长度B 记录的个数、顺序C 字段的个数、顺序D 记录和字段的个数和顺序5.在定义表结构时,以下()数据类型的字段宽度都是固定的。

A 字符型、货币型、数值型B 字符型、备注型、二进制备注型C 数值型、货币型、整型D 整型、日期型、日期时间型6.打开已张空表,分别用函数eof()和bof()测试,其结果一定是()A .T.和.T.B .F.和.F.C .T.和.F. D.F.和.T.7.在js.dbf中筛选出性别为“女”的命令是()A.set filter to xb=”女”B.set filter xb=”女”C.set fields to xb=”女”D.set filter to8. 已知js表中有两条记录,下列操作中,返回值一定是.t.的是()A use js(回车) ?bof()B use js(回车) go 2 (回车) skip-1(回车) ?bof()C use js(回车) go bottom(回车) skip(回车) ?eof()D use js(回车) skip-1(回车) ?eof()(回车)9. 打开一张表后,执行下列命令:go 6 (回车), skip -5(回车),go 5(回车),则关于记录指针的位置说法正确的是()A 记录指针停在当前记录不动B 记录指针的位置取决于记录的个数C 记录指针指向第5条记录D 记录指针指向第1条记录10. 设计数据库时,可使用纽带表来处理表与表之间的()A多对多关系 B 临时关系C永久关系 D 继承关系11. .在向数据库添加表的操作中,下列叙述中不正确的是()A 可以将一张自由表添加到数据库中B 可以将一张数据库表直接添加到另一个数据库中C 可以在项目管理器中将自由表拖放到数据库中使它成为数据库表D 欲使一张数据库表成为另一个数据库的表,则必须先使其成为自由表12. 数据库表之间创建的永久关系保存在()中。

A 数据库表B 数据库C 表设计器D 数据环境设计器13. 下列关于表的索引的描述中,错误的是()A 复合索引文件的扩展名为.CDXB 结构复合索引文件随表的打开而自动打开C 当对表进行编辑修改时,系统对其结构复合索引文件中的所有索引自动进行维护D 每张表只能创建一个主索引和一个候选索引14. 在数据库JXSJ.DBC中,要获得表JS.DBF的字段GH的标题,先打开数据库JXSJ.DBC且为当前数据库,再使用函数DBGETPROP(_()_____,”FIELD”,”CAPTION”)A JS.GHB “JS.GH ”C GHD “GH”15. 在参照完整性的设置中,如果当主表中删除记录后,要求删除子表中的相关记录,应将“删除”规则设置为()A 限制B 级联C 忽略D 任意16. 库表字段的默认值保存在()文件中。

A 表B 数据库C 项目D 表的索引17. 当库表移出数据库后,仍然有效的是()A 字段的默认值B 表的验证规则C 结构复合索引D 记录的验证规则18. 以下()操作将造成相关表之间数据的不一致。

A主表中插入记录的主关键字的值是子表中所没有的。

B主表中删除了记录,而在子表中没有删除相关记录C子表中删除了记录,而在主表中没有删除相关记录D用主表的主关键字字段的值修改了子表中的一个记录19. 以下()操作不会损坏相关表之间的数据一致性。

A 删除了子表中的记录而没有删除主表中相关记录B 删除了主表中的记录而没有删除子表中相关记录C 在子表中插入记录的外部关键字值是主表关键字中所没有的D 在主表中修改了主关键字的值而没有同时修改子表中相关记录的外部关键字20. 当成功执行了下一组命令时,下列不正确的说法是()OPEN DATABASE JXSJOPEN DATABASE RSDAA 由于打开了第二个数据库RSDA,而使得JXSJ数据库被关闭B 当前数据库是RSDAC 表达式DBUSED(“JXSJ”) AND DBUSED(“RSDA”)的值为.T.D 当在执行close databases 命令后,jxsj数据库没有被关闭21.在JS表中要删除所有工龄(GL)大于60的记录的SQL命令是:DELETE ___1_JS WHERE ____2_______,要彻底删除这些记录,可用——3——命令,但这一命令的实施,必须要求表以—4—方式打开。

22.在JS表中要按如下要求更改基本工资(JBGZ):工龄在10年以下(不含10年)基本工资加20工龄在10—19年基本工资加35工龄在20年以上(含20年)基本工资加50可用一个UPDATE命令完成上述更改UPDATE JS _5____ JBGZ=IIF(JS.GL<10,____6____,IIF(__7____,JBGZ+50,JBGZ+35))23.如果学生表(XS.DBF)以在当前工作区中打开,要筛选出专业代号ZYDH为“102001”的记录的命令是____8_____,要取消该筛选的命令是___9______24.若要实现多字段排序,即先按班级(BJ,N,1)顺序排序,同班的同学在按出生日期(CSRQ,D)顺序排序,同班且出生日期也相同的再按性别(XB,C,2)顺序排序,其索引表达式为_10____25.打开一张空表,在不移动记录指针的情况下,函数BOF()的值是__11___,EOF()的值是__12__,RECNO()的值是___13____.如果打开的表中有1条记录,在不移动记录指针的情况下,BOF()的值是__14_____,EOF()的值是___15_____,RECNO()的值是__16_____26.某公司数据库中雇员表含有两个日期型字段:出生日期和雇佣日期,为了避免雇佣15岁(含15岁)以下的童工,应为该表设置__17___有效性规则,规则表达式为___18______27.如果字表中已有相关记录,修改主表记录的主关键字时,要求同时修改字表中相关记录,则参照完整性的___19_______规则应设置为_____20______.答案:选择题: D D A A D A A C B AB B D B B BC B A B填空题:1.FROM 2.GL>60 3.ZAP 4.独占 5.SET6.JBGZ+207.JS.GL>208.SET FILTER TO ZYDH=”102001”9.SET FILTER TO 10.STR(BJ)+DTOC(CSRQ)+XB11..T. 12..T. 13.1 14..F. 15..F. 16.117.记录级18.YEAR(雇佣日期)-YEAR(出生日期)〉=1519.更新20.级联。

相关主题