これは完全に仮説的な質問です。ユーザーのメンバーシップを保存するデータベースがあり、特定の期間(1ヶ月、3ヶ月、6ヶ月、1年など)持続できるとします。データベースでは、期間を開始日または終了日、または開始日と期間として保存する方が良いですか?
は、それがより良いフィールドを有するMemberships
が(各日付は、UNIXタイムスタンプとして記憶されている)テーブルを有することである:
user_id INT
、start_date INT
、end_date INT
やとして格納する。
user_id INT
、start_date INT
、length INT
どちらの方法でも、アクティブなメンバーを持つユーザーを照会できますヒップ(例えば)。後者の状況では、クエリが実行されるたびに算術演算を実行する必要がありますが、前者の場合は終了日を1回だけ計算する必要があります(挿入時)。この観点からは、前者のデザインはより良いようですが、それには何らかの欠点がありますか?その代わりに長さを保存することによって避けることができる共通の問題はありますか?それは日付を保存することで回避できません。
また、時刻/日付データを格納するときのUNIXのタイムスタンプや、DATETIMEが優先されますか?私は両方のデータ型(過度の変換)で問題に遭遇しましたが、通常はUNIXのタイムスタンプで解決します。 DATETIMEのようなものが好まれる場合、これは私の以前のデザインの質問に対する答えをどのように変えますか?
この質問に対する回答はシステムによって異なりますか?どちらの解決策も私には良いようですが、あなたの質問のどれもが期間を気にかけなければ、最初のケースが良いです。そうでなければ、それは逆の方法かもしれません。また、長さを使用する重い照会と終了日を使用する重い照会がある場合は、両方の値をデータベースに保管することもできます。 –