Я делаю список дел в свободное время для обучения и т. Д. Я использую SQL Server Compact 3.5 вместе с Entity Framework для управления данными.Это настольное приложение, предназначенное для использования одним человеком.
Я почти не обладаю знаниями в области баз данных, и больше внимания уделяю пользовательскому интерфейсу.
Я с удовольствием внедрял CRUD для задач, когда думал, что было бы неплохо составить расписание для задач.Начните задание в будущем, повторения ежедневно / еженедельно / ежемесячно / ежегодно / по индивидуальному заказу и т. Д.
Я продолжал пытаться создать свою базу данных с учетом моих ограниченных знаний и пуфа, и в итоге я получил около 14 новых таблиц,Затем я поискал в Интернете и нашел сообщения, указывающие на sysschedules на MSDN .Все выполнено в одной таблице.Я опустил голову от стыда и попытался сделать маленькую попытку улучшить мой дизайн.Я сократил его до 10 таблиц, включая некоторые вещи, которые мне понравились, из таблицы sysschedules.
Теперь это моя (упрощенная) схема (пояснение ниже):
A Задача может иметь SchedulingInfo , связанную с ним.Я принудительно ввел в это OO, поэтому SchedulingInfo - это абстрактный тип, который имеет различные «подклассы».
TimeOfDayToStart_Ticks
представляет время начала ... так как я не хочу сохранять его как datetime.
Подклассы:
- CustomSchedule : Используется, чтобы разрешить выполнение задачи в один прекрасный день, или set дней, в будущем.
- IntervalSchedule : например.Запускать ежедневно, или каждые 3 дня, или каждые 4 часа и т. Д.
- Ежемесячный / Годовой график : Установить дней для запуска каждый месяц / год
- MonthlyRelativeSchedule : Я украл это из вещи sysschedules.Содержит набор дней, которые соответствуют таким вещам, как каждая секунда (частота) суббота (DayType) или последний день недели месяца и т. Д. (См. Вышеупомянутую ссылку, чтобы увидеть полное объяснение).
Мой код будет получать список ScheduleInfo, отсортированный по NextRun
.Удалите из очереди ScheduleInfo, создайте новую задачу с соответствующими деталями, пересчитайте NextRun
на основе подкласса ScheduleInfo, сохраните ScheduleInfo обратно в БД.
Мне странноколичество столовПовлияет ли это на производительность, если есть тысячи записей?Или это как отвратительный дизайн, полный плохих практик или чего-то подобного?Должен ли я просто использовать подход за одним столом?