タスクとログテーブルがあるとしましょう:
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 であり、pk (一意の制約) として taskId を持つことによって適用されます。タスクを削除する代わりに、タスクとプロジェクトの関係を削除します。私は、FK を持たないすべてのタスクが切断されたために、これが残したすべてのごみのファンではありません。これは、ほとんどの場合になると思います。
tbl_tasksInProject
TaskId ProjectId
-------------------
1 1
2 1
これに対処するためのベストプラクティスは何ですか?