「メモ」とメモが適用される日付を保存する必要があるコーディングの問題があります。のことを考える:
注1こんにちは、今日、クライアント氏はこれらの予定を手配するために電話をかけました。2009年8月30日、2009年8月31日、2009年5月9日
注2通常通りの営業。2009年8月30日
注3レストランは休業です。2009年6月9日
効率的に取得するためにインデックスを維持しながら、次のデータをデータベースに保存する必要があります。つまり、クライアントアプリケーションは日付を選択し、その日付に関連するすべてのメモを排他的または部分的に取得する必要があります。
私は数人の同僚や友人と話し合い、このデザインにたどり着きました。すべての情報を1つのテーブルに保存できるようにしたいので、デザインがエレガントな場合はそれ以上に保存できるようにしたいと思います。
> Date Bitmap | Month | Year | Note
> 101.. 9 2009 Blah Blah // applies to 1st and 3rd
> 0001... 10 2009 Blah2 // applies to the 4th
> 100 9 2009 Blah23
ユーザーが複数の日付ピッカーから次の日付を選択すると、9月1日にBlahBlahとBlah23が取得されます。単一の日時オブジェクトは、メモを繰り返すか、外部キーを使用して別のテーブルを強制的に作成します。
メモが適用される月の曜日を最初の列に格納できるという意味で。ビットマップでは、物事は非常に効率的である可能性があります。他の方法(Note-IDを持つリンクされたテーブル、またはIDを持つすべての日を持つテーブル)はすべて、メモフィールドまたは繰り返される日付のいずれかの醜い重複をもたらしました。また、区切り文字付きの日付のセットを含むテキストフィールドと、検索時に解析する醜いコードについても考えたくありません。
お分かりのように、私にはこのプロジェクトに時間を割く余裕があります。
しかし、クライアントアプリケーションのRETRIEVEは、特定の日付セットのすべてのメモをどのように言うことができますか?MSSQLにビット演算はありますか?したがって、すべての行を取得できます。たとえば、そのバイナリフィールドの5番目と7番目のビットに「1」がありますか?
範囲や何か、または種類にない散発的な日付がある可能性があるため、BETWEENを使用できません。1から31までの任意の数値を表すことができるデータ型を考えてみてください。それが私がビットマップについて考えた方法です。
また、実際の日付(実際のテキスト)がルーチンによって入力されるテキストフィールドを追加することもできます。しかし、残りの部分については、このアプリケーションがメインインターフェイスになり、ユーザーが醜いテーブルを見る必要があることはめったにありません。
私は過剰設計ですか、それとも私を助けてくれますか?
返信ありがとうございます。
レオ