Первый вопрос здесь, поэтому, пожалуйста, дайте мне знать как , чтобы лучше задать вопрос, если приведенный ниже бесполезен.
TLDR - Должен ли я разделить таблицы времени сотрудников длясотрудники, назначенные в бригады, и те, кто не работает?
Я пытаюсь создать базу данных, следуя книге «Дизайн базы данных для простых смертных», которая отслеживает время сотрудников.Я пытаюсь заменить используемые еженедельные табели рабочего времени и бумажные листы (с указанием времени начала и окончания для экипажа).Существуют также еженедельные табели отдельных сотрудников для тех, кто не назначен для экипажа.Также на листах экипажа иногда есть звездочка, если кто-то болен и т. Д.
Существует связь Проектов с экипажами (1: N), и для отдельного сотрудника, не назначенного для экипажей, назначается проект.Сотрудники назначаются в экипажи, обычно 1: 1, но головная боль возникает, когда 1: N.
Отношения "Имеет"
Таким образом, на данный момент существуют разные типы экипажейскажем, A, B, C, D, E.
Экипажи D & E будут просто заполнять еженедельные табели учета времени (проект, имена и время, поэтому команды D и E будут участвовать в этом же проекте) и ежедневныелисты не включают время.Иногда примерно в 10% случаев сотрудники будут работать в D & E в один и тот же день.
A, B, C будут иметь ежедневное время на дневном листе, но если сотрудник в команде C в эти временаПревышать время на листах A или B (если они также на A или B).
Очевидный ответ: {employee, datetimestart, datetimeend} не сработает, так как мне все равно, где времяродом из (экипаж, физическое лицо, если исключение для экипажа, например, больной, физическое лицо, не назначенное для экипажа).
Я могу расширить, чтобы {сотрудник, тип экипажа, datetimestart, datetimeend} это не заботилось оСотрудник работает в D & E. Я могу поставить DE или F в этом случае?
Тогда как мне работать только с теми, кто назначен проекту?если у меня есть {сотрудник, тип экипажа, projectref, datetimestart, datetimeend}, то projectref является избыточным и может быть получен из типа команды, если оно не равно нулю.Это разумный подход или лучше было бы иметь отдельные таблицы?
РЕДАКТИРОВАТЬ - или я должен иметь одну таблицу {crewid, datetimestart, datetimeend} - выводить время для сотрудников из экипажа-отношения с сотрудником, и имеют отдельную {сотрудник, дата-время начала, дата-время-конец, категория} с категорией, в которой говорится об исключении (например, о болезни) или о неназначенном человеке?