假设我有员工&会议桌。
Employee
-----------
id
name
Meeting
-----------
id
name
Employee_Meeting
-----------
id
employee_id
meeting_id
现在我需要在该会议中添加员工的任务(或其他任何内容)。这样做的最佳做法是什么?我可以有这样的关系:
Employee_Meeting_Task
-----------
Employee_Meeting_id
task_id
或
Employee_Tasks
-----------
id
employee_id
meeting_id
task_id
这两种方法从“正确的”数据库设计的角度来看是否有效?
我担心的是:
案例1:大部分时间如果我从会议中删除员工,我也需要在会议中删除他的任务。 Employee_Meeting_Task
将通过约束强制执行。
案例2:员工有时参加某些日常会议,并定期在该会议中执行相同的任务。如果他生病了几天,我想将他从会议中删除,但我不想在下次参加会议时将他的任务重新添加到会议中。
答案 0 :(得分:1)
您应该注意几件事。首先,如果员工有可能拥有与会议无关的任务,您可能会遇到麻烦。其中一种方法是在会议桌中创建一个名称为“不适用”的记录。另一种方法是从employee_tasks表中取出meeting_id字段。最好的方法取决于将任务与会议相关联的要求,这是您必须询问您的任务主管的事情。
接下来,对于多对多的表,您不需要单独的id字段。例如,对于employee_meeting,PK可以是employee_id和meeting_id。
接下来,看一下您对案例2所说的内容。如果有每日会议,那么每天会议表中不会有一条记录吗?