假设我有一个任务和一个日志表:
tbl_tasks
Id Name ProjectId
-----------------------------------
1 Walk the dog 1
2 Check the mail 1
tbl_log
Id TaskId CreatedDateTime
--------------------------------
1 1 6/3/13 7:18am
2 2 6/3/13 7:18am
3 1 6/3/13 7:18am
日志表应该是事件的永久记录。但是,当用户删除任务时,我遇到了一个完整性问题,我想到了几个解决方案。
1 . 不要在日志表中使用 TaskIn,而是使用任务名称。我不喜欢这种方法,但它是简单的解决方案。
tbl_log
Id TaskName Credits
---------------------------------
1 Walk the dog 2
2 Check the mail 1
3 Walk the dog 2
2 . 引入另一个表,使任务与项目具有 1:m 关系,但实际上它将是 1:1 并通过将 taskId 作为 pk(唯一约束)来强制执行。而不是删除任务,而是删除任务和项目之间的关系。我不喜欢这留下的所有垃圾,因为所有没有 FK 的任务都被切断了,我猜这将是大多数情况。
tbl_tasksInProject
TaskId ProjectId
-------------------
1 1
2 1
处理这个问题的最佳做法是什么?