これらすべてのタイプの複雑なスケジュールを本当にサポートするつもりなら、それらのスケジュールのすべての詳細について、同じように複雑なリレーショナル DB スキーマを発明しようとするのが良い考えかどうかはわかりません。
スケジュールの詳細について XML スキーマを設計し、スケジュールをリレーショナル データベースに格納する必要がある場合は、XML データを列に格納することを検討します。任意のタイプのスケジュールに適用できるスケジュールの属性の列を使用できます (スケジュール名や最終変更者と日時など)。
たとえば、1 つのスケジュールを複数のレポートに使用できると仮定すると、次のようにすることができます。
Table: Schedule
---------------
Columns:
ID - Surrogate key to refer to schedules
from other tables.
Name - Short textual description of the schedule
(to be shown in GUI).
...
Details - XML containing all the details of
the schedule (frequency, exceptions,
complex combinations of simple schedules,
whatsoever).
アプリケーションが「特定の日付/時刻までに期限が来るはずのレポートは何か」などの質問に答える必要がある場合でも、リレーショナル スキーマを使用して核心を格納するオーバーヘッドを正当化するには、非常に多くのスケジュールが必要だと思います。スケジュールの詳細を別々の列に (そして、おそらく複数の表に) 表示します。