我有一個用戶模型和一個任務模型。數據庫模式 - 混合多對多和一對多關係
用戶創建一個任務。這看起來很簡單: 任務有一個user_id foreign_key
但現在我們介紹共享。現在任務與用戶有多對多的關係,但屬於所有者。
我能: - 離開任務(也許它重命名爲「owner_id」)的USER_ID - 並具有多對多連接表(user_tasks或shared_user_tasks)只有已經共享模式的任務。
我也可以: - 移除USER_ID的任務 - 並作出user_tasks純許多人用布爾「is_owner」告訴我,如果該用戶是所有者
或一對多的關係我可能: - 移除USER_ID的任務 - 並使user_tasks同時列出shared_user_id和owner_id 這意味着對於某些記載,shared_user_id和owner_id將是相同的號碼(除上述更難查詢)
,它是根據更多聲音最佳實踐?
謝謝你的時間。
而且,正如第一個答案所表明的那樣(儘管我有點因爲某種原因而不願接受),從概念上講,這兩個角色是不同的。一個是任務負責人,另一個是與他們分享任務的人。
有趣的是,你說概念不同 - 我同意。我可以看到有user_tasks表爲shared_user_tasks,我認爲這是一個概念上不同於用戶任務的對象。我也相信有一個查詢是我無法輕鬆完成的,即查找用戶共享的所有任務。我會編輯我的原始問題,向你展示我的意思。 – Squadrons
按照什麼定義你的任務和什麼使得最有效的SQL來考慮它。如果任務創建者不再「共享」任務該怎麼辦?在task_users表中擁有所有權標誌會使這變得複雜。 – woemler