Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Ограничение на диапазон  [new]
AlexBra
Member

Откуда:
Сообщений: 67
Коллеги, ткните ссылкой/советом, надо сделать историю должностей. Думаю dateFrom + DateEnd, (текущая запись DateEnd - не заполнено).
Как грамотнее поставить ограничение чтобы пользователь при редактировании истории (должна у них быть такая возможность) не создал пересекающихся диапазонов? Можно конечно процедурой/триггером проверять, но может есть более элегантный констрэйнт?
27 ноя 17, 12:54    [20985565]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение на диапазон  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1526
AlexBra,
использовать структуру dateFrom + DateEnd
Ну как с курсами валют. И никаких триггеров и прочей лабуды.
27 ноя 17, 12:58    [20985585]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение на диапазон  [new]
Добрый Э - Эх
Guest
AlexBra,

SChD
27 ноя 17, 13:09    [20985640]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение на диапазон  [new]
Nickolay-123
Member

Откуда:
Сообщений: 21
Если версия >= 2016, то есть temporal tables
27 ноя 17, 13:22    [20985699]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение на диапазон  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7754
AlexBra,

DateEnd зачем? У вас человек числится на предприятии без должности, что ли? Смотри, что Сергей Сизов написал.
27 ноя 17, 14:01    [20985857]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение на диапазон  [new]
AlexBra
Member

Откуда:
Сообщений: 67
Добрый Э - Эх,
Если бы не редактирование СТАРЫХ диапазонов, то да. А тут как раз в этом загвоздка. Видимо, действительно, выгоднее выкинуть DateEnd (тоже была такая мысль)
Спасибо Sergey Sizov
27 ноя 17, 14:05    [20985872]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение на диапазон  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
AlexBra
Видимо, действительно, выгоднее выкинуть DateEnd
Ни в коем случае.
Корректность диапазонов проверять в триггере.
27 ноя 17, 14:23    [20985935]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение на диапазон  [new]
aleks222
Guest
iap
Ни в коем случае.
Корректность диапазонов проверять в триггере.

Ты не прав.
27 ноя 17, 14:48    [20986044]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение на диапазон  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
aleks222
iap
Ни в коем случае.
Корректность диапазонов проверять в триггере.

Ты не прав.
Но я всегда так делаю... :-((
27 ноя 17, 15:16    [20986189]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение на диапазон  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7754
iap,

так там просто одну дату обновить в истории, диапазоны автоматически не будут пересекаться. Человек же не имеет пробелов хронологии должностей.
27 ноя 17, 15:30    [20986279]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение на диапазон  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
Владислав Колосов
iap,

так там просто одну дату обновить в истории, диапазоны автоматически не будут пересекаться. Человек же не имеет пробелов хронологии должностей.
Чтобы узнать, когда же наконец, он уволился, надо будет джойниться к таблице ещё раз,
чтобы... что? Узнать, что позднее никаких должностей не было? NOT EXISTS(), так сказать?
Вместо того, чтобы взять из той же строки дату увольнения.
27 ноя 17, 15:39    [20986327]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение на диапазон  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
Кстати, а как же узнать дату увольнения, если DateEnd не хранится?
27 ноя 17, 15:40    [20986332]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение на диапазон  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1526
iap
Кстати, а как же узнать дату увольнения, если DateEnd не хранится?
Последняя дата с пустой должностью. Никаких джойнов.
27 ноя 17, 15:42    [20986348]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение на диапазон  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
Sergey Sizov
iap
Кстати, а как же узнать дату увольнения, если DateEnd не хранится?
Последняя дата с пустой должностью. Никаких джойнов.
Джойны понадобятся, чтобы вычислять пресловутую DateEnd. Всегда.
27 ноя 17, 15:43    [20986357]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение на диапазон  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1526
iap
Sergey Sizov
пропущено...
Последняя дата с пустой должностью. Никаких джойнов.
Джойны понадобятся, чтобы вычислять пресловутую DateEnd. Всегда.
Я бы не был так категоричен. Для примера предлагаю посмотреть содержимое трудовой книжки или другой документ с кадровой историей. Там НЕТ графы "Дата окончания".
27 ноя 17, 15:49    [20986396]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение на диапазон  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
Sergey Sizov
iap
пропущено...
Джойны понадобятся, чтобы вычислять пресловутую DateEnd. Всегда.
Я бы не был так категоричен. Для примера предлагаю посмотреть содержимое трудовой книжки или другой документ с кадровой историей. Там НЕТ графы "Дата окончания".
В отчётах потребуется.
27 ноя 17, 15:52    [20986410]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение на диапазон  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1526
iap
Sergey Sizov
пропущено...
Я бы не был так категоричен. Для примера предлагаю посмотреть содержимое трудовой книжки или другой документ с кадровой историей. Там НЕТ графы "Дата окончания".
В отчётах потребуется.
Смотря в каких.
27 ноя 17, 15:53    [20986416]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить