Database 表示用户之间连接的数据库结构

Database 表示用户之间连接的数据库结构,database,database-design,connection,Database,Database Design,Connection,在我尝试构建的应用程序中,将有用户(存储在用户表中),用户可以彼此“连接”(例如,像在Facebook上成为朋友一样)。我试图做的是构建用于存储这些连接的数据结构。这些数据主要用于为用户呈现“连接”(如Facebook上的好友)表。到目前为止,我遇到了两种不同的方法: 为每个拥有所有连接的用户(如朋友)创建一个表 有一个代表网站中所有连接的表(例如: [第1行=约翰·凯尔] [第2行=凯尔·鲍伯] [第3行=莉莉·约翰] 等等……) 我的问题是——哪一个更有效(主要是在查询时间方面,但也在大小方

在我尝试构建的应用程序中,将有用户(存储在用户表中),用户可以彼此“连接”(例如,像在Facebook上成为朋友一样)。我试图做的是构建用于存储这些连接的数据结构。这些数据主要用于为用户呈现“连接”(如Facebook上的好友)表。到目前为止,我遇到了两种不同的方法:

  • 为每个拥有所有连接的用户(如朋友)创建一个表
  • 有一个代表网站中所有连接的表(例如:
  • [第1行=约翰·凯尔]

    [第2行=凯尔·鲍伯]

    [第3行=莉莉·约翰]

    等等……)


    我的问题是——哪一个更有效(主要是在查询时间方面,但也在大小方面)。我想第二个尺寸会小得多,但要花更多的时间来查询。。。你怎么认为?哪一个更好用?如果你知道哪种模式更广泛使用(特别是在Facebook、Instagram等流行网站上),那也会有很大帮助

    一张带有所有连接的桌子。每行都有用户a、用户b、连接类型。其中,连接类型是对另一个列出连接类型的表的引用。添加适当的索引

    一张带有所有连接的桌子。每行都有用户a、用户b、连接类型。其中,连接类型是对另一个列出连接类型的表的引用。添加适当的索引

    外部绩效部门有充分的理由不采用第一种方法,但即使是绩效部门也不太可能从这种方法中获益:

  • 在许多表中,DBMS首先需要找到正确的表,然后才能进行搜索
  • 可以在一个索引搜索中搜索一个表

  • 因此,您有一个表搜索+小索引搜索,而只有一个大索引搜索。搜索表的速度不太可能快于大型B树下降的“上半部分”,许多单独的表可能会导致大量的“松弛”(即未完全填满的页面),从而降低缓存的效率。出于这两个原因,(2)可能更快。

    除了性能之外,还有很好的理由不采用第一种方法,但即使是性能也不太可能从这种方法中获益:

  • 在许多表中,DBMS首先需要找到正确的表,然后才能进行搜索
  • 可以在一个索引搜索中搜索一个表

  • 因此,您有一个表搜索+小索引搜索,而只有一个大索引搜索。搜索表的速度不太可能快于大型B树下降的“上半部分”,许多单独的表可能会导致大量的“松弛”(即未完全填满的页面),从而降低缓存的效率。出于这两个原因,(2)可能会更快。

    但是,通过它进行查询不会花费很多时间吗?如果索引正确,则不会。每个用户有一张桌子是不干净的。cthulhulike。通过它进行查询不会花费很多时间吗?如果索引正确,不会。每个用户有一张桌子是不干净的。克图利克。