Sql server 不同模式下的数据库设计帮助

Sql server 不同模式下的数据库设计帮助,sql-server,xml,database-design,sql-server-2000,Sql Server,Xml,Database Design,Sql Server 2000,我在一家计费服务公司工作,该公司的核心服务使用一些复杂的基于大型机的计费软件。我们有各种各样的代码,我们设置,用于跟踪的东西:付款代码,供应商代码,注销代码,等等。。。每种类型的代码都有一组完全不同的数据项,用于控制代码的功能和行为 我的任务是建立一个新的系统来跟踪对这些代码所做的更改。我们想知道是谁请求了什么代码,是谁/什么时候审核、批准和实现的,以及该代码的确切设置是什么样子的。当前进程只跟踪两种不同类型的代码。该项目将立即添加对第三个进程的支持,目的是使以后在同一进程中添加其他代码类型变得

我在一家计费服务公司工作,该公司的核心服务使用一些复杂的基于大型机的计费软件。我们有各种各样的代码,我们设置,用于跟踪的东西:付款代码,供应商代码,注销代码,等等。。。每种类型的代码都有一组完全不同的数据项,用于控制代码的功能和行为

我的任务是建立一个新的系统来跟踪对这些代码所做的更改。我们想知道是谁请求了什么代码,是谁/什么时候审核、批准和实现的,以及该代码的确切设置是什么样子的。当前进程只跟踪两种不同类型的代码。该项目将立即添加对第三个进程的支持,目的是使以后在同一进程中添加其他代码类型变得容易。我的设计难题是,每种代码类型都有一组不同的数据,需要使用它进行配置,其复杂性各不相同。因此,我有几个选择:

  • 我可以给每种代码类型它自己的表,并独立地构建它们。考虑到目前我只关心三个代码,这将是最简单的。然而,这个概念已经失败了,否则我就不会首先构建一个新的系统。它还很弱,因为在表示层编写通用源代码以显示任何代码类型(即使是尚未实现的代码类型)的请求数据所涉及的代码并不简单

  • 构建一个db模式,该模式能够存储与每种代码类型相关联的数据点:不仅是值,还包括它们是什么类型以及它们应该如何显示(某种枚举的下拉列表)。我有一个不错的db模式,但感觉不对:查询和维护过于复杂,最终需要一个自定义查询来查看每种代码类型的完整数据

  • 将每个代码请求的数据点存储为xml。这大大简化了数据库设计,并有望使构建接口更容易:只需为每种代码类型设置一个模式。然后编写代码,验证对其模式的请求,将模式转换为显示小部件,并将实际请求项映射到显示上。此项缺少的是如何处理对架构的更改

我的问题是:你会怎么做?我是否错过了任何大的设计选项?这些选择还有其他的优点/缺点吗

我目前倾向于使用xml选项。考虑到模式更新是预期的,但极不频繁(可能每18个月不到一个代码类型),我是否应该构建它以假设模式从未更改,但这样我以后就可以轻松地添加对更改模式的支持?在SQLServer2000中会是什么样子(我们正在迁移到SQLServer2005,但要等到这个项目完成后才能准备好)

[更新]:

我考虑xml的一个原因是,一些数据将是复杂的:嵌套/条件数据、枚举下拉列表等,但我真的不需要查询任何数据。所以我认为用xml模式定义这些数据会更容易


然而,LeDorfier关于引进一项全新技术的观点却非常接近于现实。目前,我们在任何地方都很少使用xml。这一点正在慢慢改变,但目前看来这有点不合适


我也不完全确定如何从模式构建输入表单,然后以优雅的方式将与该模式匹配的记录合并到表单中。通常只存储部分完成的记录,因此我不想从记录本身构建表单。不过,这是另一个问题的主题

从目前为止的所有评论来看,Xml仍然是首选。单独的表格可能同样好,也可能更好,但我觉得我的经理会认为,与我们目前正在做的工作相比,这并没有太大的不同或通用性。

在web上搜索“通用专用关系建模”。您将找到关于如何设置表来存储每种代码的属性以及所有代码的公共属性的文章

如果您对对象建模感兴趣,只需搜索“通用专用对象建模”

在网上搜索“广义专门关系建模”。您将找到关于如何设置表来存储每种代码的属性以及所有代码的公共属性的文章

如果您对对象建模感兴趣,只需搜索“通用专用对象建模”

你为什么说“这个概念已经失败了,否则我一开始就不会建立一个新的系统”?是不是因为你怀疑一定有一个共同处理这些问题的方案

否则我会继续现有的理念,并建立额外的表格。至少它将共享一个现有的模式,并在这方面保持一些一致性。

你为什么说“这个概念已经失败了,或者我不会首先构建一个新的系统”?是不是因为你怀疑一定有一个共同处理这些问题的方案


否则我会继续现有的理念,并建立额外的表格。至少它将共享一个现有的模式,并在这方面保持一些一致性。

对于一个复杂、细致的问题,没有简单、通用的解决方案。你不能同时拥有简单的存储和简单的应用程序逻辑。要么数据库结构必须复杂,要么应用程序在解释数据时必须复杂

我概述了解决这个普遍问题的五种方法

对于您的情况,我倾向于具体表继承序列化LOB(XML解决方案)

XML可能是一个好的解决方案的原因是