Допустим, я хочу создать простую систему отслеживания проектов. Менеджер может создать проект. Затем он может создавать задачи для этого проекта. Члены команды могут записывать часы, которые они работают для каждой задачи или для проекта в целом.
Является ли следующий дизайн таблицы t_timesheet хорошей идеей?
timesheet_id - primary key, autoincrement
project_id - not null, foreign key constraint to t_project
task_id - nullable, foreign key constraint to t_task
user_id - not null, foreign key constraint to t_user
hours - decimal
Или я должен сделать что-то вроде этого:
timesheet_id - primary key, autoincrement
task_id - not null, foreign key constraint to t_task
user_id - not null, foreign key constraint to t_user
hours - decimal
Во втором варианте я намерен всегда иметь запись в t_task, помеченную как «разные элементы» с внешним ключом для соответствующей записи t_project. Тогда я смогу отслеживать все часы для проекта, который не предназначен для какой-либо конкретной задачи.
Какие-нибудь идеи выше хороши? Что было бы лучше?