誰かが何かのテンプレートを投稿できるデータベーススキーマを設計するためのベストプラクティスを探しています (たとえば、特定の「スケジュール」がどのように見えるか)。その後、ユーザーはそのテンプレートに「参加」できますが、当然のことながら、それから何かを変更できます。元のテンプレートを変更します。
テキスト形式で何かを説明するのが得意ではないので、例を追加します。(そして英語は私の母国語ではありません)
4 つのテーブルがあるとします。
- スケジュール
- 日
- 仕事
- タスクルール
スケジュールは N 日、1 日は N 個のタスク、そして最終的にタスクは N 個の taskRules を持つことができます。ユーザーは、結合テーブル (ユーザー ID と schedule_id を持つ user_schedule) を介してこのスケジュールに「参加」します。
ここでの問題は、ユーザーがテンプレートから何かを変更すると (たとえば、いくつかのタスク ルールを追加したり、タスクを削除したりすると)、それに接続されているすべての人のスケジュールが変更されることです。
私の質問は、これを処理するためのベストプラクティスは何ですか? 行の複製以外にこれを行う方法が本当にわかりません。これは私の好きなことではありません。
編集: このスキーマは、彼がテンプレート スケジュールに参加し、2 つのうちの 1 つを選択することを意味します (つまり、変更するか変更しないか、変更しない場合、複製は明らかに冗長です)。