NikolayAlb: Лично я считаю, что задача должна быть независимой от коммента или координаты картинки.
Поэтому, предлагаю следующий вариант структуры БД:
Task:
id
title
related_task_id
Image:
id
task_id
path_to_file
position_x = null
position_y = null
width = null
length = null
ImageComment:
id
image_id
text
position_x
position_y
width
height
= null
- Означает, что он по умолчанию пустой
Теперь попробую объяснить логику:
Как вы видите. задача - независимая сущность. Но задачу можно связывать к другой задачу. Объясню это чуть ниже.
У каждой задачи есть свои вложенные картинки. По умолчанию, заполняете к какой задаче относится эта картинка и его путь. Остальные поля пустые, для чего они тоже объясню чуть ниже.
К картинке можно писать комменты. Текст коммента, координаты x, y, ширина и высота. Думаю все понятно.
Теперь внимание. У вас есть два варианта создания задачи. Первое, это когда вы создаете его отдельно.
Второе, когда создаете задачу относящуюся к определенной области картинки (картинка в другой задаче).
С первым вариантом все стандартно.
Во втором варианте, Вам нужно будет создать отдельную задачу, и в
related_task
указать, внутри какой задачи создаете эту задачу.
Так же, вам нужно будет скопировать картинку, которую выделили, во вновь созданную задачу. И в дополнительных полях указать выделенную область.
Когда люди будут открывать эту новую задачу, и эту картинку, Вам нужно выделить область согласно параметрам.
Думаю, вы поняли...