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

Database design 我应该在数据中存储默认行为吗?,database-design,data-modeling,Database Design,Data Modeling,默认情况下,我将发票发送到客户的账单地址。当客户喜欢电子邮件发票时,我会将所需地址存储在“发票交付首选项”表中 我是否也应该在这里存储默认行为的实例?也就是说,对邮寄发票满意的客户是否应该在此表中具有其唯一账单地址的行 –对我来说,这只是一个默认流程,因为客户有唯一的账单地址 我担心的是,如果我想在将这些实例存储为行后更改默认行为,我必须更新大量实例。现在,我可以通过告诉1个COBOL例程获取账单地址以外的内容并将其发送到打印/电子邮件服务器来更改默认行为 结果:我决定将默认行为的实例存储在表中

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

我是否也应该在这里存储默认行为的实例?也就是说,对邮寄发票满意的客户是否应该在此表中具有其唯一账单地址的行

–对我来说,这只是一个默认流程,因为客户有唯一的账单地址

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


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

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

以一种且仅以一种方式工作的流程通常更易于构建、更易于故障排除、更易于维护和审查。你可以经常看着代码说,是的。对

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

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


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

我可能不应该假设COBOL程序正在访问SQL数据库,但无论如何,我会让我的答案保持不变。