用户可以加入项目。
项目可以有很多任务。
每个用户在自己的时间完成任务,他们还可以对任务进行一些其他用户特定的设置,例如待办事项列表中的优先级以及是否在完成时隐藏它。
我面临的问题是其中一些设置必须具有默认值,例如 priority = 0、hideOnComplete = true。
这些必须始终可供每个项目用户的客户使用。如何使具有每个用户默认值的 TaskUser 行始终存在?
选项A:
每次向项目添加新任务时,我都会为项目中的每个用户创建一个 TaskUser 关系。
每次有新用户加入项目时,我都会为项目中的每个任务创建一个新的 TaskUser 关系。
我不认为这是要走的路,因为你必须一直对这些事件做出反应并做出回应。
选项B:
复制任务表中的默认字段。我在 Task 表中包含一个 priority 和 hideOnComplete 字段。即使 TaskUser 关系不存在,客户端也可以知道在任务设置表单上显示什么。
我不再需要对新用户或新任务做出反应。即使没有 TaskUser 关系,客户端也可以请求任务对象并使用默认字段填充设置表单。之后,当用户提交自己的设置时,客户端可以查看现有的 TaskUser 关系以获取正确的值。
这对我来说似乎是一个更好的选择。你怎么看?
在你的场景中,因为(如果我理解正确的话),每个
User
人都需要完成他们所属的Task
每一个,如果你想存储诸如.Projects
UserTask
Task
User
dateCompleted
因此,选项A对我来说很有意义。无论如何,你需要“一直对这些事件做出反应并采取行动”。不过,我要做的一项修改是在表中包含一个
defaultHideOnComplete
字段。User
的字段最初将设置为与其关联TaskUser
的值。hideOnComplete
defaultHideOnComplete
User
对于你想要完成的事情,选项 B 对我来说没有意义,因为它不允许每个人都
User
设置自己的hideOnComplete
价值观priority
。如果我误解了什么,请告诉我:]