Вопрос дизайна БД - PullRequest
       23

Вопрос дизайна БД

0 голосов
/ 15 августа 2011

Требование: Менеджер назначит цели своим подчиненным, а подчиненные сообщат об этих целях.

Требования разработаны: Менеджер создаст проект и укажите дату начала и дату окончания .Менеджер добавит подчиненных в проект, а также добавит действий в проект из списка действий.Менеджер назначит цели своим подчиненным и выберет периодичность отчета.Частота может быть Ежегодно, Ежемесячно, Ежеквартально, Еженедельно .Подчиненные будут сообщать об этих назначенных целях.

Менеджер назначает цели, такие как :

  • Дата начала: 1 января 2011 (Дата начала проекта)
  • Дата окончания : 31 декабря 2011 (Дата окончания проекта)
  • Частота: Ежемесячно (Периодичность отчета, другие значения ежегодно, квартально, еженедельно)

Активность:

  • УстановитьОС на машинах
  • Установка SQL Server на серверах

Назначенные цели:

  • Установка ОС на машины:100

  • Установка SQL Server на серверные машины: 10

Расположение:

  • Лондон
  • Нью-Йорк
  • Париж

Теперь будет 12 отчетов (по одному на каждый месяц), и подчиненные в этих местах должныотчет ежемесячно.Назначенные цели для каждого месяца.

Я немного запутался в дизайне всего этого.

Q1- Должен ли я генерировать отчеты за каждый месяц и местоположение заранее исохранить в дб?Когда пользователь войдет в систему, чтобы сообщить, он увидит 12 отчетов (потому что частота ежемесячная, если частота еженедельная, то 52 отчета) и откроет отчет, чтобы сообщить о своей деятельности.

Q2- Должен ли я просто сохранить Назначенные цели в одной таблице, Местоположения в другой таблице, частоту отчетов в третьей таблице и, когда подчиненный отчет о назначенных целях за конкретный месяц и для определенного местоположения, сохранить эти данные в другой таблице и связать эти данные.

Q3- Любая другая идея сделать это?

Q4- Менеджер также может изменять частоту отчетов.Как мне справиться с этим, если подчиненные сообщили о целях, то как все это изменить?

Спасибо.

Примечание: Если этот вопрос не подходит для Stackoverflow, топереместите это (или скажите мне) на подходящий сайт stackexchange.

Ответы [ 2 ]

0 голосов
/ 16 августа 2011

Q1: я бы сохранял «частоту отчетов» как атрибут Target. Отчеты будут регистрироваться в базе данных, если, когда и как они генерируются подчиненными. Обеспечение / обеспечение их доставки выходит за рамки простой структуры базы данных.

Q2: Что такое атрибут Location: Project, ProjectAttribute, Target или другие? Храните это там. Возможно, у вас также есть отдельная таблица для Locations, особенно если есть атрибуты, зависящие от Location.

В3: Некоторые вопросы: есть ли связь между Атрибутами и Целями? Есть один менеджер или несколько? Если только когда-либо один, то я не думаю, что вам нужно моделировать его / ее; если их несколько, вам необходимо определить и структурировать отношения между руководителями и подчиненными. (Может ли менеджер быть подчиненным другого менеджера?) Подчиненные присваиваются проектам менеджерами, а назначаемые цели в этих проектах - менеджерами. Может ли подчиненный быть назначенным (связанным) с Проектом без каких-либо назначенных в настоящее время Целей? Как насчет обратного?

Q4: Согласно Q1, регистрируйте отчеты по мере их отправки и позволяйте менеджеру выявлять подчиненных, если они не соответствуют желаемому графику. Вопрос: Если Менеджер меняет частоту отчета, нужно ли отслеживать частоту в любой заданный момент времени? (Возможно, нет, но вы никогда не знаете.)

0 голосов
/ 15 августа 2011

Кашиф, вам нужно иметь таблицы ниже:

1- Проекты --- столбцы: (дата начала, дата окончания, частота отчетов) и т. Д.

2- ProjectDetails столбцы: (ProjectId, LocationId) и т. Д.

3- Локации

4- Субординаты

5- Активный отдых

5- Задачи --- столбцы: (ProjectDetailId, SubordinateId, ActivityId) и т. Д.

6- Отчеты - столбцы: (ProjectDetailId, SubordinateId, ReportDate, год, месяц, неделя, ReportData)

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

Вы можете создать список отчетов для пользователей при входе в систему на основе Projects.ReportFrequency. Здесь вам понадобится разумная логика.

...