我应该在数据中存储默认行为吗?

时间:2011-04-15 15:58:03

标签: database-design data-modeling

默认情况下,我会将发票发送到客户的帐单邮寄地址。当客户更喜欢通过电子邮件发送时,我会将所需地址存储在“发票交付首选项”表中。

我是否还应该在此处存储默认行为的实例?也就是说,对邮寄发票合适的客户是否在此表格中包含具有唯一帐单邮寄地址的行?

A similar question was answered “No”, but their defaults were actually identical - 对我来说,这只是一个默认流程,因为客户拥有唯一的帐单邮寄地址。

我担心的是,如果我想在将这些实例存储为行后更改我的默认行为,我将不得不更新其中的大量数据。现在我可以通过告诉1 COBOL例程获取除帐单地址之外的其他内容来更改默认行为,并将其发送到打印/电子邮件服务器。

结果:我决定在表格中存储默认行为的实例,并添加一个“来源”列,将每行标识为“系统默认”或“客户偏好”这样整合了信息,并使发票流程保持一致,至少从“使用过的表”的角度来看。

1 个答案:

答案 0 :(得分:0)

对于一个只能单向工作的流程,有一些东西可以说。

只能以一种方式工作的流程通常更容易构建,更容易排除故障,更易于维护,更易于查看。 (您通常只需查看代码并说“Yup。那是对的。”)

虽然只有这一个问题的认知负荷很低,但真实世界的系统可能有数百或数千个类似的设计点。采用通用方法可以在复杂系统中获得丰厚回报。

这是一种“在确定你有一个非常非常好的篮子”战略之后“将所有鸡蛋放在一个篮子里。”

但是因为SQL数据库非常灵活,所以只需创建一个从两个表中选择正确地址的视图,就可以获得很多好处。然后所有应用程序代码都可以读取该视图。要跟上不断变化的需求,只需更改视图即可。