2011-02-10 71 views
0

我正在使用数据库,其中“几乎”数据库中的每个表具有相同的字段和相同的值。例如,几乎所有表都有一个名为GroupId的字段,现在数据库中只有一个组ID。替代在几乎每个表中使用相同的外键

优势

  • 所有数据都与该领域,可以通过识别所述现场
  • 当创建一个新的组数据将被正确地识别为集团

缺点

  • 所有表都有这个字段
  • 所有的存储过程,需要有这个字段作为参数
  • 所有查询都通过这个领域

这是什么大不了的过滤?这种方法有其他选择吗?

感谢

+0

你可以提供一些关于你正试图解决的问题的更多信息吗?没有一些特定领域的知识,这似乎是讨论六个和六个之间的区别。 – jwir3 2011-02-10 17:59:32

+0

我认为这是一个特定领域信息不必要的情况。这可以应用于很多领域。如果它有帮助,你可以把groupid想象成一个customerid。所有与客户相关的数据(与组相对)。 – 2011-02-10 18:10:54

回答

0

如果您需要能够通过多个组在未来以确定的数据,有外键是一个很好的做法。然而,这并不意味着所有的表都需要有这个字段,只有那些与这个组直接相关的字段。例如,具有状态值的查找表可能不需要它,但客户表可能。当你试图删除一条记录并且必须检查579个表(其中只有25个表是相关的)时,将它添加到所有表中可能会导致不好的结果。这一切都很大程度上取决于这些团体的意义。我们的大多数表格都与客户表有关系,因为它们包含与特定客户相关的数据,因为我们不希望各种客户能够查看其他客户的数据。不包含那种数据的表不会。

是的,大多数查询可能需要该字段,许多存储过程将希望将其作为输入变量,但如果您确实需要过滤此信息,则应如此。

但是,如果只有一个组,并且永远不会超过一个组,那就浪费时间,精力和空间。

相关问题