【发布时间】:2011-05-08 00:10:19
【问题描述】:
在一些项目中,我发现需要在 Db 中创建一个虚拟记录,以便在不破坏 Db 约束的情况下保持业务逻辑继续运行。
到目前为止,我已经通过两种方式看到了它的用法:
- 通过添加像 IsDummy 这样的字段
- 通过添加一个名为 ObjectType 的字段,它指向一个类型:Dummy
好的,它有助于解决需要实现的目标。
但让我对此类解决方案感到警惕的是,有时您必须记住,应用程序中存在一些需要在某些进程中处理的虚拟记录。如果没有,您将面临一些问题,直到您意识到它们的存在或团队中的某个人告诉您“啊哈!您忘记了虚拟记录。您也应该这样做......”
所以问题是: 创建虚拟记录以保持业务逻辑不变而不让 Db 抱怨是个好主意吗?如果是,防止开发人员跳过他们的存在的最佳做法是什么?如果没有,您会采取什么措施来防止自己陷入最终只能选择创建虚拟记录的情况?
谢谢!
【问题讨论】:
-
您能否详细介绍一下 IsDummy 和 ObjectType 的实际用途?为什么您需要这些来解决您的业务限制?
-
您永远不需要创建虚拟记录。我看不到虚拟记录的用途是什么?如果您不使用虚拟记录,数据库会如何抱怨?你是说某些 select 语句使用这个 dummy 来返回可以添加的记录集?
-
拥有近 15 年的数据库开发经验,我想我从来没有遇到过这种情况。这并不是说它不可能,只是我认为这表明设计不正确。你能举一个更具体的例子说明这个问题在哪里/为什么存在。
-
我明白了。尽量用一个简单的案例来解释一下。假设您有一个 Package 对象,并且您已经实现了一个业务逻辑,即无法创建没有任何内容的 Package。您创建了一些业务层规则并设计了具有相关约束的数据库。但是几年后,需要一个新功能并且要实现它,您必须能够创建一个没有内容的包。为了克服这个问题,您决定创建一个在 UI 上不可见但允许您创建空包的虚拟内容。我能说得清楚一点吗?
-
哈哈。我刚刚浏览并投票每个响应(包括 cmets)反对使用所述“虚拟对象” - 当时它是全部 10 个。
标签: c# .net oop database-design dummy-data