假設我正在構建一個擁有許多博客和許多用戶的引擎。用戶可以有很多博客和博客可以有很多用戶(用戶擁有和擁有許多博客)。我想創建一個數據透視表名爲users_blogs這將是這樣的:將透視表加入到另一個表(HABTM加入HABTM和模型關聯)
id user_id blog_id role
1 1 1 admin
2 1 2 poster
3 2 2 admin
因此,用戶1屬於博客1和2,和用戶2屬於博客2.用戶1是博客1管理員,並博客2中的海報,用戶2是博客2中的管理員。
還會有帖子。 users_blog會有很多帖子,帖子可以有很多users_blog。
id users_blog_id post_id
1 2 1
2 3 1
是這樣,參照users_blogs,對博客用戶2 1 2用戶對協作博客2創建後1
我:他們將與樞軸表看起來像這樣被連接對於MVC來說相對來說比較新,所以我想知道A)第一個表中的「角色」數據是否應該是它的位置?B)是否有更正確的方法來實現這種結構?框架將爲我做出魔術,我只是想確保這是有道理的,並且我已經有了正確的命名約定。我使用CakePHP,但我也認爲這個問題可以由Rails程序員解答。
謝謝!
你是對的字母順序的東西,你回答我的第一個問題,「角色」應該駐留在數據透視表中。 說用戶1有100個博客。如果我們想從博客#1獲取用戶1的帖子,我們必須抓取所有posts_users,然後抓取所有帖子,然後匹配blog_id和user_id。 相反,如果我們有blogs_users_posts表,該怎麼辦。我們將從代表用戶1和博客#1的blogs_users(blog_user_id)中抓取一條記錄,並使用該blog_user_id查找blogs_users_posts中的所有帖子。這樣做似乎比上面的方式更快。這是正確的嗎? 謝謝! – MattDiamant
如果您想從博客#1中獲取用戶1的帖子,我們假設您已經擁有博客ID和user_id - 所以 - 只需從該特定博客中提取任何帖子(帖子表中有一個blog_id),然後設置您的條件只需要user_id = 1的帖子。也許我錯過了一些東西? – Dave
我想我意識到我的問題在哪裏。我認爲將blog_id添加到users_posts表中會有一些價值。如果我有一個表中的user_id和blog_id,我可以在該博客中找到該用戶的所有post_id,而不必離開該表。這隻會對計算博客中的用戶帖子,也許還有其他的事情有用嗎?如果我在一個表中同時擁有user_id和blog_id,爲什麼不將它們組合成users_blog_id並引用users_blog。這會使表格的尺寸與users_posts相同,並提供更多信息。我認爲它也會節省查詢時間,但事實並非如此。 – MattDiamant