Вопрос проектирования базы данных для применения расписания - PullRequest
0 голосов
/ 08 февраля 2011

У меня есть приложение с расписанием в Asp.Net MVC, но вопрос должен быть общего дизайна базы данных:

У меня есть несколько связанных таблиц: Клиент, Проект, Задача, Сотрудник, Сегмент времени. Теперь я хочу иметь возможность связывать Задачи с Сотрудниками как «ресурсы». И для каждого ресурса я хочу, чтобы у меня была информация о проценте работы, назначенном сотруднику для конкретной задачи. Но я не могу обернуть голову вокруг этого. Насколько я вижу, это не может быть просто отношение «многие ко многим» между «Задачей» и «Сотрудником», потому что где бы я тогда разместил поле процента? Если я надену это на сотрудника, как это будет связано с конкретной задачей?

Кажется, что это будет простая проблема, но я не могу понять это, и я должен упомянуть, что мои навыки работы с базами данных довольно просты. Так что любая помощь будет принята с благодарностью!

EDIT: Хорошо, некоторые из вас ответили на какой-то вариант создания отдельной таблицы для «Ресурсов» с Employee_Id и Task_Id и WorkPercentage. Но следует ли мне вручную обновлять Employee_Id и Task_Id каждый раз, когда я добавляю задачу? Потому что я сначала понял эти ответы как подсказку, что мне нужно добавить отношение «многие ко многим» между Employee и Task, а затем добавить поле для WorkPercentage в соединительной таблице (EmployeeTask). Я попробовал это, но я сразу же столкнулся с проблемами при попытке добавить сотрудника, который потребовал список EmployeeTasks и жаловался, что не может быть нулевого значения для необнуляемого поля. Но тогда я не должен был это делать? Скорее отдельная таблица, обновляемая вручную с каждым значением поля ...?

Пожалуйста, объясните, если возможно, как именно решить проблему, предложенную некоторыми из вас (то есть с точки зрения любых отношений). Спасибо!

Ответы [ 3 ]

0 голосов
/ 08 февраля 2011

Вы имеете в виду «Отслеживать, сколько этой задачи было назначено сотруднику А»?

Если это так, вы можете создать новую таблицу, в которой будут содержаться идентификатор задачи, идентификатор сотрудника и процент работы..

Самый простой способ справиться с этим: каждый раз, когда создается новое задание, добавляйте запись, 100% которой никому не назначены (например, идентификатор сотрудника равен 0).Затем, когда кому-то назначают, создайте новую запись для этого сотрудника и%, который им только что дали, и обновите исходную запись, чтобы забрать эту сумму.

Таким образом, вы также можете легко отследить любую нехватку ресурсовзадачи.

0 голосов
/ 08 февраля 2011

Вам может понадобиться таблица, скажем ProjectResources, чтобы просто записать, какие сотрудники являются ресурсами для каждого проекта.Затем, может быть, таблица ProjectTasks, где вы бы записали ключ проекта, ключ задачи, ключ ресурса и любые другие необходимые вам детали.

Лично я считаю более полезным оценивать и отслеживать задачи по времени, а не по процентам.В конце я хотел бы знать, что «Задание n завершено, и это заняло 3 часа», а не просто «Задание n завершено».

0 голосов
/ 08 февраля 2011

Может быть, новая таблица под названием «Ресурсы» со столбцами для id_employee, id_task и work_percentage?

Вы можете использовать более одной таблицы для каждой модели, которую вы пытаетесь смоделировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...