我有两个表: 具有三(3)个字段的“项目”。两(2)个字段的一个组合键:Donor_Source和Project_Number和项目标题
请注意,Donor_Source字段的索引为是(重复确定),而Project_Number字段的索引为是(否重复)。 之所以必须这样,是因为捐助者可以支持多个项目。
最后还有PRF_Table,它具有许多字段,但是由于我想将其与Project表关联,因此我制作了两个字段用作Projects表的外键:
请注意,外键的两个字段都被索引为:NO。 当我尝试关联两个表时,我设法关联了两个表中的项目字段,但是无法关联两个表中的捐助者源字段:
从上图可以看出,我设法在PRF_Table和Project之间获得了许多:1关系,这是正确的。 PRF_Table可以在一个特定项目上有很多记录,但是该项目在Project表中仅列出一次
尝试关联Donor_Source字段时出现问题:我总是得到不确定的关系(我想避免的事情)。我猜可能是因为Project表中的Donor_Source字段尽管已建立索引,但仍然可以重复,当然在PRF_Table中也可以重复。
我该怎么做才能获得许多:1关系(PRF_Table:Projects)?
答案 0 :(得分:0)
复合键中的所有字段都必须寻址以创建参照完整性。
因此,您必须:
在PRF_Table中创建字段Agrmnt_ID,并将其包含在与联结表的关系中。
在与表项目的关系中的PRF_Table中包括字段Donor_Source。
答案 1 :(得分:0)
您无需为Agrmnt_ID
中的PRF_Table
创建一个具有参照完整性的字段。到目前为止,您在PRF_Table
和PRF-PO_Junction_Table
之间所做的事情都很好。
关于Projects
和PRF_Table
之间的链接,看来您的意图是使Projects
中的每个记录都能够与PRF_Table
中的多个记录相关。如果是这样,那么您的解决方案是更改Projects
中的主键,并因此更改两个表之间的关系。
在表Projects
中,删除当前的组合主键并创建一个自动编号字段(即名为ProjectID
)作为主键。
现在,在Projects
表中的Donor_Source
和Project_Number
字段上创建唯一索引(复合唯一索引),这将为您带来相同的效果作为您当前的组合主键方案,每个捐赠者可以在多个项目中,但是同一捐赠者不能在同一项目中多次。
现在,您将在PRF_Table
中创建与在第1步中在Projects
中创建新主键(即ProjectID
)相同的字段
在Projects
中的新主键和PRF_Table
中的新字段之间建立关系。这将允许Projects
中的每个项目/捐助者记录在PRF_Table
中具有多个记录。
复合主键在联结表中最有用,例如如何与PRF-PO_Junction_Table
一起使用。但是,在任何其他链接中,您都想尝试拥有一个主键字段,并仅使用唯一的复合索引来在两个或多个字段中强制唯一性。