Ведение базы данных учета командировок и больничных листов
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 (ДатаОкончания > ДатаНачала)