6

週単位、日単位、または月単位で編成できるスケジュールされたイベント (たとえば、授業時間など) を保存する必要があります。イベントは、たとえば、毎週月曜日と水曜日、または毎月第 2 木曜日に発生する可能性があります。この情報を 3NF に準拠した RDBMS に格納する方法はありますか?

編集: これは宿題ではありません。私は友人と私たち自身の啓蒙のために何かを構築しています.3NFでそれを望んでいます.

具体的には、RC教区でのミサと懺悔の時間のスケジュールを保存しようとしています。これらは、毎週日曜日の x 時間や、毎週火/木曜日の別の時間など、非常に多くの方法でスケジュールできます。毎月第 3 金曜日のみの場合もあれば、年に 1 回特定の時間にのみ提供される場合もあります。この情報を保存するだけでなく、クエリを実行する必要があります。これにより、次の日または次の週などの利用可能な時間の包括的なリストをすばやく取得できます。

厳密に言えば、3NF は必須ではないと思いますが、3NF は必須ではないと思いますが、そうであれば簡単であり、後でスキーマを変更するよりも、最初から正しいものにする方がよいでしょう。

4

2 に答える 2

2

「定期的な繰り返し」のルールを記録するには、crontabの形式からインスピレーションを得ることができます。ただし、もちろん、分と時間の制約は必要ありませんが、曜日、曜日などの制約は必要ありません。複数の(たとえば)平日がスケジュールに含まれる可能性があるため、NFの目的では、多対多の関係を表すために使用される典型的な中間テーブル、つまり行ごとに2つの外部キー(イベントのメインテーブルに対して1つ)を持つものが必要になります。 、平日のテーブルに1つ)-そしてもちろん、月の日なども同様です。

おそらく、スケジュールされた各イベントには、期間、カテゴリ、おそらく場所、名前、または説明の説明も含まれます。

「どの程度正常」な形式(上記の多くの関係を持つ「セット」を処理した後)は、主に、これらのさまざまな属性が相互に依存するかどうか、およびどのように依存するかによって異なります。たとえば、特定のイベントのすべてがカテゴリの期間は同じです。ID、カテゴリ、期間を含む個別の補助テーブルを用意し、ペアの情報を繰り返すのではなく、このテーブルに外部キーを使用する必要があります。しかし、あなたの言うことから、正規形の規則の本質的な違反は見られません。そのような依存関係の可能性を除いてください(これは、イベントのスケジューリングについて指定したものに本質的ではありません)。

于 2009-06-19T03:28:02.740 に答える