Координаты для соискателей

E-mail: *****@***ru

Сергей Кузнецов

Тестовое задание.

Задание.

Вам предлагается ER-диаграмма логической модели некой системы. Будем считать в рамках данного задания, что она является результатом работы аналитика предметной области и является заданием на разработку базы данных. Вам надо разработать часть базы данных, реализующую данную модель для конкретного сервера БД и с учетом всех его требований. Результатом должна быть ER-диаграмма ФИЗИЧЕСКОЙ модели БД и скрипт по созданию таблиц БД, ограничений, триггеров и т. п. - всего, что вы сочтете нужным - и текст требуемых запросов на языке SQL. При невозможности представить ER-диаграмму допускается предоставление только скрипта. Пожалуйста, не присылайте базы данных в бинарном виде или их дампы, а также только модели БД из каких-либо CASE-средств, без текстовых скриптов. Мы не имеем возможности устанавливать присылаемые базы данных или дампы и, возможно, не сможем загрузить и посмотреть модель БД. Поэтому присланные материалы должны обязательно содержать скрипт создания БД и запросов в текстовом виде, чтобы даже в случае отсутствия у нас соответствующего CASE-средства задание могло бы быть оценено.

Выбор сервера БД для задачи : вы можете использовать синтаксис любого сервера БД, который вы знаете. По возможности лучше использовать синтаксис Sybase или MS SQLServer. Не рекомендуется также использовать расширения языка SQL, используемые в выбранном вами сервере. Выбранный сервер должен быть указан в начале ответа на задание. По возможности избегать при решении конструкций select * from (select) и суррогатных ключей. Чем проще и читабельней запрос - тем лучше.

НЕ нашли? Не то? Что вы ищете?

При возникновении каких-либо неясностей, противоречий или недоразумений просим вас связываться по приведенным в заголовке координатам для выяснения - естественно, это никак не скажется на результатах тестирования.

Спасибо за то, что вы приняли участие в тестировании.

Ведущий программист Сергей Кузнецов.

Задание и пояснения к диаграмме.

Предполагается что :

·  Каждая кафедра подготавливает несколько курсов.
·  Каждый курс состоит из некоторого количества предметов.
·  Каждый ученик может проходить обучение по нескольким курсам подготовки
·  Связь " Экзамены" отражает необходимость хранения в системе ПОПЫТКИ ученика получить сертификат по какому-то предмету, т. е. каждый приход на экзамен фиксируется в БД. Для каждой попытки надо хранить отметку (от 0 до 100 баллов) и признак получения сертификата (НЕ зависящий от отметки).
·  Каждый предмет не зависит от курсов, в которых он участвует. Поэтому если учеником получен сертификат по какому-то предмету, этот предмет должен зачитываться как сданный на всех остальных курсах, по которым обучается этот ученик.

Задание.

Нарисовать структуру БД, реализующую данную логическую модель. Написать запросы на полученную структуру Написать запрос, который бы выводил всех студентов – должников на курсе, т. е. студентов, обучающихся на заданном курсе и не сертифицированных хотя бы по одному предмету этого курса. Курс задается названием курса. Написать запрос, который бы выводил средние оценки по предметам. Список всех предметов со средней оценкой по каждому. Запрос должен учитывать только успешные попытки сдачи экзаменов. Написать запрос, выдающий рейтинг "популярности" предметов - список всех предметов, упорядоченный по уменьшению количества курсов, в которых данный предмет изучается.

 

Задание 2

Ниже приведена структура БД, описывающая подразделения предприятия и работающих в них сотрудников.

Подчиненность подразделений иерархическая. Глубина иерархии неограниченная.

Нужно предложить проект структуры БД, которая позволяла бы писать SQL-запросы, обрабатывающие узлы иерархии со всеми подчиненными узлами или со всеми вышестоящими узлами, как например:

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

Запросы не должны использовать средства рекурсии в SQL-запросах (типа WITH, CONNECT BY) и процедурные расширения SQL – это должны быть простые запросы в рамках ANSI SQL.