通俗的讲,对应关系主要由一对一和一对多。
不能建立关系可能为以下原因,以父母子女关系为例:
主键空值——对应方法为:去掉主键中的空值;
主键没有唯一(一个人只能有一对亲生父母)——对应方法为:去掉主键中重复的值;
缺乏主键(人都是父母生的)——对应方法为:添加外键所需的主键(把父母找过来);
更多信息请参考《Access2007宝典》-完整性规则
第一条参照完整性规则说明任何主键都不能包含空值。空值( null) 只是一种不存在的值。
尚未赋值的字段值(即使是默认值〉就是空。数据库表中任意一行记录的主键字段都不应该为空
值,因为主键的主要目的就是要确保行的惟一性。显然,空值不是惟一的,如果主键为空值,则
关系模型就不能正常工作了。
Åccess 会自动实施第一条参照完整性规则。在向表中添加数据时,不可能保留主键字段为空
而不会产生任何警告〈这是"自动编号"字段可以很好地作为主键使用的一个原因〉。一旦在Access
表中指定一个字段作为主键之后, Access 就不会允许删除这个字段中的数据了,也不会允许修改
这个字段中的值,否则可能会与另外一条记录中的值重复。
在使用由几个字段构成的复合主键时,这个复合主键中的所有字段都必须包含值。没有字段
允许为空。复合主键中的组合值必须是惟一的。
、第二条参照完整性规则是说所有外键值都必须匹配对应主键值。这就意味着对于一对多关系
的"多"端的表中的每条记录来说,在这个关系的"一"端的表中都必须有一条对应记录。
那些在"一"端没有对应记录的"多"端的记录就称为孤儿记录,应该从数据库方案中删除。
如何确定数据库中的孤儿记录非常困难,因此最好要避免这种情况的出现。
没看到文件,根据你的描述猜测,可能是想关表中的数据有,但主表中没有,就无法建立这种关系。比如:主表(表1)为:编号 职员姓名01 张三02 李四a相关表(表2)为:职员编号 培训日期 培训内容01 XXXX XXXX01 XXXX XXXX02 XXXX XXXX03 XXXX XXXX上面(表2)中有职员编号为03的,但主表(表1)中没有,这时你在(表1)中加入这个职员或(表2)中删除这个职员,再建立关系应该就可以。