私のアプリケーションでは、ユーザーは利用可能な日付を定義することができます。つまりユーザーjoeは彼が利用可能であると定義することができます。
- 毎週月曜日、水曜日と日曜日の15:00から17:00の間、1.09.2009から15.11.2009までです。 - 〜2.09.2009〜12:00〜14:00 など...周期的な日付のテーブルデザイン
将来の日付は最大1年とすることができます。
ユーザーは、定義された日付を追加、編集、削除することができます。
他のユーザーが利用可能なユーザーを検索する場合があります。 - 利用可能なすべてのユーザーを検索します。8.09.2009 at 15:30
問題は、循環日付の作成と編集と効率的な検索を可能にするSQLテーブルの設計方法です。
私はpostgresqlを使用していますが、ガイドラインを探しています。たぶん誰かが同じような問題を経験しているのでしょうか?あなたは、データベース内のユーザーの可用性を保存し、データベース自体に複雑なロジックを持つのではなく、状況を確認するには、プログラミング言語を使用したいと思うでしょう事前
constrainstsは間違いなく良い考えです。私の現在のアプローチではgenerate_seriesを使用していますが、レコードが膨大になると効率が悪く、インデックスは使用されません。 – mlomnicki
あなたは大丈夫だと思います。しかし、最大限のパフォーマンスを得るために、ビューをキャッシュされた可用性テーブルに具体化し、すべてを一度に更新するのではなく、変更されたルールと方法に基づいてトリガーを使用して選択的に挿入または更新します。次に、マテリアライズド・ビューに対して問合せを実行して、ルールを個別に維持しながら可用性を得ることができます。 そのルートに行く前に、パフォーマンスを測定するために、ビューに対してEXPLAIN ANALYZEを実行する必要があります。 –
これは間違いなく最良の提案です。しかし、キャッシュされたアベイラビリティテーブルについては何も見つかりませんでした。どのようにポストグルでそれを処理するには?私にリンクや基本的なガイドラインを教えてください。 – mlomnicki