gpt4 book ai didi

mysql - 如何创建 "following"表?

转载 作者:行者123 更新时间:2023-11-29 14:27:50 24 4
gpt4 key购买 nike

我正在设计一个简单的 Twitter 网站(用于研究),但有一点不同:用户可以关注其他用户、关键字和列表。我想知道如何创建下表来放置有关以下信息。

这种方法(如下)正确吗?

下表:

id ( id of the following table )
type ( type can be 1 ( user ), 2 ( keyword ) or 3 ( list ) )
idtype ( id of the type table )
user ( user's id )

但是没有关键字表。所以我不知道。

最好的方法是什么?

最佳答案

这是不正确的,因为您无法创建从idtype到父表的外键,因为“父表”根据类型而变化。顺便说一句,如果用户可以遵循多个关键字,那么您将无法逃避拥有一个单独的表(除非您想 break the 1NF 通过将多个值“打包”到同一个字段中,这是一个非常糟糕的主意)。 p>

有几种方法可以解决这个问题,最简单的一种可能是为每个可能的父表使用单独的 id 字段,然后限制它们,以便只有其中一个可以是非空。

但是,因为 InnoDB tables are clustered并且聚集表中的二级索引很昂贵,我宁愿选择这样的东西(推文表未显示):

enter image description here

这将使您能够非常有效地回答查询:“哪些用户关注给定用户(或关键字或列表)”。如果您需要回答:“给定用户关注哪些用户(或关键字或列表)”,请颠倒上面显示的 PK 中字段的顺序。如果您两者都需要,那么您需要双向索引(并支付集群价格)。

关于mysql - 如何创建 "following"表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10591413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com