管理客户数据的任何简单方法都会改变对全局参考文件的请求?

时间:2010-04-08 23:15:55

标签: database database-design data-structures

我是第一次在一个环境中开发,在这个环境中有一个用于许多不同行业标准参考数据表的中央存储库,以及许多不同的客户需要从这些行业标准参考数据表中选择记录来填写客户特定记录的外键信息。

由于所有客户都使用这些行业标准参考文件,因此我希望为全局产品管理员保留对这些记录的创建/更新/删除访问权限。但是,我想实现一个(半)自动化界面,通过该界面,特定客户可以请求对所有客户共享的任何行业标准参考文件进行记录添加,删除或修改。

我知道我需要像“数据更改请求”表那样指定:

用户ID, 用户请求日期时间, 请求类型(插入,修改,删除), 用户输入了更改请求的文本说明, 用户请求的当前状态(待处理,已拒绝,已完成), 管理员解决日期时间, 管理员ID, 管理员输入了分辨率的文字说明, 等

我无法弄清楚如何优雅地处理这些数据更改请求可能适用于具有不同表列定义的数十个不同表的事实。我想给客户用户提供这些数据更改请求的便捷方式,将他们建议的记录添加/修改直接输入CRUD屏幕,看起来非常像参考表CRUD屏幕,他们没有写入/删除权限(与一个额外的文字说明,也许还要求优先领域)。我还想给全局管理员一个工具,允许他们查看他们监督的用户按所请求的日期或请求的用户/日期排序的所有未完成的数据更改请求。从列表中选择数据更改请求记录后,管理员将被定向到另一个CRUD屏幕,该屏幕将填充客户用户为新/修改的行业标准参考表记录请求的字段以及客户的文本说明,请求状态和文本解析说明字段。此时,管理员可以接受/编辑/拒绝所请求的更改,如果接受,受影响的行业标准参考文件将使用相应的字段自动更新,并且数据更改请求记录的状态,文本解析说明和解决日期时间也都适当更新。

但是,我希望保持实际的生产参考表尽可能简单,并且不受这些无关且通常为空的客户变更请求字段的影响。我还希望数据更改请求文件聚合所有参考表中的所有数据更改请求,但以某种方式“指向”特定参考表和有问题的主键以进行修改&删除请求或特定参考表以及相关客户用户输入的记录创建请求的字段值。

有没有人对如何有效地设计这样的东西有任何想法?我缺少一种更清洁,更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

选项1

如果保留基表很重要,那么我将创建一个“更改详细信息”表作为更改请求表的子项。我想象的是

ChangeID
表名
TableKeyValue
字段名
ProposedValue
添加/更改/删除指示器

因此,对于每个提议的字段更改,此表中都有一行。这种情况下的挑战是保持TableName和FieldName值到实际表和字段的映射。如果您的数据库结构相当静态,那么这可能不是问题。

选项2

向每个基表添加ChangeID字段。建议进行更改时,在填充了ChangeID的基表中添加记录。例如,如果您有公司表,对于单个公司,您可以拥有多个记录:

CompanyCode  ChangeID  CompanyName  CompanyAddress
-----------  --------  -----------  --------------
COMP1                  My Company   Boston        <-- The "live" record
COMP1               1  New Name     Boston        <-- A proposed change

当管理员提交更改时,将删除或存档现有的实时记录,并从建议的记录中删除ChangeID值,使其成为实时记录。使用此选项处理建议的删除可能有点棘手。此选项还可能影响为正常使用选择实时数据的性能。但是,它确实为您节省了在代码中某处维护表名和字段名列表的麻烦。

我相信别人会有一些意见!