【问题标题】:Should I store default behavior in data?我应该在数据中存储默认行为吗?
【发布时间】:2011-08-06 11:14:21
【问题描述】:

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

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

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

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

结果:我决定将默认行为的实例存储在表中,并添加一个“Source”列,将每一行标识为“System Default”或“Customer Preference”这样整合了信息,并使开票过程保持一致,至少从“使用的表”的角度来看是这样。

【问题讨论】:

    标签: database-design data-modeling


    【解决方案1】:

    对于一个只能以一种方式工作的流程,有话要说。

    以一种且仅一种方式工作的流程通常更容易构建、更容易排除故障、更容易维护和更容易审查。 (您通常可以只看代码并说:“是的。没错。”)

    尽管仅这一个问题的认知负荷很低,但现实世界的系统可能有成百上千个类似的设计点。采用通用方法在复杂系统中会获得巨大回报。

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

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

    【讨论】:

    • 我可能不应该假设 COBOL 程序正在访问 SQL 数据库,但无论如何我会让我的答案保持不变。
    猜你喜欢
    • 2011-09-05
    • 2013-01-05
    • 2010-11-26
    • 2014-08-04
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    相关资源
    最近更新 更多