スポーツセンターのメンバーシップを管理するために、サードパーティ製品を使用しています。いくつかのメンバーシップタイプ(例:ジュニア、学生、スタッフ、コミュニティ)といくつかのメンバーシップステータス(例:年次、アクティブ、非アクティブ、一時停止)があります。残念ながら、この製品はメンバーの現在のメンバーシップタイプとステータスのみを記録します。メンバーのタイプとステータスが時間の経過とともにどのように変化したかを追跡できるようにしたいと思います。
現在、製品のデータベース設計にアクセスできます。これはSQLServerで実行され、製品のテーブルに対して独自のSQLクエリを定期的に実行して、独自のテーブルを生成します。次に、テーブルをExcelのピボットテーブルにリンクして、グラフを作成します。したがって、私たちはデータベース設計とSQLに精通しています。しかし、私たちはこの問題に最善の方法で取り組む方法について立ち往生しています。
この製品は、メンバーのメンバーシップの購入と、その開始日と有効期限を記録します。そのため、そのデータをさかのぼって、任意の時点でメンバーのタイプとステータスを判別できます。たとえば、2007年1月1日にジュニアメンバーシップを購入し、2007年12月31日に有効期限が切れ、2008年6月1日に学生メンバーシップを購入した場合、ステータスがアクティブから非アクティブ、アクティブに変わったことがわかります(1月)それぞれ2008年1月1日と2008年6月1日)とそのタイプはジュニアから学生になりました(2008年6月1日)。
基本的に、メンバーのタイプとステータスのプロパティを一時的なプロパティまたは有効性a-la Fowler(または時間とともに変化するその他のもの)に変換したいと思います。
私たちの質問(最後に:)-上記のことを考えると、このメンバー情報を保持するためにどのデータベーステーブルの設計を使用することをお勧めしますか。MemberIDの列があるので、既存のMemberテーブルにキー入力できると思います。また、メンバーのステータスとタイプ、およびメンバーが保持されていた日付範囲を保存する必要があります。このテーブルに対してクエリを簡単に記述して、特定の時点での各タイプとステータスのメンバーの数を判断できるようにしたいと考えています。
更新2009-08-25:傍観されており、提案されたソリューションをまだ試す機会がありません。すぐにそうすることを望み、結果に基づいて答えを選択します。