我有一个用户模型和一个任务模型。
用户创建任务。这看起来很简单:任务有一个 user_id foreign_key
但现在我们介绍共享。现在一个任务与用户有多对多的关系,但属于一个所有者。
我可以: - 将 user_id 保留在任务上(也许将其重命名为 'owner_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 将是相同的数字(比上面更难的查询)
根据最佳实践,哪个更合理?
感谢您的时间。
而且,正如第一个答案所暗示的(尽管出于某种原因我有点不愿接受),从概念上讲,这两个角色是不同的。一个是任务所有者,另一个只是与他们共享任务的人。