【发布时间】:2012-01-30 07:00:21
【问题描述】:
我做了很多研究,我相信我的数据库在 4th NF 中(被告知没有必要再进一步),但仍然感觉有些不对。
我有一个表 TRUNK,两个表通过外键引用: RATECARD 作为一个主干可用于许多费率卡(区别在于有效时间、呼叫计划等);此外,我还有一个 RATEBUYINGINFO,它基本上是您从中继提供商处下载的信息,其中包含有关不同目的地和类似目的地的费率信息。显然,随着价格随时间变化,更多的 RATEBUYINGINFO 对象可以与一个主干相关联,但是 RATEBUYINGINFO 和 RATECARD 没有直接连接,除了它们可能引用一个主干,所以我在这两个表中都有 TrunkID 作为外键。
然后我有基于某些 RATECARD 的销售率信息(RATESELLINGINFO 表)以及目的地信息以及中继信息,所有这些信息都在 RATEBUYINGINFO 表中进行跟踪(不,我没有看到指出将 DESTINATION 作为单独的表单独列出,因为不同提供商的不同中继不提供唯一的目的地名称),所以我在 RATESELLINGINFO 表中有外键 RateCardID 和 RateBuyingInfoID 作为外键。
现在的问题是,通过这两个外键,最后一个表可以访问两个 TrunkID 值(一个在 RATECARD 中,一个在 RATEBUYINGINFO 中),它们应该始终相同(显然,一个销售率是指一个主干)但是数据库架构不会以任何方式保证这一点。 这个问题有没有优雅的解决方案?
【问题讨论】:
标签: mysql database-design optimization normalization telephony