0

我正在創建一個應用程序,用戶可以創建內容,其他用戶可以喜歡,評論這些帖子,現在我想實現共享功能。我想知道什麼是最好的方式來實現這一點。 以下爲帖子什麼是用戶分享系統的最佳表格結構?

| post_id | post_content | post_user | post_date | 

用戶可以看到後只能從他們下面的人的表結構。

首先,我想我會添加另一行到上面的帖子表,但這會造成不必要的數據重複,然後我想添加行到我的user_action表中,我在其中存儲後喜歡和評論,但多數民衆贊成在使系統變得複雜..

我搜索了SO,但找不到任何東西,或者可能是我的搜索條件無法訪問這些問題。

有沒有更好的方法來實現這一目標?

+0

您可以發佈你已經創建表的完整結構? – Maximus2012

+0

哪張表???? –

+0

你還沒有創建任何表格? – Maximus2012

回答

0

我同意添加重複的數據行不好。讓我們仔細看看你想要做什麼。

你有用戶,你有帖子。這些肯定是與他們自己的表格分開的實體。

'喜歡'是一種N-M關係,因爲用戶可以喜歡任意數量的帖子,並且任何數量的用戶都可以喜歡帖子。所以這將是它自己的表,有兩個外鍵,user和post。

評論與帖子類似,但包含一些內容。相同的用戶和帖子組合也可以包含多個評論。評論也將自己的表與兩個外鍵,用戶和帖子。這兩者的結合將是獨一無二的,但非唯一的評論。

現在分享部分。您希望用戶能夠關注其他用戶。這也是一種N-M關係,因爲任何用戶都可以關注任意數量的用戶,任何用戶都可以關注任意數量的用戶。因此,您需要使用兩個外鍵(用戶和用戶)爲此關係再添加一個表。這兩個用戶密鑰的組合將是唯一的。

對於給定的用戶John,找到用戶的所有職位,他的下面,我們可以使用下面的僞查詢:

select posts.* 
from posts 
join user intermediateUser on posts.author = intermediateUser.id 
join follow on follow.followee = intermediateUser.id 
where follow.follower = John 
相關問題