关系数据库模式:多个贡献者表,多个贡献表



我正在Microsoft Access 2007中开发一个成分关系管理系统。我们有两种类型的贡献者,每种都有自己的表:

  1. components ,其中包含个人的姓名和年龄以及不同表中不同联系信息的一堆外键

  2. Organizations,包含组织特定信息的字段。

选民和组织都可以做出多个贡献,这些贡献由以下3个表中的一个记录来表示: pledge InKindDonations monarycontributions 。这3个表不能合并,它们包含不同类型的信息。

允许组织做出贡献将是现有数据库的一个新特性。目前只有components可以做出贡献:3个贡献表中的每一个都有一个ConstituentId字段,它是[components]的FK。[ConstituentId]。

我遇到了麻烦,想出了一个好方法来链接贡献者记录从选民& &;有贡献记录的组织,同时使用Access中可用的特性保持引用完整性,并且对引用这5个表的许多现有查询和过程进行最小的更改。

我唯一的想法是,我可以在3个贡献表中分别添加一个OrgId字段,这将是组织的FK。OrgId—但我必须确保2个FK字段中的一个且只有一个(ConstituentId &每个贡献都存在OrgId,并且它们是有效的fk。

这是一个好的解决方案还是一个丑陋的hack?

您的解决方案将需要最小的更改,但是您将无法保持参照完整性,因为参照完整性不会让您在PledgesInKindDonationsMonetaryContributions中有记录,除非您在Organizations components 中对每个记录都有FK值。例如,如果您为Organizations设置了参照完整性,并为components添加了一条记录,那么贡献表中的OrgId将必须为空白,这将违反这些表相对于Organizations表的参照完整性。如果您仍然希望保持引用完整性,另一种方法(需要修改许多表单和报告)是在Organizations表中添加ConstituentId,或者在 components 表中添加OrgId,您将不得不修改列出Organizations、components和贡献的报告和表单,以区分人的贡献和组织的贡献。

为了保持使用引用完整性的可能性,您还可以在 components Organizations表中添加一个新的 contributor 表,并在 components Organizations表中添加一个CcontributorId FK,就像以前一样,您必须更改报告、清单和总计表单。

您应该考虑最后两个选项,因为您也有可能被要求更改/创建涉及组织贡献的报告。

最新更新