根据我在这里找到的讨论:数据库:删除或不删除记录,我想特别关注参考数据,对此添加一些想法,并询问您的一般首选方法,或者基于您的标准决定您采用哪种方法。
让我们为客户的“请求数据库”假设以下数据结构,而请求可以通过各种渠道(电话、邮件、传真……;我们的“我主要关注的参考数据表”)传递:
Request (ID, Text, Channel_ID)
Channel(ID, Description)
首先,让我们假设这两个表中有以下数据:
要求:
ID | Text | Channel_ID
===============================================================
1 | How much is product A currently? | 1
2 | What about my inquiry from 2011/02/13? | 1
3 | Did you receive my payment from 2011/03/04? | 2
渠道:
ID | Description
===============================================================
1 | Phone
2 | Mail
3 | Fax
那么,假设以下要求,你如何解决这个问题:
频道可能会随着时间而改变。这意味着:他们的描述可能会改变。可以添加新的,仅从某些特定数据开始有效。频道可能会失效(在某个特定日期之前)
出于报告和监控的目的,可能需要确定最初是使用哪个渠道提交请求的。
对于新请求,应该只允许当前“有效”的通道,而对于预先存在的请求,也应该允许在该特定日期有效的通道。
在我的理解中,这显然需要一种超越删除标志的更丰富的失效方法,可能是结合了参考数据表的“ValidFrom / ValidTo”方法。
另一方面,这在请求的数据捕获过程中会遇到一些困难,因为对于新请求,您只显示它们当前可用的通道,而对于维护先前存在的通道,需要在创建此记录时所有可用的通道显示。这不仅从开发的角度来看很复杂,而且对用户来说也可能是不直观的。
您通常如何为随着时间的推移可能出现的参考数据设置数据模型?那你如何创建你的用户界面呢?对于正确的数据库设计,您还考虑了哪些其他参数?