13 декабря 2015
01 декабря 2015
Схема БД для контеста
Контест посвящен космическим путешествиям!
Схема БД тут.
А тут SQL-скрипт, генерирующий данные.
А тут запросы
Оба скрипта доступны в SQooL в виде шаблона "Контест 2 декабря"
Напомню правила:
SELECT DISTINCT C.name FROM Commander C JOIN Flight F ON(C.id = F.commander_id) JOIN Planet P ON (F.planet_id = P.id) JOIN Government G ON (G.id = P.government_id)
WHERE G.value = 'диктатура'
ORDER BY name;
Схема БД тут.
А тут SQL-скрипт, генерирующий данные.
А тут запросы
Оба скрипта доступны в SQooL в виде шаблона "Контест 2 декабря"
Напомню правила:
- Баллы можно получить за авторство запросов и за решение
- Автор запроса должен написать запрос в человекочитаемом текстовом виде, дать ему оценку по шкале "простой" - "средний" - "сложный" - "никто не решит!", написать свое каноническое решение и прислать мне по почте.
- У нас не будет много времени на уточнение решения, поэтому постарайтесь делать канонические решения правильными.
- Каноническое решение должно давать детерминированный ответ. Лучше всего делать ответ упорядоченным и оговаривать условие сортировки в тексте
- В процессе решения на паре вы выбираете запросы из имеющихся, решаете и присылаете мне ответы. Постараюсь проверять в реальном времени. За правильное решение запроса со стоимостью P каждый из N решивших получает P/(N+1) баллов. Автор получает тоже P/(N+1) балл, при условии что запрос вообще хоть кто-то решал (была хоть одна попытка).
Пример запроса:
Найти всех пилотов, водивших корабли на планеты с диктатурой. В ответе должны быть имена пилотов, отсортированные по возрастанию.
Простой.
Решение:
SELECT DISTINCT C.name FROM Commander C JOIN Flight F ON(C.id = F.commander_id) JOIN Planet P ON (F.planet_id = P.id) JOIN Government G ON (G.id = P.government_id)
WHERE G.value = 'диктатура'
ORDER BY name;
Labels:
2015,
Академический Университет,
СУБД 2015,
dbms
25 ноября 2015
Тренировочный контест
Схема и данные
Запросы
- Работник-чемпион по количеству интервью
- У кандидатов с вердиктами 'soft accept' и 'strong accept' найти MAX и MIN средние баллы за интервью и выветси данные о соответствующих кандидатах
- Найти кандидатов, подавшихся на >1 вакансию
- Найти противоречия в данных, например:
- несовпадения дат
- проигнорированный флажок фильтрации
- принятые ('* accept') кандидаты с низким баллом (например < 2.0)
Labels:
2015,
Академический Университет,
СУБД 2015,
dbms
18 ноября 2015
Тексты заданий первой контрольной
Файлопомойка
https://docs.google.com/document/d/1jE_ZAZjP55QQnFLCas0voQpbzNzJiZl6wQpBcc0Y8pM/edit?usp=sharing
Пироги
https://docs.google.com/document/d/1V5rdHUC4EyqQfLZrtoOvE2fKd4-8HpunEtw8QDvBSW8/edit?usp=sharing
Футбол
https://docs.google.com/document/d/1veCHQIPt1WbipQ5FDmNtfzeXsLzu-LDJskqJCMYV6Zk/edit?usp=sharing
https://docs.google.com/document/d/1jE_ZAZjP55QQnFLCas0voQpbzNzJiZl6wQpBcc0Y8pM/edit?usp=sharing
Пироги
https://docs.google.com/document/d/1V5rdHUC4EyqQfLZrtoOvE2fKd4-8HpunEtw8QDvBSW8/edit?usp=sharing
Футбол
https://docs.google.com/document/d/1veCHQIPt1WbipQ5FDmNtfzeXsLzu-LDJskqJCMYV6Zk/edit?usp=sharing
Labels:
2015,
Академический Университет,
СУБД 2015,
dbms
23 октября 2015
Практика 21 октября. Исходники и ДЗ
Исходники, использованные на практике 21 октября
Домашнее задание
Мы хотим организовать ключевые слова, характеризующие содержание статьи или интересы ученого, в деревянную иерархию. Примером такой иерархии может служить ACM Computing Classification System [1]
Иерархия представляет из себя лес, где корнями являются очень широкие темы, а каждый последующий уровень постепенно тему сужает.
Статья может быть связана с любыми элементами этой классификации, на любом уровне.
Нужно придумать схему хранения этой классификации в БД и связи статей с темами и написать запросы:
- добавляющий новую тему с указанной родительской темой (приветствуется оформление в виде хранимой процедуры)
- показывающий всё поддерево тем, начиная с заданной. Результат должен быть удобен для обработки приложением, чтобы ему не нужно было прикладывать чрезмерных усилий, чтобы напечатать дерево. Добавлять в метки пробелы-отступы, однако, не нужно.
- выдающий все статьи, проассоциированные с темами из поддерева с заданным корнем
- находящий ближайшего общего предка для двух заданных тем
Запросы приведены в порядке возрастания сложности (как мне кажется), так что начните с самых простых
Labels:
2015,
Академический Университет,
СУБД 2015,
dbms
17 октября 2015
Практика 14 октября, исходники
Исходники, использованные на практике 14 октября.
Медленная БД и сессии
Представления и хранимые процедуры
Медленная БД и сессии
Представления и хранимые процедуры
Labels:
2015,
Академический Университет,
СУБД 2015,
dbms
16 октября 2015
Домашнее задание №4
Описание
Ваш босс хочет знать, какие ключевые слова в тренде на каждой конференции. Для этого ему нужно представление, в котором для каждой конференции записаны три самых часто встречающихся ключевых слова в статьях, поданных на эту конференцию.
Исходники для генерации схемы и данных тут: hw04.zip
Схема и данные
В приложенном архиве находятся файл со схемой БД и скрипт на Питоне, заполняющий таблицы данными
psql -h localhost -U postgres < 01_gen_schema.sql
python 02_gen_data.py
Схема БД
В базе данных есть таблицы Conference, Paper, Keyword и связи многие-ко-многим PaperConference и PaperKeyword. Смысл таблиц и их атрибутов, полагаю, ясен из их названий.
Задание
В результате должно получиться представление со схемой:
conference TEXT, keyword TEXT, count INT
Запись в представлении означает, что в статьях, поданных на конференцию
conference ключевое слово keyword упоминается countраз. В представление должны попасть для каждой конференции ключевые слова с наибольшим значением count, в количестве не более трех. Например, из следующих записейConf1 KW1 5
Conf1 KW2 8
Conf1 KW3 1
Conf1 KW4 6
в представление должны попасть первая, вторая и четвертая. Если есть несколько ключевых слов с одинаковым значением count и в представление нужно включить только часть из них, то отсортируйте эти ключевые слова лексикографически и возьмите первые. Пример:
Conf1 KW2 8
Conf1 KW4 6
Conf1 KW1 5
-----------
Conf1 KW3 5
Задание можно решить многими способами. Как-то явно фантазию ограничивать не будем, но все же постарайтесь не увлекаться. Вы написали и забыли, а проверяющим читать. Постарайтесь написать комментарии ко всем нетривиальным решениям.
Labels:
2015,
Академический Университет,
СУБД 2015,
dbms
Подписаться на:
Сообщения (Atom)