Database design 数据库设计-定义与和/或的协议条款之间的关系

Database design 数据库设计-定义与和/或的协议条款之间的关系,database-design,normalization,database-schema,Database Design,Normalization,Database Schema,我将在接下来的几个月里设计一个数据库,我认为有一个问题即将出现,这将是一个重大的挑战 如何使用和/或条件跟踪协议条款和产品之间的关系 因此,我们真正感兴趣的是客户对各种产品的协议,以及这些协议是并行的还是不连续的 要记住的一些事情 1) 一个客户可以有多个协议,涵盖各种产品 2) 一个单一的协议看起来是这样的(尽管它们可能变得更加复杂): 因此,我面临的挑战是在(希望有点)规范化结构中表示这些变化复杂的条件协议。这将是一个生产数据库,数据完整性至关重要 数据源位于该数据库的上游,目前协议存储为每

我将在接下来的几个月里设计一个数据库,我认为有一个问题即将出现,这将是一个重大的挑战

如何使用和/或条件跟踪协议条款和产品之间的关系

因此,我们真正感兴趣的是客户对各种产品的协议,以及这些协议是并行的还是不连续的

要记住的一些事情

1) 一个客户可以有多个协议,涵盖各种产品

2) 一个单一的协议看起来是这样的(尽管它们可能变得更加复杂):

因此,我面临的挑战是在(希望有点)规范化结构中表示这些变化复杂的条件协议。这将是一个生产数据库,数据完整性至关重要

数据源位于该数据库的上游,目前协议存储为每个产品/协议组合的单行
[AgreementID]-[product]-[Terms]
。但是,如果我能找到更好的方法,它可能会被迁移到新的数据库中

有没有人遇到过这样的问题,或者有什么建议


非常感谢您的帮助

您可以这样设计模式:

客户(客户ID、名称) 客户协议(客户ID、协议ID、签署日期) 协议(协议ID、协议有效开始、协议有效结束、正文)


对协议表使用时间点架构设计,以查看协议是当前协议还是过去有效:。

您可以这样设计架构:

客户(客户ID、名称) 客户协议(客户ID、协议ID、签署日期) 协议(协议ID、协议有效开始、协议有效结束、正文)


为协议表使用时间点架构设计,以查看协议是当前协议还是过去有效:。

要支持产品,您需要向与产品密钥相关的Customer_agreements表中添加外键。感谢您的建议和宝贵资源。我绝对认为这是解决这个问题的正确方向。我将不得不认真考虑如何实施它。但是,如果我理解正确,我可以为给定的产品协议创建一个记录,然后使用一个附加字段
Operator
和另一个字段
JoinedProduct
将其绑定到其他记录。我不知道我是否说得很清楚,但我正试图用通俗易懂的英语来模拟协议。因此,在我的数据库中,我将知道何时将产品绑定在一起,如Prod1的
20和Prod2的10或$100 Prod3
,以支持产品,然后您将向与产品密钥相关的客户协议表中添加外键。感谢您的建议和大量资源。我绝对认为这是解决这个问题的正确方向。我将不得不认真考虑如何实施它。但是,如果我理解正确,我可以为给定的产品协议创建一个记录,然后使用一个附加字段
Operator
和另一个字段
JoinedProduct
将其绑定到其他记录。我不知道我是否说得很清楚,但我正试图用通俗易懂的英语来模拟协议。因此,在我的数据库中,我将知道产品何时绑定在一起,如Prod1的
20和Prod2的10或$100 Prod3
5 of Product-A AND 10 of Product-B OR 50 of Product-C OR $500 of Product-D