数据库表之间的联系
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库表之间的联系
表之间的关系主要有三种:一对一,一对多,多对多。VFP支持前两种。
理解好“表之间的关系主要要掌握好主关键字和外部关键字”,如果两张表都具有相同的主关键字,则认为它们具有“一对一”关系,如果一张表的主关键字存在于另一张表中称为“外部关键字”,则认为它们具有“一对多”关系。
14.永久关系与临时关系的联系和区别
[例]:永久关系
OPEN DATABASE JXSL
ALTER 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 1
USE XS
SELE 2
USE CJ ORDER XH
SELE XS
SET RELA TO XH INTO CJ
GO 2
BROW NOWAIT
SELE CJ
BROW
CLOSE TABLE ALL
15.数据完整性
(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<=50
2.js表中有字段jbgz(基本工资),要求jbgz在“100—1000”之间
在jbgz的字段有效性规则中输入jbgz>=100.and.jbgz<=1000
3.js表中有字段xb(性别),要求xb必须是“男”或“女”
在xb的字段有效性规则中输入xb=”男” .or. xb=”女”
4.js表中有字段xm(姓名),要求xm至少含有两个汉字
在xm的字段有效性规则中输入len(alltrim(xm))>=4
5.js表中有字段ximing(系名),要求除了“信息管理系”的老师记录,其它记录都不能进行修改
在js表的更新触发器中输入js.ximing=”信息管理系”
6.js表若有gl小于等于0,则允许删除
在js表的删除触发器中输入gl<=0
[例]:利用SQL命令设置规则等
OPEN DATABASE JXSL
ALTER TABLE CJ ALTER COLUMN CJ SET CHECK CJ>=0 AND ;
CJ<=100 ERROR "成绩在0~100之间"
ALTER TABLE CJ ALTER COLUMN CJ SET DEFAULT 0
16.参照完整性
建立在表关系之上的表之间的约束关系。通过触发器调用存储过程。
17.常用函数
DBC()、DBUSED()、DBGETPROP()、DBSETPROP() p110
SELECT()、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 to