Этап 1. Проектирование БД

advertisement
Задание №0 по курсу «Программирование баз данных»
Создание базы данных и написание SQL-запросов к ней
Краткое описание и сроки
1.
Спроектировать небольшую реляционную базу данных для предметной области, заданной
набором ключевых слов. Результат проектирования – это диаграмма схемы БД,
включающая таблицы и связи между ними (внешние ключи).
2.
Ввести схему БД в СУБД (на языке DDL)
3.
Заполнить БД осмысленными данными (на языке DML).
4.
Написать осмысленные запросы на выборку введенных данных (select).
Как правило, на занятии 2 выполняется и сдается этап №1, а также выполняется этап №2;
на занятии 3 выполняется этап №3 и начало этапа №4; на занятии 4 доделывается этап №4, и
сдается результат этапов №№2-4.
Этап 1. Проектирование БД
При описании варианта подлежащей проектированию предметной области (см. файл
DBVariants.doc) указан просто набор ключевых данных, которые подлежат хранению; они
далеко не всегда совпадают с таблицами! В описании многих вариантов есть дублирования,
недостающие элементы и с другие некорректности – так, как если бы задача ставилась
неспециалистом в области информационных технологий.
Результат проектирования представляется в виде нарисованной от руки диаграммы типа
Entity-Relationship (можно использовать любую нотацию). Желающим получить практические
навыки по проектированию рекомендуется в качестве домашнего задания использовать CASE-средства,
например, DBDesigner (бесплатное), MS Visio или ERwin. Таблицы и столбцы следует называть
полными именами; все имена либо на английском языке, либо (если с английским проблемы)
– на транслите. Смысловые части имени рекомендуется разделять символом подчеркивания и
писать все в одном регистре.
Оценка этапа. Каждая таблица дает 1 балл, также 1 балл дает моделирование одной
сложной ситуации (например, наследование или иная связь 1:1). Каждая грубая ошибка
проектирования дает минус 1 балл. Достаточно создать 3 таблицы (т.е. получить 3-4 балла);
хотя интересующиеся проектированием могут создать больше (для них максимальная оценка за этап – 7).
Этап 2. Data Definition Language
После проверки преподавателем схемы БД, спроектированной на этапе №1, необходимо
на ее основе создать и проверить DDL-скрипт создания таблиц и связей между ними.
Рекомендуется проверять в СУБД PostgreSQL, в то время как на семинаре DDL-инструкции
будут выполняться в СУБД Oracle; в той же БД Oracle (адрес БД 192.188.189.9:1521:XE) рекомендуется
выполнять этот и последующие этапы задания тем, кто по каким-то причинам делает их дома, а не на занятиях.
Этап 3. Data Manipulation Language
Наполнение таблиц должно соответствовать потребностям запросов на выборку (этап
4), других требований к числу и содержанию вводимых строк нет.
Оценка этапов 2-3. Каждая таблица дает 1 балл, ее заполнение через SQL – 0.5 балла,
каждый внешний ключ (независимо от способа ввода create table / alter table) – 0.5 балла (для
относительно больших БД необязательно вводить все спроектированные таблицы и связи) . Если DMLскрипт содержит не только оператор INSERT, но и UPDATE, это дает еще 1 балл; с учетом
этого типичная оценка за этапы 2-3 – 6-7 баллов. Желающие могут также создать осмысленные
индексы (по 0.5 балла за каждый) и последовательности (sequence; по 0.5 балла за каждую; должны
использоваться на этапе 3). Максимальная оценка за этапы 2-3 – 10.
Этап 4. Запросы на выборку (Data Query Language)
Требуется написать и протестировать SQL-запросы к таблицам, созданным и
наполненным на предыдущих этапах. Если эти этапы 3 не выполнялись (или выполнялись частично),
можно создать и наполнить таблицы с помощью графического редактора, поставляемого вместе с СУБД (само
по себе это дает по 1 баллу за таблицу вместо оценок за этапы 1-2-3). В классе такой редактор есть только для
СУБД PostreSQL. При сдаче запроса должен быть четко сформулирован соответствующий
вопрос на русском языке (лучше его написать рядом с запросом).
Примерный набор требуемых запросов (и особенностей запросов):
1. Выбор значений заданных атрибутов из более чем 2х таблиц с сортировкой
2. Использование условий WHERE, отличных от (=, <, >)
3. Запрос с использованием внешнего соединения
4. Уместное использование однострочных функций
5. Вычисление групповой функции (GROUP BY) (с HAVING или с несколькими
таблицами – 2 балла).
6. Запрос с использованием подзапросов (многострочный подзапрос – 2 балла)
7. Уместное использование представления (view)
8. Запрос с использованием какой-нибудь теоретико-множественной операции
(объединение, пересечение, разность) над результатами выборок
Все запросы (кроме 5, 8) должны затрагивать не менее двух таблиц.
Оценка этапа. Каждый пункт из вышеуказанного списка дает 1 балл (если не указано
иначе). Сдается не менее 3 и не более 7 запросов, и типичная оценка за них – 5-6 баллов.
Максимальная оценка за этап 4 – 10.
ИТОГО в результате выполнения всех этапов задания успевающий студент получает
около 16 баллов (максимум – 27 баллов, но он, как правило, недостижим).
Дополнительная информация для желающих углубить свои знания
Этап 1 – любые учебные пособия по проектированию БД, например,
http://www.citforum.ru/database/dbguide/index.shtml
(пособие В.В. Кириллова «Основы проектирования реляционных баз данных»)
Этапы 2-3 – многие учебные пособия по SQL, например,
http://www.citforum.ru/database/dblearn/dblearn05.shtml
(Глава 5 пособия А.Ю. Пушникова «Введение в системы управления базами данных»),
http://www.citforum.ru/database/osbd/glava_58.shtml
(Лекция 14 учебника С.Д. Кузнецова «Основы современных баз данных»)
Этап 4 – любые учебные пособия по SQL, например,
http://www.mysql.ru/docs/gruber/ (Классическая книга М.Грубера «Введение в SQL»),
http://www.sql.ru/docs/sql/u_sql/index.shtml («Продвинутая» книга Грубера «Понимание SQL»)
http://www.citforum.ru/database/osbd/glava_62.shtml (Лекция 15 учебника С.Д. Кузнецова)
http://www.sql.ru/books/books.aspx?g=6&s=0 (список других книг)
Download