当我们把2张表建立联系的时候,这2个表肯定是有关系的。它可以是一对一的关系;如果是多对多的关系,这是不允许出现的(说明表及其关系设置有问题);大多数都是一对多的关系,当建立了一对多关系时数据库引擎就自然建立完整性原则,它能保证2个表之间的关系及数据得到正确的维护,从最基本的意义上说,防止“多端”出现不完整的记录。
参照完整性规则要求:1、不允许在“多端”的字段中输入1个“一端”主键不存在的值;2、如果某一记录有相关的记录存在于关系表中,那么数据库引擎不允许从“一端”删除这个记录(除非选择了级联删除相关字段,这样会同时删除“一端”和“多端”的记录,从而保证数据的完整性),因为如果允许又回出现第一种情况。3、如果某一记录有相关的记录存在于关系表中,那么数据库引擎不允许改变“一端”主键的值(除非选择了级联更新相关字段,这样会同时更新“一端”和“多端”的主键值,从而保证数据的完整性),因为如果允许又回出现第一种情况。
现在,回到你的问题。
1、如果你的2个表在没有数据时,建立上面的关系,肯定可以,并且可以“实施参照完整性”,以后你在“借书证”表中输入“书号”时,数据库会限定这个“书号”只能是“书”表中存在的书号,这是为了保证数据的完整性。
2、我可以肯定你的2个表是先有数据,后再想建立关系并想实施参照完整性的,而且“借书证”表中至少有1个以上的“书号”在“书”表中没有相应的记录,此时如果你强行建立参照完整性,这就违反了参照完整性的要求(不允许在“多端”的字段中输入1个“一端”主键不存在的值),换句话说,你的多端(既借书证表)存在了一端(既书表)中没有的记录,数据库不允许出现这种情况,所以出现提示框的内容。
3、改进方法有3种,建议前2种。①、删除“借书证”表中在“书”表中没有相关“书号”的记录,后再建立关系及参照完整性;②、在“书”表中添加相关的书号,以保证“借书证”表中所有书号在“书”中都存在,然后再建立关系及参照完整性;③、像提示框所说的“清除参照完整性复选框”,这可以建立关系,但不能实施参照完整性,不建议这样做,因为不实施参照完整性会导致数据不完整,以后会有大麻烦的。
4、“借书证”表和“读者”表 的关系也应该如上处理。
亲,具体描述您的问题,也可以加我526455424