Database 我应该在哪个表中存储链接两个对象的数据?

Database 我应该在哪个表中存储链接两个对象的数据?,database,database-design,Database,Database Design,我试着四处搜索,但我不太确定如何正确表述这个问题,结果什么也没找到。可能是复制品 承载将两个对象从单独的表链接到一起的数据的最佳方式(最有效的方式)是什么?让我举一个例子来解释;有一个名为Users的表和另一个名为Groups的表,用户可以是组的一部分。我应该如何保存用户所在组的信息 我应该: 将Users表留空,并在Groups表中的组下放置一个用户ID数组 将Groups表留空,并在Users表中的用户下放置一个组ID数组 在两个表中的用户和组下放置一个包含用户ID和组ID的数组 例如,我

我试着四处搜索,但我不太确定如何正确表述这个问题,结果什么也没找到。可能是复制品


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

我应该:

  • Users
    表留空,并在
    Groups
    表中的组下放置一个用户ID数组

  • Groups
    表留空,并在
    Users
    表中的用户下放置一个组ID数组

  • 在两个表中的用户和组下放置一个包含用户ID和组ID的数组

  • 例如,我们将说两个信息位(组X中的用户和组X中的用户)将被轮询为相等的数量,这两个信息位都以相同的方式被访问。而且,用户数比组数多

    我的设计部分告诉我应该使用解决方案2,这似乎是一种更好的方式。但我认为解决方案1会更快(介于1和2之间),因为用户比组多。当然,解决方案3将是最快的,但它需要更多的内存,而且更难管理(如果程序有bug,一个表可能有不同的信息)


    我知道这类决策只会获得很少的时间或内存,但我喜欢微观优化,那么你有什么建议?可能还有另一个我不知道的解决方案?

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

    Users Table:
        UserId
        UserName
        ...Etc
    
    Groups Table:
        GroupId
        Name
        ...Etc
    
    User_Groups Table:
        UserId
        GroupId
    

    数组-->>违反1NF。您需要第三个表:googleforjunction表或linktable。大多数数据库管理系统的目录(以各种方式)解决了您的问题。当我说数组时,我的意思是对信息的“列表”进行分组。谢谢,我会查的。