Мы используем сторонний продукт для управления членством в нашем спортивном центре. У нас есть несколько типов членства (например, младший, студент, персонал, сообщество) и несколько статусов членства (например, годовой, активный, неактивный, приостановленный). К сожалению, продукт записывает только текущий тип членства и статус участника. Я хотел бы иметь возможность отслеживать, как тип и статус наших членов менялись со временем.
В настоящее время у нас есть доступ к дизайну базы данных продукта. Он работает на SQL Server, и мы регулярно выполняем собственные SQL-запросы к таблицам продукта, чтобы создавать собственные таблицы. Затем мы связываем наши таблицы с сводными таблицами в Excel для создания диаграмм. Итак, мы знакомы с дизайном базы данных и SQL. Однако мы застряли в том, как лучше всего подойти к этой проблеме.
Продукт регистрирует покупки участника и даты его начала и истечения срока действия. Таким образом, мы можем вернуться к этим данным, чтобы определить тип и статус участника в любой момент времени. Например, если они купили младшее членство 1 января 2007 года, срок действия которого истек 31 декабря 2007 года, а затем они приобрели студенческое членство 1 июня 2008 года, мы можем видеть, что их статус изменился с активного на неактивный на активный (в январе 1, 2008 и 1 июня 2008 г. соответственно) и их тип изменился с младшего на ученического (1 июня 2008 г.).
По сути, мы хотели бы превратить свойства типа и статуса члена в временные свойства или эффективность а-ля Фаулер (или что-то другое, что меняется со временем).
Наш вопрос (наконец-то :) - учитывая вышеизложенное: какой дизайн таблицы базы данных вы бы порекомендовали использовать для хранения информации об этом члене. Я предполагаю, что в нем будет столбец для MemberID, чтобы мы могли ввести существующую таблицу Member. Также необходимо будет сохранить статус и тип участника, а также диапазон дат, в течение которого они находились. Мы хотели бы иметь возможность легко писать запросы к этой таблице (таблицам), чтобы определить, сколько членов каждого типа и статуса у нас было в данный момент времени.
ОБНОВЛЕНИЕ 2009-08-25: Отстранены и еще не имели возможности опробовать предложенные решения. Надеюсь сделать это в ближайшее время и на основе результатов выберет ответ.