我的SQLServer 2000数据库中有一个表,在我看来设计很差。
它包含大量字段,需要重构。然而,在我能够做到这一点之前,我还有其他项目正在进行,其中一项需要与此表有关系。
我现在真的很想在此表中添加更多字段。 (目前必须有~130),但我需要事先完成这项任务,我正在考虑解决这个问题。
在这种情况下创建扩展表是一种好习惯吗?我正在考虑使用原始表的主键的外键。我应该将字段添加到原始表中吗? 130个字段好吗?
答案 0 :(得分:4)
IMO 130字段方式太多。它听起来像一个设计糟糕的数据库(或懒惰的开发人员:o))
如果你以后要清理乱七八糟的话,我个人会添加这些字段。但只有我知道我有时间尽快解决它。添加扩展表听起来像是另一个修补程序,并且是在3 - 4年内修复的另一个东西的开始。
您可能希望稍后添加设置表 - 或类似的东西。或者稍后将字段移动到自己的表中,按其功能分组。
答案 1 :(得分:2)
立即修复...
130对于许多恕我直言,如果你让它滑倒,那么你将永远没有时间来修复它(除非它被打破)。现在你有一个“借口”在这里推动真正的解决方案。而不是创建一个扩展表,尝试获得“批准”以适当地拆分表,因为“SQL Server中的数据行只能容纳8KB”
答案 2 :(得分:1)
如果你以后肯定会回来修复它,那就没关系了。你现在需要把它弄清楚吗?
在扩展程序表中进行操作,记下它并在有空的时候回来并正确修复它。
答案 3 :(得分:1)
我可能会建议(但不会坚持)将桌子分成几个较小的桌子。通过统一使用对字段进行分组。如果表格的某些部分处理设置,请将其设置为设置表。
另一种选择是按使用频率对字段进行分组。为最常访问的字段创建一个小表,而不太常用的字段可以转移到另一个表。因此,您将改善绩效指标。
答案 4 :(得分:1)
您可以立即拆分表格并使用相同的名称创建àView,从而替换它。添加新字段是问题然后问题。您可能希望创建索引视图以在使用àView时提高性能,但它会增加对存储的需求。
稍后当你有时间时,进行重构。
答案 5 :(得分:1)
如果表已经非规范化,即。并非所有130个字段都由主键标识,然后在此表中添加新字段不会引入任何您尚未遇到的新问题。
实际上我建议你这样做而不是添加一个全新的表,它可能与主表有或没有有效的关系。
在添加任何新表之前,我会尝试通过将表格设置为第三范式来严肃地整理设计。因此,只需添加额外字段就可以在现在完成某些操作之后进行合理的折衷,然后再进行适当的重构。
答案 6 :(得分:1)
现在修复它的建议很诱人,但可能是错位的。将列添加到现有表是半天的工作。而将表格拆分成几个较小的表格,构建视图,迁移数据,回归测试......这是一件大而且冒险的工作,这就是为什么你之前没有解决它。
将最新的更改作为单独的表应用会为系统增加额外的复杂性,除了作为意图声明之外没有任何好处。而且,让我们面对它,直到表的宽度成为性能问题或以其他一些可测量的方式影响应用程序,解决它将保留在项目的待办事项列表的底部。
所以,务实:将列添加到现有表中。它很吵,但替代方案更糟糕。