3

来自维基百科关于DRY 软件的文章:

DRY 原则被表述为“系统中的每条知识都必须有一个单一的、明确的、权威的表示。” 该原则由 Andy Hunt 和 Dave Thomas 在他们的著作 The Pragmatic Programmer 中提出。他们将其应用得相当广泛,包括“数据库模式、测试计划、构建系统,甚至文档”。

来自维基百科关于单一真相来源的文章:

在信息系统设计和理论中,正如在企业级实例化的那样,单一事实源 (SSOT) 是指结构化信息模型和相关模式的实践,这样每个数据元素都只存储一次(例如,不超过一个单个表的行)。与此数据元素的任何可能链接(可能在关系模式的其他区域,甚至在远程联合数据库中)仅供参考。

我的问题:如果我正在编写一个数据库应用程序,并且我已经编写了特定的代码来验证用户输入的数据,我是否会打破 DRY 和 SSoT 的原则来定义我的数据库字段的数据类型以最接近地匹配它所期望的数据?(相反,只对每个字段使用文本数据类型。目前,让我们忽略其他潜在的好处,如索引)。

4

1 回答 1

7

如果您的构建过程使用配置文件为数据库和应用程序层生成正确的代码,您就不会违反 DRY 原则。

应用程序程序员仅在应用程序代码级别进行验证并不罕见。这通常是一个错误。

例如,您可以使用单个配置文件生成 javascript 以通过 Web 界面进行验证,生成 SQL DDL,并生成 SQL check() 约束以在数据库级别进行验证。

您无法明智地避免在两种执行环境中运行不同的代码。(遗留数据库应用程序可能有几十种不同的执行环境。)DBA 不必使用您的应用程序代码来更新数据库。其他应用程序代码(您可能不一定被告知的代码)也不必使用您的应用程序代码。

于 2013-05-27T13:52:08.297 回答