1

ASP.NET と SQL を使用してゲーム情報サイトを作成していますが、リリース日を保持するテーブルを設計する最善の方法を決定するのに少し助けが必要です。各列が null 可能である 2 列の設計 ( ExactDateRoughDate) を考えていましたが、正しくないように思えました。テーブルは次の日付形式を保持できる必要があり、現在の日付に最も近い日付で並べ替えたいと思います (そのため、より早くリリースされるゲームが最初にリストされます)。

DD-MM-YYYY
(Q1/Q2/Q3/Q4)-YYYY
(Early/Mid/Late)-YYYY
(Spring/Summer/Fall/Winter)-YYYY
TBA

さまざまな日付に対処する最善の方法についてのアイデアはありますか?

4

2 に答える 2

0

上記の私のコメントによると、2列の表示日付/並べ替え日付システム以外のものが必要かどうかを検討する価値があると思います-摩擦が大きくなりすぎるまで、この単純なオプションを使用する傾向があります。再考することができます...

それほど単純ではないモデルに関しては、リリース日(およびそれらの相対的な順序)が十分に重要であり、2013年初頭が2013年2月21日より前に表示されるようにする(またはその逆)場合は、「リリース日」テーブルを作成できます。

DisplayText | Type | Start      | End
01/01/2013  | 1    | 2013-01-01 | 2013-01-01
Q1-2013     | 2    | 2013-01-01 | 2013-03-31
Early-2013  | 3    | 2013-01-01 | 2013-06-30

これは、今後20年間、または何でも(まだ数千行しかない)すべての組み合わせでプリロードされ、FKとして扱い、通常の結合構文を使用して使用します。注文は[開始]/[終了]列から行うことができ、検索をそれらの範囲に制限することもできます(おそらく、今後6週間以内にリリースされる可能性のあるゲームのみ)

私が言っているように、このルートをすぐに使用することはお勧めしません。その主な利点は、UIデザイナーとの統合が容易であり、一貫性があるためです(オプションの選択以外に人間の意思決定がないため)。あなたのサイトを構築する私は絶対に気にしないでしょう:)

于 2013-02-21T21:40:59.340 に答える
0

2 列のデザイン (DisplayText nvarchar、RelaseDate 日付) を使用します。

ReleaseDate は、DisplayText 列に格納されたデータに基づいて日付を計算する計算列です。DisplayText列に格納されているものに基づいて日付を計算するUDFを作成するだけで、うまくいくはずです。この UDF は少し複雑になりますが、それほど複雑ではありません。

パフォーマンスの負担を少し軽減したい場合は、ReleaseDate を非計算列として作成しますが、トリガーを使用して、DisplayText の値が挿入または更新されるたびにその値を更新します。

于 2013-02-22T11:06:33.553 に答える