SQL Server规范化/最佳实践:单数据表

时间:2011-11-16 06:45:28

标签: sql-server types normalization

我继承了另一个部门的前雇员维护数据库的工作,我相信他们的数据库开发技能并不是真正的吸尘。

我被要求支持或重新开发它。

看起来每条记录的数据数据库都在一个表中,是的,我知道并且有数十万行空字段。

TableData:
> RowID
> FieldID
> DateData
> NumberData
> TextData
> YesNoData

对于每一行,此实例中只显示一个字段(取决于所需的数据类型) - 其余字段为空。

还有另外两个表用于标识记录(由等创建)和字段(已更新,字段数据类型)的详细信息

通过Access前端代码查看,通过搜索记录和字段,然后返回包含数据的相应字段,可以显示每个字段和记录和字段的数据。

我的问题:这是为了达到什么目的,还是这种类型的开发被认为是缺乏经验的数据库开发人员的工作?

1 个答案:

答案 0 :(得分:0)

我最好的猜测是,这样的表用于存储任意数据(从其他支持表中推断出来),这些数据不需要架构更改来存储“未计划”或尚未在业务逻辑中实现的信息。申请。

我会开始问的问​​题(你自己,任何程序员,DBA,项目经理等):

  • 当时的要求是如此抽象,以至于无法创建具有数据关系的正式模式? (坏,坏,不好)
  • 数据库设计师是懒惰还是缺乏经验?
  • 程序员是懒惰还是缺乏经验? (更好的是,程序员是DBA吗?)
  • 数据的可靠性/可用性是否如此敏感以至于难以定期更改正式架构?
  • 在您之前,项目经历了很多人只是继承了问题,这是一个黑客解决方案吗? (虽然也许最初的程序员知道最终打算去哪里......)

我认为你真正想要达到的目标是“这有用吗,还是我应该改变它?”。如果任何读取/搜索查询都得到优化,我会感到震惊,因为这样的任意数据存储都没有任何索引。如果应用程序只是简单地记录信息,它可能没有那么大的交易,因为发起人可能只是不知道以后如何使用数据,并编写一次性小程序来循环并创建数据中的正式对象比尝试在开始时假设所有内容更好。

为了更有针对性,您是否因为这张特殊的桌子而遇到了流程中的任何瓶颈,或者您是否只是出于意外?如果是前者,我会弄清楚如何立即改变它。如果是后者,我会先花时间弄清楚应用程序的长期要求。