Я создаю базу данных, которая поможет отслеживать, какие сотрудники проходили определенный курс обучения. Я хотел бы получить некоторые рекомендации относительно лучшего способа проектирования базы данных.
В частности, каждый сотрудник должен посещать учебный курс каждый год, и моя база данных должна вести историю всех дат, в которые они посещали курс в прошлом.
Конечный пользователь будет использовать программное обеспечение в качестве инструмента планирования, чтобы помочь им забронировать даты будущих курсов для сотрудников. Когда они выберут данного сотрудника, они увидят:
- (а) Дата последнего посещения
- (b) Прогнозируемая будущая дата посещения (т.е. последняя дата посещения + 1 календарный год)
С точки зрения моей базы данных, любой данный сотрудник может иметь несколько дат посещения курсов в прошлом:
EmpName AttandanceDate
Joe Bloggs 1st Jan 2007
Joe Bloggs 4th Jan 2008
Joe Bloggs 3rd Jan 2009
Joe Bloggs 8th Jan 2010
Мой вопрос: каков наилучший способ настроить базу данных, чтобы упростить получение самой последней даты посещения курса? В приведенном выше примере самым последним будет 8 января 2010 года.
Есть ли хороший способ использовать SQL для сортировки по дате и выбора МАКСИМАЛЬНОЙ даты?
Моя другая идея состояла в том, чтобы добавить столбец с именем «MostRecent» и просто установить для него значение ИСТИНА.
EmpName AttandanceDate MostRecent
Joe Bloggs 1st Jan 2007 False
Joe Bloggs 4th Jan 2008 False
Joe Bloggs 3rd Jan 2009 False
Joe Bloggs 8th Jan 2010 True
Я задавался вопросом, упростит ли это SQL, т.е.
SELECT Joe Bloggs WHERE MostRecent = ‘TRUE’
Кроме того, когда пользователь обновляет запись о посещаемости данного сотрудника (т. Е. С последней датой посещаемости), я мог использовать SQL для:
- Поиск сотрудника и установка
MostRecent значение в FALSE
- Добавить новую запись с MostRecent, установленной в TRUE?
Кто-нибудь порекомендовал бы один метод по сравнению с другим? Или у вас есть совершенно другой способ решения этой проблемы?