1. Знание SQL

В базе данных содержатся 3 таблицы, созданные следующим скриптом:

CREATE TABLE ORDERS_INFO (ID INTEGER NOT NULL, DT DATE NOT NULL);

alter table ORDERS_INFO add constraint PK_ORDERS_INFO primary key (ID);

CREATE TABLE TASK (ID INTEGER NOT NULL, DT DATE);

alter table TASK add constraint PK_TASK primary key (ID);

CREATE TABLE OPERATIONS (ID INTEGER NOT NULL, ID_ORDER INTEGER NOT NULL, ID_TASK INTEGER NOT NULL);

alter table OPERATIONS add constraint PK_OPERATIONS primary key (ID);

alter table OPERATIONS add constraint FK_OPERATIONS_ORDER foreign key (ID_ORDER) references ORDERS_INFO(ID);

alter table OPERATIONS add constraint FK_OPERATIONS_TASK foreign key (ID_TASK) references TASK(ID);

Таблица ORDERS_INFO хранит список заказов. Поле DT содержит предельную дату выполнения. Заказы выполненные после этой даты считаются просроченными. Все прочие заказы считаются не просроченными.

Таблица TASK хранит список производственных заданий. Каждое задание может относится к одному или нескольким заказам. Поле DT содержит дату выполнения задания, если задание выполнено.

Таблица OPERATIONS хранит список операций, из которых состоит производственное задание. Каждой операции сопоставлено задание и заказ.

Задача:

Составить SQL запрос, возвращающий не повторяющиеся номера (ID) всех не просроченных заказов и даты их окончательного выполнения.

2. Общеалгоритмическая подготовка

Разрабатывается модуль для программы обслуживания гостиничных номеров. Известно, что номера комнат лежат в диапазоне от 1 до N, без пропусков. У любой комнаты есть 2 состояния - свободно и занято. Поставлена задача реализовать следующие функции:

bool FreeRoomExists()

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

int GetFreeRoom()

Получение номера свободной комнаты. Возвращает номер любой свободной комнаты и переводит данную комнату в состояние занято.

void Release(int room)

Освобождение комнаты. Переводит комнату с номером room в состояние свободно.

Дополнительная информация:

При реализации функций проверка целостности данных не требуется. Считается что контроль за тем, чтобы не выделялась комната, когда все комнаты заняты (GetFreeRoom) и за тем чтобы не освобождалась уже освобожденная комната (Release), предварительно осуществляется в другом модуле.

Задача:

Предложить структуры данных для хранения информации о комнатах. Разработать на c/c++, либо нарисовать блок-схему для 3-х функций модуля.

Главный приоритет - скорость выполнения функций.