企业级数据库设计技巧

时间:2009-07-11 16:39:27

标签: sql-server sql-server-2005

我使用企业应用程序,并且已经获得了一些数据库设计技巧

  1. 所有表格都应包含以下有助于审计跟踪的字段 - LastChangedByLastChangedLastChangedPage
  2. 具有动态SQL的所有存储过程都应具有@ bDebug参数。默认情况下,它设置为0.如果设置为1,则打印出动态SQL语句,这对调试非常有用。
  3. 对于CRUD SP,可以部分更新表格。如果你的表有10个字段并且在一个SP中,你只关心更新5个字段,有一个抽象层来做这个。
  4. 您能想到的任何其他有用的提示?

    编辑:感谢您的所有答案。我仍在寻找能够提供DB Design提示/技巧/策略链接的答案。

6 个答案:

答案 0 :(得分:4)

对于#1:转到SQL Server 2008,然后启用“更改数据捕获”。如果您确实需要保留详细的审计跟踪,仅此功能就可以证明成本合理。

对于#2:任何带有动态sql的存储过程都应该自动进行双重秘密试用(即:它是允许的,但必须经过多级代码审查才能确保没有更好的方法来实现)。

答案 1 :(得分:1)

当涉及到网络的力量时,最好不要删除任何东西。因此,拥有一个已删除的日期,您可以排除那些已从搜索中“删除”的对象。这也可以帮助那些意外删除帐户的疯狂客户。显然,这不应该用在每个领域。

答案 2 :(得分:1)

使用超大型数据库(VLDB)时会立即浮现在脑海中的一些想法:

您应该实施表格分区吗?

具有数百万条记录的大型数据库表可能会受益于表分区。

  • 此SQL Server的可用性 功能仅限于使用 企业版。
  • 适用性取决于 你的平台硬件和 适当的可用性 表数据中的分区键。

我最常访问的表格是什么?

考虑按文件组分离,即将Customer表放在另一个Filegroup和Transaction表上。这允许SQL Server为文件访问创建多个线程,从而创建顺序I / O的可能性。

然后考虑底层物理磁盘结构,即每个文件组的单独LUN。

制定灵活的索引策略

毫无疑问,您已经考虑到了索引策略,但对于VLDB平台,应经常对其进行审核。随着数据量的增加和数据分布的变化,可能会为您的数据访问查询执行计划。您应该计划定期检查索引策略的必要性。

答案 3 :(得分:1)

LastChangedBy等字段非常无用。如果您确实需要审计跟踪,则需要单独的审计表来详细说明更改并维护审计历史记录。如果您不需要审计跟踪,则LastChangedBy等字段只是添加了工作,没有业务价值。

答案 4 :(得分:0)

在我看来,需要 CreatedBy 创建字段。

答案 5 :(得分:0)

日期应以Utc格式存储,并在客户端转换为本地时间。