我应该在哪个表中托管从不同表中链接两个对象的数据?

时间:2014-06-04 21:34:39

标签: database database-design

我试过四处寻找,但我不太确定如何正确地提出这个问题,一无所获。可能是重复的。


托管将两个对象从单独的表链接在一起的数据的最佳方式(最有效的方法)是什么?让我举个例子来解释一下;有一个名为Users的表和另一个名为Groups的表,用户可以是一个组的一部分。我该如何保存用户所在群组的信息。

我应该:

  1. Users表保留为空,并在Groups表中的组下放置一组用户ID。

  2. Groups表保留为空,并在Users表中的用户下放置一组group id。

  3. 在两个表中的用户ID和组下放置用户ID和组ID的数组。

  4. 我们将举例说明两个信息位(组X中的用户和用户X中的组)将以相等的方式轮询,两者都以相同的方式访问。此外,还有多个用户组

    我的设计部分告诉我应该使用解决方案2,它似乎是更漂亮的方式。但我认为解决方案1会更快(1到2之间),因为用户多于组。当然,解决方案3将是最快的,但它将需要更多内存,并且它更难管理(如果程序存在错误,一个表可能具有与另一个表不同的信息)。

    我知道这些决定只能获得微小的时间或记忆,但我喜欢微优化,所以你会推荐什么?也许还有另一个我不知道的解决方案?

1 个答案:

答案 0 :(得分:1)

如果用户可以属于零个或多个组,则执行此操作的标准方法是使用参考表:

Users Table:
    UserId
    UserName
    ...Etc

Groups Table:
    GroupId
    Name
    ...Etc

User_Groups Table:
    UserId
    GroupId