接下来我们可以利用拖放的方式,将Orders 数据表中的UserId 字段拖到Members 窗体中,就会出现「编辑关联」对话盒。我们将对话盒中的「强迫参考完整性」、「串接更新相关数据」以及「串接删除相关纪录」的选项打勾,如下所示:
选择这些选项表示在输入订单数据表时其UserId 字段会参考Members 数据表的UserId 字段,倘若所输入的数据在Members 数据表中没有这个使用者账号,则所输入的使用者是错误的数据,所以不会被接收;这一来可以确保所输入的订单都可以找到是哪个使用者所下的。另外要删除某个使用者数据的时候,假设订单数据中还有参考到这笔要删除的纪录,则也是不允许删除;因为如果把被参考到的纪录删除,那么会造成只有订单数据却不知道是哪一个使用者下单的情形。这样一来就可以确保资料的完整性,不会造成错误的数据或是有孤儿数据等等的问题。选项设定好后,则出现下列的关联图:
在关联图中我们看到两个资料表有一条线连起来,表示这两个数据表之间有关联的关系。到在Members 资料表旁显示数值1,表示Members 资料表的UserId 字段是主键,而且字段内的值不允许重复;而Orders 数据表旁显示∞ 符号,表示Orders 数据表的UserId 字段是外来键,表示字段的数据参考到别的字段的主键,而且允许输入重复的值(因为使用者可以下多笔订单)。所以倘若我们再输入订单数据时,随便输入一个没有在Members 数据表中存在的UserId,我们所输入的数据不会被接受外还会出现如下的警告讯息:
所以其实关联就是一种限制(Constraint),限制使用者所输入的数据必须是正确的,以及限制数据的完整性。善用关系型数据库的一些特点,不但可以帮助我们避免输入错误的数据外,也可以让日后的维护更轻松容易。
