Похоже, вам в основном нужна таблица TASKS с названием / описанием задачи, статусом, приоритетом, продолжительностью и датами начала / окончания, с какими-то флагами, указывающими, какие поля являются «фиксированными»; например, если у задачи есть «конечная дата окончания», то это исправлено и не может быть изменено планировщиком. Аналогично, если что-то уже запущено (или должно быть запущено немедленно), тогда дата начала фиксирована и не может быть изменена. Вы можете добавить «% выполнено» или «отработанное время» или «запланированное / фактическое начало / завершение» или любые другие поля, которые вы хотите. Ресурсы, вероятно, будут простой парой имя + идентификатор. Для большей гибкости я бы предложил иметь таблицу TASK-ASSIGNMENTS, которая отображает задачи на ресурсы. Это позволит назначить задачу более чем одному ресурсу (например, назначить задачу команде), а также даст вам место для хранения назначенной даты. В зависимости от того, насколько всеобъемлющим должен быть ваш планировщик, вам также может понадобиться отдельная таблица TASK-DEPENDENCIES для отслеживания зависимостей (невозможно запланировать кадрирование до заливки основы и т. Д.) Для календарей может быть лучше просто сохранить " исключения "даты, такие как праздники или выходные дни и иным образом, принимая стандартную рабочую неделю. Если, конечно, такого нет в ваших проектах, в таком случае зачем беспокоиться? Просто запланируйте задачи, когда они подходят, и дайте людям заполнить дату начала, когда они начинают задачу. Календари могут быть как глобальными, так и специфичными для ресурсов.
Вам нужно сгруппировать задачи по проекту? Если это так, то, конечно, вам понадобится таблица PROJECTS, и вы можете захотеть иметь какую-то таблицу PROJECT-RESOURCES, которая отображает ресурсы на проекты. Это хорошее место для хранения объема работы, который ресурс должен посвятить определенному проекту (например, 30% своего времени) и / или приоритет, который ресурс должен отдавать конкретному проекту. Вы также можете захотеть иметь какой-либо способ назначения календаря для проекта, либо по умолчанию, либо как переопределение (вероятно, хотите, чтобы флаг указывал, какой именно).
Я мог бы продолжать, но я вижу, что у меня уже есть ...