Ведение базы данных учета командировок и больничных листов

 CREATE TABLE Worker
(
        ТабельныйНомер INT PRIMARY KEY IDENTITY, 
        Имя NVARCHAR(20) NOT NULL,
        Фамилия NVARCHAR(20) NOT NULL,
    Отчетсво NVARCHAR(20) NOT NULL,
    ГодРождения INT NOT NULL CHECK(ГодРождения >= 1900 AND ГодРождения <= 2002),
    ДатаПринятия Date NOT NULL,
    Должность NVARCHAR(20) NOT NULL REFERENCES Position(Должность), 
);

CREATE TABLE SickLeave
(
        НомерБольничногоЛиста INT PRIMARY KEY IDENTITY, 
    ТабельныйНомер INT NOT NULL REFERENCES Worker(ТабельныйНомер),
    ДатаНачала Date NOT NULL,
    ДатаОкончания Date NOT NULL,
    constraint CK_ДатаОкончания CHECK (ДатаОкончания >= ДатаНачала)
);

CREATE TABLE Position
(
        Должность NVARCHAR(20) PRIMARY KEY, 
    Оклад INT CHECK(Оклад >= 0) NOT NULL,
    Подразделение NVARCHAR(20) NOT NULL
);
  • справочник подразделений и их работников;
  • количество людей, которые имели командировки по каждому подразделению;
  • количество людей, которые болели и имеют больничные листы в текущем месяце, продолжительность больничного;
  • общий список людей, которые не имеют больничные листы (по алфавиту).
  • создать таблицу работников возраст которых более 60 лет

Ответы (1 шт):

Автор решения: user405374

ДатаОкончания всегда должна быть больше ДатаНачала, нету смысла в событии, которое нисколько не продлилось. Вот тут надо заменить:

constraint CK_ДатаОкончания CHECK (ДатаОкончания > ДатаНачала) 
→ Ссылка