我决定从头开始建立自己的社交网络,因为我意识到这将是一个有趣的练习,我不想花很多时间学习定制像Drupal这样开箱即用的解决方案下议院。到目前为止,我已经完成了基本的登录/注销功能,创建新用户,上传头像等等。我还有一个MySQL数据库表,用于保存用户的帖子。
在posts
表上运行基本查询我可以轻松检索帖子,其ID和创建它的用户(userID是users
表中的外键)。但是,我决定要使用threads
实现threadID
表。这样,帖子不仅可以根据日期或postID进行排序,还可以按主题排序。
Users Posts Threads
----- ----- -------
userID (pk) postID (pk) threadID (pk)
userID (fk)
threadID (fk)
上面的格式在预览中看起来没问题,如果我发布
后我感到非常不满,我很抱歉用户创建与帖子创建是分开的,因此我在创建新帖子时已创建并可用userID
。然后帖子自动生成自己的postID。妨碍我前进的是,我不太确定如何在同一个交易中创建新的threadID
和 postID
,以确保他们正确了解每个其他。我需要一个新的threadID的唯一一次是,如果有人,那么,开始一个新线程。回复将使用现有的threadID并获得唯一的postID。
如果有人能够阐明这笔交易的基本逻辑,我会非常感激。我过去对关系数据库的工作并不多,所以我认为这是学习有用的东西的机会。
答案 0 :(得分:1)
我这样做的方法是将threadID更改为parentID,如果它是线程中的子节点,则引用另一个postID,或者当它是普通父节点时引用-1(或0)。这样您就可以轻松地对任何帖子进行处理,甚至不需要Threads表。如果这对您有意义,请告诉我:))