软件设计:DRY,单一事实来源和数据验证

时间:2013-05-27 01:15:38

标签: database-design dry single-source

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

  

DRY原则被称为“每一条知识必须在系统中具有单一,明确,权威的表示”。安迪·亨特和戴夫·托马斯在他们的“实用程序员”一书中提出了这一原则。他们广泛应用它包括“数据库模式,测试计划,构建系统,甚至文档”。

来自维基百科关于Single Source of Truth的文章:

  

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

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

1 个答案:

答案 0 :(得分:7)

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

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

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

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