我有一个用户模型和一个任务模型。数据库模式 - 混合多对多和一对多关系
用户创建一个任务。这看起来很简单: 任务有一个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