0

レポートの生成/送信を監視するシステムを開発する必要があります。

  • システムデータはデータベーステーブル (Sybase) に保存されます
  • レポートはさまざまなスケジュールで生成されます (「月~金の午後 10 時」、「土の午前 5 時」、「月の 1 日」など)。
  • システムは、レポートが作成されたことを監視するだけです。レポート自体は作成されません。
  • レポートが終了しない場合、システムは適切な担当者に通知します。
  • システムは、生成されたすべてのレポートのログを維持します

タスク スケジュールを格納するための優れた (試行錯誤された) テーブル設計を知っている人はいますか? すでにアイデアはありますが、車輪の再発明はしたくありません。

4

2 に答える 2

1

これらすべてのタイプの複雑なスケジュールを本当にサポートするつもりなら、それらのスケジュールのすべての詳細について、同じように複雑なリレーショナル 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).

アプリケーションが「特定の日付/時刻までに期限が来るはずのレポートは何か」などの質問に答える必要がある場合でも、リレーショナル スキーマを使用して核心を格納するオーバーヘッドを正当化するには、非常に多くのスケジュールが必要だと思います。スケジュールの詳細を別々の列に (そして、おそらく複数の表に) 表示します。

于 2008-11-18T22:48:14.693 に答える
1

列を使用して表集計表を作成できます

  • ID
  • 名前
  • 月、火、水、木、金、土、日
  • 時間 (h*60+m)

あなたの例は次のようになります。

月~金 午後10時

mon, tue, wed, thu, fri = true, time=22*60, the rest are NULL

午前5時に着席

sat=true, time=5*60, the rest are NULL

月の最初の日

day=1, the rest are NULL

列を含むテーブルレポートを作成することもできます

  • ID
  • 名前
  • スケジュール_id

列を含むテーブルreport__schedule___late :

  • ID
  • 日付時刻
  • report_id
于 2008-11-21T20:42:56.490 に答える