Как сдать экзамен по базам данных

Время на прочтение
8 мин

Количество просмотров 35K

Зачем написана статья?

image

Когда я готовился к OCA и OCP по Java 8, то нашел много статей на Хабре, благодаря которым выбрал оптимальный путь и сэкономил много времени.

Однако по подготовке именно к OCA Oracle Database SQL (1Z0-071) материалов на Хабре нет и в интернете тоже очень мало. Поэтому я решил написать подробную статью, которая поможет заинтересованным потратить меньше времени и успешно сдать довольно объемный экзамен.

Зачем сдавал?

Главной причиной послужило желание упорядочить знания, которые я получил за годы учебы и работы и заполнить все белые пятна. Также я хотел узнать, какого уровня понимания сам вендор БД, в данном случае Oracle, ожидает от разработчиков.

Просто прочесть книгу по SQL я посчитал недостаточным, так как без практики возникает ощущение, что все прочитанное усвоил. А когда готовишься к сертификации приходится решать тесты чуть ли не по каждой прочитанной строчке, там и вскрывается, что понимаешь некоторые моменты не до конца и возвращаешься перечитывать.

Но ведь тогда, можно было бы просто прочитать книгу, и решать тесты. Зачем идти и сдавать официально? Как дополнительная мотивация.

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

Плюс бонусом, сертификат можно показать текущему и будущему работодателю. Гипотетически это должно характеризовать вас как человека, который умеет ставить цели, планировать, готовиться, перерабатывая, большой объем информации и доводить дело до конца.

Вот в общем и все причины сдачи. Уверенность в своих знаниях и значок, который можно показать.

Что знал перед тем как начать готовиться?

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

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

Первый “Теория баз данных” Э.Э. Гасанова, это фундаментальный теоретический курс.

Второй курс “Базы данных” вел М.И. Кумсков, практический курс по типам баз данных, как анализировать требования, как создавать таблицы, связи и много чего еще.

Оба курса лежат в открытом доступе, но для того чтобы сдать сертификацию их, конечно, изучать не надо.

Кроме этого, я как многие работал на работе и дома в основном с PostgreSQL, MySQL и SQLite, читал статьи, смотрел курсы.

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

Почему именно Oracle Database SQL?

Я рассматривал три базы данных PostgreSQL, MySQL и Oracle Database SQL.

PostgreSQL официальной сертификации нет. MySQL есть, но она довольно старая и мне лично ее ценность не до конца понятна.

Остановился на Oracle так как сертификация недавно обновлена, сертификат по этой базе, как мне кажется, ценится больше остальных. А так как курс только по SQL, то там описаны вещи, которые должны в той или иной степени работать во всех SQL базах данных, так как все они поддерживают ANSI SQL.

Как готовился?

Здесь я подробно описываю то, что я делал и какие ошибки совершил.

Опыт сын ошибок

Прежде чем начинать читать книгу, я хотел установить Oracle SQL. Как раз на Хабре прочел, что вышла 18c XE. Я зашел на сайт и увидел, что MacOS в списке нет. Windows на тот момент у меня не было, зато была VPS на Ubuntu. К сожалению, Oracle на Ubuntu я не смог завести, может попытка была необдуманной, но и не такие вещи я в жизни делал.

В итоге я прикупил на DigitalOcean VPS с CentOS и без особого труда поставил БД туда. Будучи вообще не знакомым с официальным редактором SQL Developer я решил, что буду писать в DataGrip от JetBrains, так как он уже был установлен. Подключил DataGrip к Oracle SQL и начал читать официальную книгу по подготовке к экзамену.

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

В первый проход, я читал главу, потом решал тест, проверял правильность, если не правильно, читал объяснение в ответе, но обратно главу не перечитывал.

Занимался три раза в неделю по два-три часа. В какую-то неделю меньше, в какую-то неделю больше. Не могу сказать, что это приятное чтение и порой оно вызывало у меня отчаяние, но цель поставлена, план есть, можно было продолжать. Книга довольно сложная для восприятия. Иногда и со второго раза я не мог разобрать что имел ввиду автор.

К началу июня, больше чем через месяц, я все-таки закончил чтение и выполнил первый тестовый экзамен из двух в эмуляторе, который идет вместе с книгой. Причем я забыл про время и не успел закончить даже половину вопросов. По умолчанию программа не разрешила продолжить тест (в отличии от Enthuware для Java). В результате набрал меньше половины. Несмотря на то, что успел сделать только половину я убедился, что не полностью усвоил книгу.

Дела налаживаются

Поэтому решил дальше искать другие материалы по подготовке и наткнулся на курс на Udemy, первоначально отнесся скептически, так как всегда предпочитал книги при подготовке к более менее серьезному экзамену. Но не найдя альтернатив, я посмотрел рейтинг, почитал отзывы и купил курс (за 4 824 рублей) ничего особо от него не ожидая. Как оказалось примерно раз в неделю цена падает до 799 рублей, поэтому стоит подождать.

К этому моменту мне надоело постоянно подключаться к VPS для того чтобы разбирать примеры практически. Плюс ко всему DataGrip не поддерживает SQL*Plus команды. Поэтому достал ноутбук на Windows и поставил туда все локально, следуя инструкции из видео курса.

Не смотря на мои ожидания, я остался очень доволен курсом. Автор рассказывает как установить БД, установить SQL Developer и как разблокировать подготовленного Oracle тестового пользователя HR с уже загруженными данными. В течении всего видео курса почти все примеры показываются на тестовой базе HR. Также автор показал, что использует SQL Developers и это, я думаю, правильный и бесплатный выбор.

Странно, что ни про установку БД, ни про Oracle SQL Developer, ни про HR пользователя, в книгe не рассказывается. При этом в самом экзамене часто встречались вопросы, которые как раз основаны на данных из этой БД. Поэтому, если бы я знал где подстелить заранее, я бы начал с видео курса, и уже потом перешел к книге и сэкономил бы время.

В каждой главе курса сначала краткая теория, а сразу после реальные практические примеры, которые автор выполняет в SQL Developer. Я с самого начала решил, что буду повторять и разбирать каждый пример локально. Поэтому двадцать часов видео превратились в полтора месяца изучения и практики, хотя перерывы тоже были. Так как курс интересный, мотивация его закончить была выше мотивации закончить книгу.

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

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

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

И тут я заметил, что перечитывая, начинаю понимать все с первого раза. После каждой главы я снова решал тест из этой главы состоящий из 15-20 вопросов. Хотя до этого я уже провешивал эти вопросы, но так как прошло полтора месяца после прочтения книги, мне показалось, что большинство из них я забыл.

Практика

Было ясно, что тестов из книги и эмулятора маловато, нужно было прорешать еще два-три тестовых экзамена перед тем как сдавать. Сначала я думал купить Kaplan Training их советует Oracle на официальном странице экзамена, но цена в $189 за полный курс меня обескуражила. Поэтому я купил тесты по совету автора курса Udemy. Я купил PDF + эмулятор за $60 долларов.

Меня ждал не очень приятный сюрприз. В отличии от Enthuware где тесты разбиты на 7 независимых экзаменов, эти тесты разбиты на две части в одной 272 вопроса, в другой 27. Я так и не понял логики, но разбираться не стал. Я просто в уме разбил на три отдельных по 78 вопросов и засекал два часа для каждого, как в настоящем. Купленные материалы оцениваю ниже среднего, если сравнивать с Enthuware. Встречались ошибки в вопросах и ответах, часто к вопросу нет объяснения, нет ссылки на форум где можно обсудить вопрос, нет возможности смотреть детальные отчеты, чтобы понять какие именно темы хуже всего усвоены.

Тут схема была как и раньше, я читал вопрос, если не знал как однозначно ответить записывал название темы в тетрадь. После первого условного экзамена, прочел по списку три главы, которые вызывали больше всего вопросов, проверил примеры на локальной БД. Так я повторил еще один раз, прочел еще несколько самых непонятных глав. В итоге получилось, что прочел по второму кругу девять или десять глав из четырнадцати.

К этому моменту я был готов к экзамену и не стал решать остальные вопросы.

Сдача

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

Сдача экзамена стоит $245 долларов.

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

Кстати, сейчас PearsonVue предлагает возможность сдать любой экзамен онлайн, но там много дополнительный условий, поэтому сдавал в тестовом центре.

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

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

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

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

На самом экзамене я уже особо не волновался, следовал плану, и закончил за 10 минут до конца, за оставшееся время на всякий случай пробежался по всем вопросам и проверил, что ответил на все. Через пятнадцать минут на почту пришло письмо, что можно проверить результаты, я зашел на сайт и узнал что прошел, с результатом в 85%. Чему был очень рад.

Как надо было готовиться

Если бы я заранее знал какие материалы и в какой последовательности использовать, сократил бы подготовку до 2-2.5 месяцев.

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

Я бы не разворачивал БД на VPS и не использовал DataGrip. Я бы сразу установил БД и SQL Developer локально на компьютер или виртуальную машину, следуя инструкции из видеокурса.

Итак, вот дорожная карта, по который я бы готовился:

  1. Проработать курс на Udemy и разобрать все примеры на локальной БД.
  2. Установить эмулятор из книги Стива О’Хирна, но саму книгу не читать.
  3. Прорешать экзамен. Попутно фиксировать темы вопросов на которые не можете дать однозначный ответ.
  4. Прочесть самые непонятные главы, обычно первых трех хватает.
  5. Повторить 3. и 4. для второго экзамены из эмулятора.
  6. Купить тестовые экзамены, прорешать два, повторяя 3. и 4.
  7. Записаться на экзамен и сдать.

Послесловие

Надеюсь, что статья поможет всем кто хочет сдать экзамен. Я постарался описать подробно, хоть и скучновато, все что делал по двум причинам. Во-первых, чтобы был понятен ход мыслей и вывод к которому пришел. Во-вторых, статей по этому экзамену мало. Буду очень рад дополнениям в комментариях! Удачи на экзамене!

Это первый пост, который я перевел на английский язык. И здесь же хотел бы выразить благодарность deniskin и команде, за площадку, на которой мы можем поделиться своим опытом с международным сообществом.

Вопросы к экзамену по дисциплине «Базы данных«

1. Классификация баз данных. Определения, основные функции, виды.

2. Основы реляционной алгебры. Определения высказываний, запись, примеры.

3. Иерархическая модель данных. Основные понятия, графическое изображение, примеры.

4. Сетевая модель данных. Основные понятия, графическое изображение, примеры.

5. Реляционная модель данных. Основные понятия, графическое изображение, примеры.

6. Термины и определения реляционных баз данных.

7. Основные компоненты систем управления реляционными базами данных. Таблицы, запросы, формы, отчеты

8. Нормализация таблиц реляционной базы данных. Определение, виды, понятия.

9. Первая нормальная форма реляционной модели данных. Определение, требования, примеры.

10. Вторая нормальная форма реляционной модели данных. Определение, требования, примеры.

11. Третья нормальная форма реляционной модели данных. Определение, требования, примеры.

12. Проектирование связей между таблицами. Назначение, основные правила, варианты поведения зависимой таблицы.

13. Физические модели данных. Определения, назначение информационной модели, цели.

14. Файловые структуры организации баз данных. Классификация, вид хранящейся информации, файлы прямого доступа, методы хэширования.

15. Файлы с неплотным индексом. Структура индексной записи. Алгоритм размещения записи.

16. Разрешение коллизии методом свободного замещения. Указатели записи. Алгоритм размещения записи, механизм удаления записи

17. Разрешение коллизии с помощью области переполнения. Алгоритм размещения, поиска и удаления записей.

18. Иерархическая организация памяти. Уровни иерархии. Размер блока, попадание, промах, потери на промах.

19. Принципы разработки многопользовательских информационных систем. Системный подход, последовательность разработки БД, модульный принцип разработки.

20. Стандартизация разработки информационных систем. Ее аспекты, необходимость стандартизации.

21. Организация многопользовательских систем управления базами данных в локальных вычислительных сетях. Типы, общие признаки и отличия, недостатки и преимущества.

22. Модель сервера баз данных. Необходимые условия, преимущества, недостатки.

23. Разработка концептуальной модели многопользовательской базы данных. Этапы, цель, практическое применение, установление состава пользователей.

24. Разработка проекта СУБД в соответствии с техническим заданием. Требования к техническому заданию, определение ресурсов для разработки БД.

25. Модель сервера приложений. Архитектура, компоненты, преимущества.

26. Модели клиент-сервер в технологии распределенных баз данных. Основной принцип, группы.

27. Основные понятия распределенной обработки данных. Режимы работы с базами данных.

28. Структура типового приложения, работающего с базой данных. Презентационная логика, бизнес-логика, процессор управления данными.

29. Условия работы удаленного доступа к данным.

30. Процессор управления данными. Расположение, модели распределений.

31. Модель удаленного управления данными. Двухуровневая модель, расположение, распределение функций, алгоритм выполнения клиентского запроса.

32. Модель удаленного доступа к данным. Структура модели, преимущества, недостатки.

33. Программная среда СУБД Microsoft Access. Назначение, возможности, характеристики, структура.

34. Технология разработки таблиц базы данных. Этапы создания, свойства поля.

35. Создание структуры таблицы. Типы данных таблиц базы данных.

36. Ключевое поле таблиц баз данных. Назначение, создание, примеры.

37. Обработка данных в таблицах: форматирование, сортировка, фильтрация.

38. Заполнение таблиц данными. Технология ввода данных.

39. Установление связей между таблицами. Назначение, главная и подчиненная таблица, последовательность действий.

40. Использование построителя выражений.

41. Технология разработки запросов. Назначение, виды, способы создания.

42. Запрос на выборку. Назначение, создание, примеры.

43. Запрос с параметром. Назначение, создание, примеры.

44. Итоговые запросы. Назначение, создание, примеры.

45. Перекрестный запрос. Назначение, создание, примеры.

46. Запрос на создание таблицы. Запрос на удаление. Назначение, создание, примеры.

47. Запрос на обновление. Запрос на добавление. Назначение, создание, примеры.

48. Создание запроса на выборку с логическими операциями в условиях отбора.

49. Технология разработки форм. Назначение, виды, способы создания, структура.

50. Разработка составных форм. Кнопка. Рисунок. Набор вкладок. Подчиненная форма.

51. Многостраничная форма. Назначение, способы создание, примеры.

52. Создание кнопок управления с помощью мастера.

53. Технология разработки форм для ввода данных в запросы. Назначение, последовательность проектирования, условия отбора.

54. Технология разработки форм для организации пользовательского интерфейса. Назначение, сценарий приложения, приемы и способы разработки

55. Технология создания отчетов. Последовательность действий.

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

57. Ввод и корректировка данных в режиме таблицы.

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

59. Автоматизация расчетов с помощью запросов. Применение, вычисление с помощью запросов.

60. Редактирование запроса.

61. Ввод новых записей в таблицу с помощью формы.

62. Проектирование формы для работы с данными двух связанных таблиц.

63. Объединение записей в многотабличном запросе.

64. Ввод и анализ данных с помощью форм. Назначение, способ организации.

65. Структурированный язык запросов SQL. Создание новых таблиц.

66. Формирование запросов с помощью языка SQL.

67. Создание перекрестной таблицы.

68. Создание перекрестной таблицы в режиме конструктора.

69. Характеристики полей таблиц баз данных. Размер поля, Формат поля, Число десятичных знаков, Маска ввода, Подпись поля, Условие на значение, Сообщение об ошибке, Обязательное поле, Пустые строки, Индексированное поле.

70. Правила составления условий отбора данных. Операторы сравнения, использование функций.

FROM — ключевое слово, подобно SELECT, которое должно быть представ-

лено в каждом запросе. Оно сопровождается пробелом и затем именами таблиц, используемых в качестве источника информации. В случае если указано более одного имени таблицы, неявно подразумевается, что над перечисленными таблицами осуществляется операция декартова произведения. Таблицам можно присвоить имена-псевдонимы, что бывает полезно для осуществления операции соединения таблицы с самой собою или для доступа из вложенного подзапроса к текущей записи внешнего запроса (вложенные подзапросы здесь не рассматриваются).

Все последующие разделы оператора SELECT являются необязательными.

Самый простой запрос SELECT без необязательных частей соответствует просто декартову произведению. Например, выражение

SELECT * FROM R1, R2

соответствует декартову произведению таблиц R1 и R2. Выражение

SELECT R1.A, R2.B FROM R1, R2

соответствует проекции декартова произведения двух таблиц на два столбца A из таблицы R1 и B из таблицы R2, при этом дубликаты всех строк сохранены, в отличие от операции проектирования в реляционной алгебре, где при проектировании по умолчанию все дубликаты кортежей уничтожаются.

WHERE — ключевое слово, за которым следует предикат — условие, налагаемое -на запись в таблице, которому она должна удовлетворять, чтобы попасть в выборку, аналогично операции селекции в реляционной алгебре.

Рассмотрим базу данных, которая моделирует сдачу сессии в некотором учебном заведении. Пусть она состоит из трех отношений R1, R2, R3. Будем считать, что они представлены таблицами R1, R2 и R3 соответственно.

R1 = (ФИО, Дисциплина,

Оценка) ; R2 = (ФИО, Группа) ; R3 =

(Группы, Дисциплина)

R1

ФИО

Дисциплина

Оценка

Петров Ф. И.

Базы данных

5

Сидоров К. А.

Базы данных

4

Миронов А. В.

Базы данных

2

Степанова К. Е.

Базы данных

2

Крылова Т. С.

Базы данных

5

Сидоров К. А.

Теория информации

4

Степанова К. Е.

Теория информации

2

Крылова Т. С.

Теория информации

5

Миронов А. В.

Теория информации

Null

Владимиров В. А.

Базы данных

5

Трофимов П. А.

Сети и телекоммуникации

4

Иванова Е. А.

Сети и телекоммуникации

5

Уткина Н. В.

Сети и телекоммуникации

5

Владимиров В. А. Английский язык

Трофимов П. А.

Английский язык

Иванова Е. А.

Английский язык

Петров Ф. И.

Английский язык

R2

ФИО

Петров Ф. И.

Сидоров К. А.

Миронов А. В.

Крылова Т. С.

Владимиров В. А.

Степанова К. Е.

Трофимов П. А.

Иванова Е. А.

Уткина Н. В.

Группа

4906

4906

4906

4906

4906

4906

4807

4807

4807

R3

Группа

Дисциплина

4906

Базы данных

4906

Теория информации

4906

Английский язык

4807

Английский язык

4807

Сети и телекоммуникации

Приведем несколько примеров использования оператора SELECT.

Вывести список всех групп (без повторений), где должны пройти экзамены.

SELECT DISTINCT Группы FROM R3

Результат:

Вывести список студентов, которые сдали экзамен по дисциплине «Базы данных» на «отлично».

SELECT ФИО

FROM R1

WHERE Дисциплина = «Базы данных» AND Оценка = 5

Результат:

ФИО

Петров Ф. И.

Крылова Т. С.

Владимирова В. А.

Вывести список всех студентов, которым надо сдавать экзамены с указанием названий дисциплин, по которым должны проводиться эти экзамены.

SELECT ФИО,Дисциплина

FROM R2,R3

WHERE R2.Группа = R3.Группа;

Здесь часть WHERE задает условия соединения отношений R2 и R3, при отсутствии условий соединения в части WHERE результат будет эквивалентен расширенному декартову произведению, и в этом случае каждому студенту были бы приписаны все дисциплины из отношения R3, а не те, которые должна сдавать его группа.

Результат:

ФИО

Дисциплина

Петров Ф. И.

Базы данных

Сидоров К. А.

Базы данных

Миронов А. В.

Базы данных

Степанова К. Е.

Базы данных

Крылова Т. С.

Базы данных

Владимиров В. А.

Базы данных

Петров Ф. И.

Теория информации

Сидоров К. А.

Теория информации

Миронов А. В.

Теория информации

Степанова К. Е.

Теория информации

Крылова Т. С.

Теория информации

Владимиров В. А.

Теория информации

Петров Ф. И.

Английский язык

Сидоров К. А.

Английский язык

Миронов А. В.

Английский язык

Степанова К. Е.

Английский язык

Крылова Т. С.

Английский язык

Владимиров В. А.

Английский язык

Трофимов П. А.

Сети и телекоммуникации

Иванова Е. А.

Сети и телекоммуникации

Уткина Н. В.

Сети и телекоммуникации

Трофимов П. А.

Английский язык

Иванова Е. А.

Английский язык

Уткина Н. В.

Английский язык

Вывести список лентяев, имеющих несколько двоек.

SELECT DISTINCT R1.ФИО

FROM R1 a, R1 b

WHERE a.ФИО = b.ФИО AND

a.Дисциплина <> b.Дисциплина AND

a.Оценка <= 2 AND b.Оценка <= 2;

Здесь мы использовали псевдонимы для именования отношения R1 a и b, так как для записи условий поиска нам необходимо работать сразу с двумя экземплярами данного отношения.

Результат:

ФИО

Степанова К. Е.

Из этих примеров хорошо видно, что логика работы оператора выбора

(декартово произведение—селекция—проекция) не совпадает с порядком описания в нем данных (сначала список полей для проекции, потом список таблиц для декартова произведения, потом условие соединения). Дело в том, что SQL изначально разрабатывался для применения конечными пользователями, и его стремились сделать возможно ближе к языку естественному, а не к языку алгоритмическому. По этой причине SQL на первых порах вызывает путаницу и раздражение у начинающих его изучать профессиональных программистов, которые привыкли разговаривать с машиной именно на алгоритмических языках.

Наличие неопределенных (Null) значений повышает гибкость обработки информации, хранящейся в БД. В наших примерах мы можем предположить ситуацию, когда студент пришел на экзамен, но не сдавал его по некоторой причине, в этом случае оценка по некоторой дисциплине для данного студента имеет неопределенное значение. В данной ситуации можно поставить вопрос: «Найти студентов, пришедших на экзамен, но не сдававших его с указанием названия дисциплины». Оператор SELECT будет выглядеть следующим образом:

SELECT ФИО, Дисциплина

FROM R1

WHERE Оценка IS NULL

Результат:

ФИО Дисциплина

Миронов А. В. Теория информации

7.5.Применение агрегатных функций и вложенных запросов

ВSQL добавлены дополнительные функции, которые позволяют вычис-

лять обобщенные групповые значения. Для применения агрегатных функций предполагается предварительная операция группировки. В чем состоит суть операции группировки? При группировке все множество кортежей отношения разбивается на группы, в которых собираются кортежи, имеющие одинаковые значения атрибутов, которые заданы в списке группировки.

Например, сгруппируем отношение R1 по значению столбца Дисциплина. Мы получим 4 группы, для которых можем вычислить некоторые групповые значения, например, количество кортежей в группе, максимальное или минимальное значение столбца Оценка.

Это делается с помощью агрегатных функций. Агрегатные функции вы-

числяют одиночное значение для всей группы таблицы. Список этих функций представлен в табл. 7.7.

Таблица 7.7. Агрегатные функции

Функция

Результат

COUNT

Количество строк или непустых значений полей, которые вы-

брал запрос

SUM

Сумма всех выбранных значений данного поля

AVG

Среднеарифметическое значение всех выбранных значений

данного поля

MIN

Наименьшее из всех выбранных значений данного поля

MAX

Наибольшее из всех выбранных значений данного поля

R1

ФИО

Дисциплина

Оценка

Группа

Петров Ф. И.

Базы данных

5

1

Сидоров К. А.

Базы данных

4

Миронов А. В.

Базы данных

2

Степанова К. Е. Базы данных

2

Крылова Т. С.

Базы данных

5

Владимиров В.

Базы данных

5

А.

Группа

Сидоров К. А.

Теория информации

4

2

Степанова К. Е. Теория информации

2

Крылова Т. С.

Теория информации

5

Миронов А. В.

Теория информации

Null

Группа

Трофимов П.

Сети и телекоммуникации

4

3

А.

Иванова Е. А.

Сети и телекоммуникации

5

Уткина Н. В.

Сети и телекоммуникации

5

Группа

Владимиров В.

Английский язык

4

4

А.

Трофимов П.

Английский язык

5

А.

Иванова Е. А.

Английский язык

3

Петров Ф. И.

Английский язык

5

Агрегатные функции используются подобно именам полей в операторе SELECT, но с одним исключением: они берут имя поля как аргумент. С функциями SUM и AVG могут использоваться только числовые поля. С функциями COUNT, MAX и MIN могут использоваться как числовые, так и символьные поля. При использовании с символьными полями MAX и MIN будут транслировать их в эквивалент ASCII кода и обрабатывать в алфавитном порядке. Некоторые СУБД позволяют использовать вложенные агрегаты, но это является отклонением от стандарта ANSI со всеми вытекающими отсюда последствиями.

Например, можно вычислить количество студентов, сдававших экзамены по каждой дисциплине. Для этого надо выполнить запрос с группировкой по полю «Дисциплина» и вывести в качестве результата название дисциплины и количество строк в группе по данной дисциплине. Применение символа * в качестве аргумента функции COUNT означает подсчет всех строк в группе.

SELECT R1.Дисциплина, COUNT(*) FROM R1

GROUP BY R1.Дисциплина

Результат:

Дисциплина

COUNT(*)

Базы данных

6

Теория информации

4

Сети и телекоммуникации 3

Английский язык

4

Если же мы хотим сосчитать количество сдавших экзамен по какой-либо дисциплине, то нам необходимо исключить неопределенные значения из исходного отношения перед группировкой. В этом случае запрос будет выглядеть следующим образом:

SELECT R1.Дисциплина, COUNT(*)

FROM R1

WHERE R1.Оценка IS NOT NULL

GROUP BY R1.Дисциплина

Получим результат:

Дисциплина COUNT(*)

Базы данных

6

Теория информации

3

Сети и телекоммуникации

3

Английский язык

4

В этом случае строка со студентом

Миронов А. В.

Теория информации

Null

не попадет в набор кортежей перед группировкой, поэтому количество кортежей в группе для дисциплины «Теория информации» будет на 1 меньше.

Можно применять агрегатные функции также и без операции предварительной группировки, в этом случае все отношение рассматривается как одна группа и для этой группы можно вычислить одно значение на группу.

Обратившись снова к базе данных «Сессия» (таблицы R1, R2, R3 ), найдем количество успешно сданных экзаменов:

SELECT COUNT(*) FROM R1

WHERE Оценка > 2;

Это, конечно, отличается от выбора поля, поскольку всегда возвращается одиночное значение, независимо от того, сколько строк находится в таблице. Аргументом агрегатных функций могут быть отдельные столбцы таблиц. Но для того, чтобы вычислить, например, количество различных значений некоторого столбца в группе, необходимо применить ключевое слово DISTINCT совместно с именем столбца. Вычислим количество различных оценок, полученных по каждой дисциплине:

SELECT R1.Дисциплина, COUNT(DISTINCT R1.Оценка)

FROM R1

WHERE R1.Оценка IS NOT NULL

GROUP BY R1.Дисциплина

Результат:

Дисциплина

COUNT(DISTINCT R1.Оценка)

Базы данных

3

Теория информации

3

Сети и телекоммуникации 2

Английский язык

3

В результат можно включить значение поля группировки и несколько агрегатных функций, а в условиях группировки можно использовать несколько полей. При этом группы образуются по набору заданных полей группировки. Операции с агрегатными функциями могут быть применены к объединению множества исходных таблиц. Например, поставим вопрос: определить для каждой группы и каждой дисциплины количество успешно сдавших экзамен и средний балл по дисциплине.

SELECT R1.Оценка, R1.Дисциплина, COUNT(*), AVR(Оценка)

FROM R1,R2

WHERE R1.ФИО = R2.ФИО AND

R1.Оценка IS NOT NULL AND

R1.Оценка > 2

GROUP BY R1.Оценка R1.Дисциплина

Результат:

Дисциплина

COUNT(*)

AVR(Oцeнкa)

Базы данных

6

3.83

Теория информации

3

3.67

Сети и телекоммуникации

3

4.66

Английский язык

4

4.25

Мы не можем использовать агрегатные функции в предложении WHERE, потому что предикаты оцениваются в терминах одиночной строки, а агрегатные функции — в терминах групп строк.

Предложение GROUP BY позволяет определять подмножество значений в особом поле в терминах другого поля и применять функцию агрегата к подмножеству. Это дает возможность объединять поля и агрегатные функции в едином предложении SELECT. Агрегатные функции могут применяться как в выражении вывода результатов строки SELECT, так и в выражении условия обработки сформированных групп HAVING. В этом случае каждая агрегатная функция вычисляется для каждой выделенной группы. Значения, полученные при вычислении агрегатных функций, могут быть использованы для вывода соответствующих результатов или для условия отбора групп.

Построим запрос, который выводит группы, в которых по одной дисциплине на экзаменах получено больше одной двойки:

SELECT R2.Группа FROM R1,R2

WHERE R1.ФИО = R2.ФИО AND

R1.Оценка = 2

GROUP BY R2.Группа, R1.Дисциплина

HAVING count(*)> 1

Вдальнейшем в качестве примера будем работать не с БД «Сессия», а

сБД «Банк», состоящей из одной таблицы F, в которой хранится отношение F, содержащее информацию о счетах в филиалах некоторого банка:

F = (N, ФИО, Филиал, ДатаОткрытия, ДатаЗакрытия, Остаток); Q = (Филиал, Город);

поскольку на этой базе можно ярче проиллюстрировать работу с агрегатными функциями и группировкой.

Например, предположим, что мы хотим найти суммарный остаток на счетах в филиалах. Можно сделать раздельный запрос для каждого из них, выбрав SUM(Остаток) из таблицы для каждого филиала. GROUP BY, однако, позволит поместить их все в одну команду:

SELECT Филиал, SUM(Остаток) FROM F

GROUP BY Филиал;

GROUP BY применяет агрегатные функции независимо для каждой группы, определяемой с помощью значения поля Филиал. Группа состоит из строк с одинаковым значением поля Филиал, и функция SUM применяется отдельно для каждой такой группы, то есть суммарный остаток на счетах подсчитывается отдельно для каждого филиала. Значение поля, к которому применяется GROUP BY, имеет, по определению, только одно значение на группу вывода, как и результат работы агрегатной функции. Поэтому мы можем совместить в одном запросе агрегат и поле. Вы можете также использовать GROUP BY с несколькими полями.

Предположим, что мы хотели бы увидеть только те суммарные значения остатков на счетах, которые превышают $5000. Чтобы увидеть суммарные остатки свыше $5000, необходимо использовать предложение HAVING. Предложение HAVING определяет критерии, используемые, чтобы удалять определенные группы из вывода, точно так же как предложение WHERE делает это для индивидуальных строк.

Правильной командой будет следующая:

SELECT Филиал, SUM(Остаток)

FROM F

GROUP BY Филиал

HAVING SUM(Остаток) > 5000;

Аргументы в предложении HAVING подчиняются тем же самым правилам, что и в предложении SELECT, где используется GROUP BY. Они должны иметь одно значение на группу вывода.

Следующая команда будет запрещена:

SELECT Филиал,SUM(Остаток) FROM F

GROUP BY Филиал

HAVING ДатаОткрытия = 27/12/1999;

Поле ДатаОткрытия не может быть использовано в предложении HAVING, потому что оно может иметь больше чем одно значение на группу

вывода. Чтобы избежать такой ситуации, предложение HAVING должно ссылаться только на агрегаты и поля, выбранные GROUP BY. Имеется правильный способ сделать вышеупомянутый запрос:

SELECT Филиал,SUM(Остаток) FROM F

WHERE ДатаОткрытия = ’27/12/1999′ GROUP BY Филиал;

Смысл данного запроса следующий: найти сумму остатков по каждому филиалу счетов, открытых 27 декабря 1999 года.

Как и говорилось ранее, HAVING может использовать только аргументы, которые имеют одно значение на группу вывода. Практически, ссылки на агрегатные функции — наиболее общие, но и поля, выбранные с помощью GROUP BY, также допустимы. Например, мы хотим увидеть суммарные остатки на счетах филиалов в Санкт-Петербурге, Пскове и Урюпинске:

SELECT Филиал, SUM(Остаток) FROM F,Q

WHERE F.Филиал = Q.Филиал

GROUP BY Филиал

HAVING Город IN («Санкт-Петербург», «Псков», «Урюпинск»);

Поэтому в арифметических выражениях предикатов, входящих в условие выборки раздела HAVING, прямо можно использовать только спецификации столбцов, указанных в качестве столбцов группирования в разделе GROUP BY. Остальные столбцы можно специфицировать только внутри спецификаций агрегатных функций COUNT, SUM, AVG, MIN и MAX, вычисляющих в данном случае некоторое агрегатное значение для всей группы строк. Аналогично обстоит дело с подзапросами, входящими в предикаты условия выборки раздела HAVING: если в подзапросе используется характеристика текущей группы, то она может задаваться только путем ссылки на столбцы группирования.

Результатом выполнения раздела HAVING является сгруппированная таблица, содержащая только те группы строк, для которых результат вычисления условия поиска есть TRUE. В частности, если раздел HAVING присутствует в табличном выражении, не содержащем GROUP BY, то результатом его выполнения будет либо пустая таблица, либо результат выполнения предыдущих разделов табличного выражения, рассматриваемый как одна группа без столбцов группирования.

7.6. Вложенные запросы

Теперь вернемся к БД «Сессия» и рассмотрим на ее примере использование вложенных запросов.

С помощью SQL можно вкладывать запросы внутрь друг друга. Обычно внутренний запрос генерирует значение, которое проверяется в предикате внешнего запроса (в предложении WHERE или HAVING ), определяющего, верно оно или нет. Совместно с подзапросом можно использовать предикат EXISTS, который возвращает истину, если вывод подзапроса не пуст.

В сочетании с другими возможностями оператора выбора, такими как группировка, подзапрос представляет собой мощное средство для достижения нужного-результата. В части FROM оператора SELECT допустимо применять синонимы к именам таблицы, если при формировании запроса нам требуется

более чем один экземпляр некоторого отношения. Синонимы задаются с использованием ключевого слова AS, которое может быть вообще опущено. Поэтому часть FROM может выглядеть следующим образом:

FROM R1 AS A, R1 AS B

или

FROM R1 A, R1 B;

оба выражения эквивалентны и рассматриваются как применения оператора SELECT к двум экземплярам таблицы R1.

Например, покажем, как выглядят на SQL некоторые запросы к БД «Сес-

сия»:

Список тех, кто сдал все положенные экзамены.

SELECT ФИО

FROM R1 as a

WHERE Оценка > 2

GROUP BY ФИО

HAVING COUNT(*) = (SELECT COUNT(*)

FROM R2,R3

WHERE R2.Группа=R3.Группа AND ФИО=a.ФИО)

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

Список тех, кто должен был сдавать экзамен по БД, но пока еще не сдавал.

SELECT ФИО

FROM R2 a, R3

WHERE R2.Группа=R3.Группа AND Дисциплина = «БД» AND NOT EXISTS (SELECT ФИО

FROM R1

WHERE ФИО=a.ФИО AND Дисциплина = «БД»)

Предикат EXISTS (SubQuery) истинен, когда подзапрос SubQuery не пуст, то есть содержит хотя бы один кортеж, в противном случае предикат EXISTS ложен.

Предикат NOT EXISTS обратно — истинен только тогда, когда подзапрос SubQuery пуст.

Обратите внимание, каким образом NOT EXISTS с вложенным запросом позволяет обойтись без операции разности отношений. Например, формулировка запроса со словом «все» может быть выполнена как бы с двойным отрицанием. Рассмотрим пример базы, которая моделирует поставку отдельных деталей отдельными поставщиками, она представлена одним отношением SP «Поставщики—детали» со схемой

SP (Номер_поставщика, номер_детали) P (номер_детали, наименование)

Вот каким образом формулируется ответ на запрос: «Найти поставщиков, которые поставляют все детали».

SELECT DISTINCT НОМЕР_ПОСТАВЩИКА FROM SP SP1 WHERE NOT EX-

ISTS

(SELECT номер_детали FROM P WHERE NOT EXISTS (SELECT * FROM SP SP2

Соседние файлы в предмете Информатика

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Материалы к экзамену

по учебной дисциплине

«Базы данных»

Пояснительная записка

Цель: оценка уровня освоения
учебной дисциплины «Базы данных».

В результате изучения студент
должен:

иметь представление:

·              
о роли и
месте знаний по дисциплине при освоении смежных дисциплин по выбранной
специальности и в сфере профессиональной деятельности;

знать:

·              
состав
информационной модели данных;

·              
типы
логических моделей;

·              
этапы
проектирования базы данных;

·              
общую
теорию проектирования прикладной программы;

уметь:

·              
строить
информационную модель данных для конкретной задачи;

·              
выполнять
нормализацию базы данных;

·              
подбирать
наилучшую систему управления базами данных (СУБД);

·              
проектировать
прикладную программу.

Форма экзамена: устный опрос, выполнение
практического задания.

Структура экзаменационного билета:

Экзаменационный билет содержит два
вопроса: первый вопрос – теоретический вопрос, второй вопрос – выполнение
практического задания.

Разделы учебной дисциплины, выносимые
на экзамен:

·       
Теория
проектирования баз данных.

·       
Организация баз данных.

·       
Организация
интерфейса с пользователем.

·       
Организация
запросов
SQL.

Критерии и нормы оценки:

Оценка за экзамен ставится как
среднее арифметическое двух оценок (одна оценка за теоретический вопрос и одна –
за практическое задание).

Критерии и нормы оценки за устный опрос:

Оценка «отлично» ставится, если студент
показал полный объем, высокий уровень и качество знаний по данному вопросу,
владеет культурой общения и навыками научного изложения материала,
устанавливает связь между теоретическими знаниями и способами практической
деятельности; ясно, точно и логично отвечает на заданные вопросы.

Оценка «хорошо» ставится, если студент логично
и научно изложил материал, но недостаточно полно определяет практическую
значимость теоретических знаний; не высказывает своей точки зрения по данному
вопросу, не смог дать достаточно полного ответа на поставленные вопросы.

Оценка «удовлетворительно» ставится, если студент
при раскрытии вопроса допустил содержательные ошибки, не соотнес теоретические
знания и собственную практическую деятельность, испытывает затруднения при
ответе на большинство вопросов.

Оценка
«неудовлетворительно»
ставится, если студент показал слабые теоретические и
практические знания, допустил грубые ошибки при раскрытии вопроса, не смог
ответить на заданные вопросы.

Критерии и нормы оценки за практическое задание:

Оценка
«отлично»

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

Оценка
«хорошо»

ставится, если выполнены требования к оценке отлично, но допущены 2-3 недочёта,
не более одной ошибки и одного недочёта.

Оценка «удовлетворительно» ставится, если работа выполнена не
полностью, но объем выполненной части таков, что позволяет получить правильные
результаты и выводы; в ходе проведения
работы были допущены ошибки.

Оценка «неудовлетворительно»
ставится,
если
работа выполнена не полностью и объем выполненной работы не позволяет сделать
правильных выводов; работа проводилась неправильно.

Оборудование
и программное обеспечение:

1. Персональный
компьютер.

2. Программное
обеспечение:
MS Office
Access 2007.

3. Готовые базы
данных:

·         
Фирма,
торгующая комплектующими для компьютеров.
accdb;

·         
Фирма.accdb;

·         
Кинотеатр.accdb;

·         
Flats.mdb;

·         
Notes.mdb;

·         
Kosmos.mdb.

Вопросы к экзамену по учебной
дисциплине «Базы данных»

1.    
Базы
данных: понятие, примеры, классификация.

2.    
Модель
данных: понятие, примеры, типы, схемы.

3.    
Связи в
моделях данных: типы, схемы, примеры.

4.    
Сущность:
понятие, типы, источники информации о сущностях.

5.    
Ключи и
реляционный подход к построению модели: понятие ключ, классификация,
назначение, примеры, суть подхода.

6.    
Требования, предъявляемые к проектируемой
базе данных.

7.    
Суть теоретической разработки базы данных.

8.    
Этапы проектирования базы данных.

9.    
Системы управления базами данных: понятие,
назначение, функции, классификация, отличительные особенности.

10. Основные компоненты и типы
данных системы управления базами
данных
.

11.
Алгоритм проектирования базы данных.

12.
Способы и алгоритм создания таблиц базы
данных.

13. Алгоритм
управления записями в базе данных: добавление, редактирование, удаление и
навигация
.

14. Индексы: понятие, типы,
функции, достоинства и недостатки, алгоритм создания простого индекса, выбор
полей для индексирования.

15. Сортировка данных: понятие,
алгоритм сортировки данных.

16. Способы поиска информации в
базе данных: виды, алгоритмы поиска данных.

17.
Взаимосвязи между таблицами: условия для установления
взаимосвязи, способы
объединение таблиц, алгоритм
установления и удаления
взаимосвязей между таблицами.

18.
Создание
программных файлов: операторы цикла и ветвления.

19. Модульность программ. Область
действия переменных.

20. Типы меню: классификация,
алгоритм создания.

21. Работа с окнами: основные
понятия, характеристики, режимы работы, создание и управление рабочим окном.

22. Объект базы данных: понятие,
типы, характеристики, класс и подкласс объекта.

23. Полиморфизм, инкапсуляция и
наследование объекта базы данных.

24. Форма как специальный объект:
понятие, способы и алгоритм создания, редактирование.

25. Элементы управления: понятие,
свойства, классы, события и методы.

26. Запросы к базе данных:
понятие, виды, отличительные особенности, назначение.

27. Запросы к базе данных:
принципы организации запросов, алгоритмы составления и редактирования запросов.

28. Отчёты к базе данных:
понятие, виды, отличительные особенности, назначение.

29. Отчёты к базе данных: способы
формирования отчетов, алгоритмы составления и редактирования отчётов.

30. Хранимые процедуры и триггеры
в базе данных: понятие, назначение.

31. Обеспечение достоверности,
целостности и непротиворечивости данных. Каскадные воздействия.

32.  

Практические задания к
экзамену по учебной дисциплине «Базы данных»

1.    
Разработайте
базу данных «Сотрудники» с использованием следующих типов полей: счётчик, текстовое,
дата/время, денежный. Заполните текстовыми данными.

Для работы потребуются следующие сведения: номер сотрудника,
организация, фамилия, имя, отчество, должность, дата рождения, зарплата.

2.    
Создайте
таблицы базы данных:

1.    
Поставщики
(КодП, Название);

2. Товары (КодТ, Наименование, ед. изм., КодП);

3. Закупки (№п/п, КодТ, Дата, цена, количество).

Установите реляционные отношения между таблицами. Заполните
текстовыми данными.

3.    
Создайте
базу данных для фирмы, торгующей комплектующими для компьютеров в виде 3-х
таблиц:

1.   Таблица1 – «Продажи»,
характеризуется атрибутами: Учетный № (тип счетчик), Дата заказа (Дата/время),
Номер заказа (тип текстовый), Артикул (уникальный номер единицы товара, тип
текстовый).

2.   Таблица2 – «Комплектующие»
включает атрибуты: Артикул (тип текстовый), Наименование (тип текстовый),
Описание комплектующих (тип текстовый).

3.   Таблица3 – «Цены»
характеризуется атрибутами: Артикул (тип текстовый), Цена (тип числовой),
Скидка (тип числовой).

В таблицах
Комплектующие и Цены в качестве ключевого поля используйте атрибут артикул.
Таблица Продажи не должна иметь ключевого поля.

Для создания
таблиц используйте режим конструктора.

Введите 4 записи
в таблицу Комплектующие. Таблицу Цены заполните с помощью мастера подстановки,
используя артикул из таблицы Комплектующие. В таблицу Продажи введите 6
записей. Сохраните базу данных под именем Фирма, торгующая комплектующими для
компьютеров.
accdb.

4.     Для базы данных Фирма,
торгующая комплектующими для компьютеров.
accdb создайте формы для заполнения каждой таблицы с помощью мастера форм и дополните
по 3 записи в формы. Количество записей в таблице Продажи должно превышать
количество записей в таблицах Комплектующие и Цены. В таблице Продажи должны
быть записи с одинаковыми артикулами.

5.     В базе данных Фирма,
торгующая комплектующими для компьютеров.
accdb, дополните предложенные таблицы и установите связи между таблицами. Эта
база данных включает в себя три отношения: Продажи, Комплектующие и Цены. Эти
отношения связать через атрибут Артикул. Для отношения Продажи это связь
«многие-к-одному».

6.     В базе данных Фирма,
торгующая комплектующими для компьютеров.
accdb, дополните предложенные таблицы и создайте запрос на выборку, который
должен содержать данные о наименовании и стоимости комплектующих по заказу 2 (в
режиме Конструктор запросов).

7.     В базе данных Фирма,
торгующая комплектующими для компьютеров.
accdb, дополните предложенные таблицы и составьте отчет по таблицам с помощью
мастера отчетов.

8.     В базе данных Фирма,
торгующая комплектующими для компьютеров.
accdb, дополните таблицы и создайте запрос вычисления суммарной стоимости
комплектующих одного наименования.

9.    
Спроектируйте
БД в MS Access «Фирма».

Создайте таблицы:

1. Сотрудники (код сотрудника, фамилия, имя, отчество,
должность, телефон, адрес, дата рождения, заработная плата).

2. Клиенты (код клиента, название компании, адрес, номер
телефона, факс, адрес электронной почты).

3. Заказы (код заказа, код клиента, код сотрудника, дата
размещения, дата исполнения, сумма, отметка о выполнении).

Установите реляционные отношения между таблицами. Заполните
текстовыми данными.

10.
Создайте
запросы в СУБД MS Access. БД «Фирма»:

1. Запрос 1, в котором можно просмотреть телефоны сотрудников.
Сохраните запрос под именем «Телефоны».

2. Запрос 2, в котором можно просмотреть список сотрудников,
родившихся в апреле месяце. Сохраните запрос под именем «Апрель».

3. Измените запрос «Апрель» так, чтобы при его открытии появилось
диалоговое окно с текстом «Введите дату» и полем для ввода условия отбора.

4. Измените запрос «Телефоны» так, чтобы при его запуске
выводилось диалоговое окно с сообщением «Введите фамилию».

11.
Создайте
запросы в СУБД MS Access. БД «Фирма»:

1.  
Запрос
«Выполненные заказы», содержащий следующие сведения: фамилия и имя сотрудника,
название компании, с которой он работает, отметка о выполнении и сумма заказа.
Данные запроса возьмите из нескольких таблиц.

2.  
Запрос «Сумма
заказа», в котором будут отображаться заказы на сумму более 50 000 руб.

3.  
Измените
запрос «Сумма заказа», чтобы сумма заказа была от 20 000 до 50 000 руб.

4.  
В запросе
«Сумма заказа» посчитайте подоходный налог 13 % для каждой сделки.

12. Создайте в базе данных «Фирма» с
помощью Мастера формы Сотрудники, Клиенты, Заказы. В режиме конструктора
создайте на форме кнопки Выход из приложения, Поиск записи, Удаление записи. Данную
форму сохраните с именем Сотрудники фирмы.

13. Создайте в базе данных «Фирма» кнопочную
форму.

14. Разработайте СУБД «Абитуриент» для
автоматизации работы приемной комиссии колледжа. БД должна содержать три
таблицы: анкеты абитуриентов, данные о дисциплинах и результаты экзаменов.

Таблица «Анкеты абитуриентов»
включает следующие данные об абитуриенте:

·    
регистрационный
номер (ключевое поле);

·    
фамилия,
имя, отчество;

·    
дата
рождения;

·    
наличие
красного диплома или золотой/серебряной медали;

·    
адрес
(город, улица, номер дома, телефон);

Таблица «Данные о дисциплинах: содержит:

·       
шифр
дисциплины (ключевое поле).

·       
название
дисциплины;

Таблица «Результаты экзаменов»
содержат:

·       
регистрационный
номер абитуриента;

·       
шифр
дисциплины;

·       
экзаменационная
оценка.

Установите реляционные отношения между таблицами. Заполните
текстовыми данными.

15.  
По данной
схеме данных создайте и заполните базу данных «Расписание»:

http://ic3.static.km.ru/img/64753%7E002.jpg

16.  
По данной
схеме придумайте базу данных, создайте её и заполните соответствующими данными.

http://help-informatika.ru/pics/z_id20_1.JPG

17.
Создайте базу
данных КИНОТЕАТР. База данных содержит следующие таблицы:

·          
КИНОТЕАТРЫ:

http://idk-teach.ucoz.ru/ForLessons/Access/10201.jpg

·          
ЗАЛЫ:

http://idk-teach.ucoz.ru/ForLessons/Access/10203.jpg

·          
ФИЛЬМЫ:

http://idk-teach.ucoz.ru/ForLessons/Access/10204.jpg

·          
СЕАНСЫ:

http://idk-teach.ucoz.ru/ForLessons/Access/10205.jpg

Заполните таблицу КИНОТЕАТРЫ данными:

http://idk-teach.ucoz.ru/ForLessons/Access/10202.jpg

Создайте схему данных, в которой
между таблицами установлены связи:

http://idk-teach.ucoz.ru/ForLessons/Access/10206.jpg

http://idk-teach.ucoz.ru/ForLessons/Access/10200.jpg

Заполните таблицу
ЗАЛЫ данными:

http://idk-teach.ucoz.ru/ForLessons/Access/10207.jpg

Для ввода данных
в таблицу ФИЛЬМЫ создайте автоформу в столбец АФИША

С помощью формы АФИША
заполните таблицу ФИЛЬМЫ данными, ориентируясь на сопроводительные
карточки.

Для таблицы СЕАНСЫ
создайте одноименную автоформу. Заполните таблицу СЕАНСЫ данными на
свое усмотрение согласно правилам:

·           
в разных
залах одного и того же кинотеатра в одно и то же время идут разные
фильмы; 

·           
для
неработающих залов сеансы не указывать;  

·           
для
заполнения выберите какой-нибудь один день. 

18.
В базе
данных КИНОТЕАТР создайте следующие запросы:

·          
Запрос
01КОМЕДИЯ на выборку всех фильмов комедийного жанра. В результирующую таблицу
включите все поля таблицы ФИЛЬМЫ.

·          
Запрос
01КОМЕДИЯ на выборку всех фильмов комедийного жанра. В результирующую таблицу
включите все поля таблицы ФИЛЬМЫ.

·          
Запрос 03СЕАНС10
на выборку всех фильмов, идущих во всех кинотеатрах на сеансе 10:00. В
результирующую таблицу включите поля Время, Фильм из таблицы СЕАНСЫ и поле
Название из таблицы КИНОТЕАТРЫ.

·          
Запрос
11ГОД, определяющий количество фильмов каждого года выпуска (по таблице
ФИЛЬМЫ).

19. Создайте БД «Видеотека», содержащую следующие
поля: номер диска, название фильма, жанр, продолжительность, страна, дата
приобретения. Определите первичный ключ. Заполните БД следующими данными:

Номер
диска

Название фильма

Жанр фильма

Длительность фильма

Страна

Дата

поступления

1

Пятый элемент

фантастика

125

США

31.01.2002

2

Титаник

мелодрама

185

США

20.02.2004

3

Кавказская пленница

комедия

100

Россия

28.02.2001

4

Драйв

боевик

115

США

31.01.2005

5

По прозвищу Зверь…

боевик

85

Россия

28.02.2004

6

Профессионал

боевик

125

Франция

25.05.2005

7

Игрушка

комедия

85

Франция

22.04.2006

8

Танцор диско

мелодрама

130

Индия

14.04.2004

9

Патруль времени

фантастика

102

США

28.02.2005

10

Только сильнейшие

боевик

96

США

30.09.2006

Создайте:

·               
запрос, с помощью которого на экран
будет выведено название, жанр и длительность для всех фильмов, произведённых в России
и США, отсортировав их по ключу «Страна (возр.)+название (убыв)»;

·               
запрос для вывода на экран всех
фильмов, поступивших в видеотеку в 2004 и 2005 году. Данные отсортируйте по дате
поступления (по возрастанию).

20.
В музее имеется коллекция старинных монет, когда-то имевших хождение
в Беларуси. Масса каждой монеты известна. Определите, сколько золота и серебра
хранится в коллекции, для этого создайте файл базы данных Монета.
accdb и создайте
итоговый запрос.

Название монеты

Страна

Материал

Масса

Денарий

Рим

серебро

29

Дирхем

Восток

серебро

27,2

Дукат

Италия

золото

3,537

Златник

Русь

золото

3,5

Империал

Россия

золото

0,1

Милиарисий

Византия

серебро

24,7

Полтинник

Россия

золото

2,015

Полторак

Речь Посполитая

серебро

11,61

Рубль

Россия

серебро

4,68

Солид

Рим

золото

0,72

Сребренник

Россия

серебро

4,55

Талер

Польша, Чехия

серебро

4,55

Третьяк

Польша

серебро

4,2

Трояк

Польша

серебро

4

Флорен

Флоренция

золото

0,2

21.
 Для файла базы данных Flats.mdb сформируйте условия
запроса, содержащие критерии отбора для вывода данных:

·       
квартир, построенных после 1990 года;

·       
всех однокомнатных квартир;

·       
квартир дешевле 12000;

·       
всех квартир с телефонами и балконами;

·       
квартир, расположенных ниже пятого этажа и с общей площадью не
менее 50 м2;

·       
квартир, находящихся на улице Слободская;

·       
всех квартир, кроме расположенных на первом этаже.

22. Для файла базы
данных
Notes.mdb сформируйте условия
запроса, с помощью которых из базы будут выбраны:

·         
друзья, родившиеся в ноябре;

·         
друзья с именем Андрей;

·         
друзья, увлекающиеся музыкой или поэзией;

·         
друзья, фамилии которых начинаются на букву «К»;

·         
друзья, увлекающиеся спортом и родившиеся в 1987 году.

23. В файле базы
данных
Kosmos.mdb сформируйте запросы,
после выполнения которых будут выведены на экран следующие записи:

·         
о кораблях, совершивших 48 витков вокруг Земли;

·         
о кораблях, летавших в октябре;

·         
о кораблях «Союз», совершивших более 50 витков вокруг
Земли;

·         
о полетах, совершенных Николаевым А. Г.;

·         
о полетах, совершенных Комаровым В. И. и Волковым В. Н.

24. Для файла базы
данных
Flats.mdb создайте кнопочную
форму.

25. Для файла базы
данных
Notes.mdb создайте форму и отчёт.

26.
По данной
схеме данных создайте и заполните базу данных «Деканат»:

http://access.avorut.ru/080413/260313018.png

27.
В файле
базы данных
Kosmos.mdb дополните таблицу данными, создайте
форму и отчёт.

28. Создайте базу данных «Лесничество»,
согласно следующим требованиям:

·         
база данных состоит из четырех таблиц:
Список поса
док, Список сел, Список видов и Список типов; соответствующие поля в таблицах Список
посадок
и Список видов должны быть полями подстановок из других таблиц;

·         
таблица Список посадок состоит из пяти полей: Посадка, Село, Площадь, Вид, Возраст. Поле Посадка является ключом. Таблица Список сел имеет поля: Село и Лесник, таблица Список видов — поля Вид
и Тип. В указанных таблицах поля Село и Вид
являются ключевыми. В таблице Список типов только одно поле Тип.

Создайте схему данных в соответствии с
рисунком.

Заполните таблицы Список сел, Список типов, Список видов, используя
следующие данные:

Список типов:

§  хвойные,

§ 
лиственные.

Список видов:

§  ель (хвойные),

§  сосна (хвойные),

§  береза (лиственные),

§  дуб (лиственные),

§  осина (лиственные),

§  клен (лиственные),

§  липа (лиственные),

§  кедр (хвойные),

§  пихта (хвойные),

§ 
граб (лиственные).

Список сел:

29.
По данной
схеме данных создайте и заполните базу данных «ЖКХ»:

http://refeteka.ru/images/r/a/a/4/aa4be8d0f915f6084de7e50f19e44a56.png

30. Создайте базу данных
«Продукты». Данные для заполнения таблицы «Показатели качества конфет».

Код
записи

Наименование
конфет

Калорийность
(Ккал)

Начинка

Срок
хранения в месяцах

Производитель

1

«Беловежская
пуща»

383

желейная

4

«Коммунарка»

2

«Березка»

526

пралиновая

2

«Коммунарка»

3

«Коровка-неженка»

364

глазированная

6

ОАО
«Ивкон»

4

«Лиса-плутовка»

410

помадная

1

«Коммунарка»

5

«Желейная
клюква»

361

желейная

4

ОАО
«Ивкон»

6

«Красная
шапочка»

529

глазированная

12

«Спартак»

7

«Сладкая
мечта»

369

помадная

4

ОАО
«Ивкон»

8

«Рябиновая
роща»

358

желейная

4

«Коммунарка»

9

«Вишенка»

512

помадная

12

«Спартак»

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

1.       
Наименование
конфет, начинка помадная, запросу присвоить имя Начинка.

2.       
Наименование
конфет, с желейной начинкой и производитель «Коммунарка», запросу присвоить имя
Начинка — Производитель.

3.       
Наименование
конфет, производитель ОАО «Ивкон» и калорийность меньше 500, запросу присвоить
имя Калорийность — Производитель.

31.
Создайте
базу данных «Экзаменационная сессия» содержащую информацию о сдаче студентами
экзаменов. База данных должна содержать следующую информацию:

        
Таблицу
«Студенты», содержащую следующую информацию о студентах: ФИО, Группа, Номер
телефона.

        
Таблицу
«Группы», содержащую следующую информацию о группах: Имя группы, Количество
человек, Староста.

        
Таблицу
«Преподаватели», содержащую информацию о преподавателях: ФИО преподавателя,
Звание, Кафедра, Дисциплина.

        
Таблицу
«Дисциплины», содержащую информацию о дисциплинах: Название, Преподаватель.

        
Таблицу
«Экзамены», содержащую следующую информацию об экзаменах: Дисциплина, Группа,
Дата, Студент, Оценка.

Определить первичные и вторичные (внешние) ключи (если
необходимо добавьте поля). Ввод в поля с небольшим набором возможных значений
организуйте с помощью полей подстановки, а также предусмотрит маску ввода, где
это возможно.

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

Введите не менее 4 записей в таблицы.

Создайте запрос, задав для него смысловое имя, отображающий
информацию о студентах, получивших оценку 5 хотя бы за один экзамен (на экран
вывести следующие поля: ФИО, Группа, Дата, Название дисциплины, Преподаватель,
Оценка).

Для тех кто не в курсе, OCP расшифровывается как Oracle Certified Professional. В компании Oracle есть целая система сертификации по разным направлениям деятельности, где готовятся такие специалисты как: администратор баз данных, Web-администратор, разработчик, консультант и прочие.

Наличие такого сертификата подтверждает наличие профессиональных знаний и дает некоторые преимущества вам как специалисту, а так же компании, в которой вы работаете.

Для начала небольшая справка.

Есть 4 уровня сертификации Oracle:

  1. Oracle Certified Associate (OCA) – начальный уровень. Подтверждает, что специалист обладает базовыми знаниями в данной предметной области и может выполнять основные функции и операции.
  2. Oracle Certified Professional (OCP) основной уровень. Подтверждает способность решать весь спектр задач в выбранной области.
  3. Oracle Certified Master (OCM) высший уровень. Подтверждает, что его обладатель является экспертом в технологиях Oracle, имеет высочайший уровень знаний, опыта и мастерства.
  4. Oracle Certified Expert (OCE) – специализированная сертификация. Подтверждает, что специалист обладает знаниями определенных технологий Oracle, и может решать любые задачи в данном профиле.

В общем давно уже я решил, что надо бы получить OCP по администрированию баз данных. Что для этого нужно, подробно можно узнать на сайте education.oracle.com. А если вкратце, то вот схемка. Надо сдать 2 экзамена и получить сертификат OCA, затем пройти обучение по администрированию баз данных и сдать  еще один экзамен. Не буду пока что мечтать о OCM. Оставим это до лучших времен.

Oracle Database 11g Administrator

Но как обычно это водится — руки все не доходили, то дела, то работа, то еще что-то… В общем собрал я свою волю в кулак и начал готовиться. Для подготовки конкретно к OCP по администрированию БД есть отличная брошюрка — она так и называется «OCA /OCP Oracle Database 11g All-in-One Exam Guide (Exam 1Z0-051, 1Z0-052, and 1Z0-053)«.

Собственно вот:

Подготовка к экзаменам Oracle OCA/OCP DBA 11g

В этой книжке 3 главы, каждая из которых посвящена одному экзмену. Каждая глава разбита на разделы, в конце каждого раздела есть такой пунктик как «2-minute drill», в котором перечислены основные тезисы данного раздела, а так же есть небольшой тест по теме раздела, и подробные ответы на него с указанием какие правильные, какие нет и почему. В общем — все очень удобно. Мне понравилось как в этой книге все написано и организовано. В лучших традициях документации Oracle.

Такс, это было лирическое отступление, вернемся к сдаче экзамена.

Не буду вдаваться во всякие организационные подробности, скажу лишь что сдавал я в УЦ «Форс». Они являются сертифицированным образовательным центром Oracle .

Процедура регистрации.

Поскольку я еще ни разу не сдавал экзамены Oracle, меня зарегистрировали в системе, которая называется  VUE (расшифровывается как Virtual University Enterprise), проверили два документа, подтверждающих личность, повторюсь — именно ДВА, как требует того VUE. Затем сделали фотку, и взяли мою электронную подпись (в смысле подпись на планшете). Затем попросили сложить все личные вещи в сейфик и собственно проводили в комнату, где проходит экзамен. В комнате нет никого, кроме вас, перед вами компьютер, с запущенной программой, пользоваться ничем нельзя, все что дают — это листок бумажки и ручку, и ко всему прочему включена веб-камера.

Сам экзамен.

Процедура сдачи экзамена очень проста: в зависимости от конкретного теста, есть определенное количество вопросов, на которые надо ответить за определенное время. В случае с экзаменом 1Z0-051 «Oracle Database 11g: SQL Fundamentals» начальные данные таковы:

  • Время теста: 2 часа.
  • Количество вопросов: 70.
  • Проходной бал: 60%.

Вопросы бывают следующих типов:

  • Выберите утверждение, которое соответствует. Примером такого типа вопроса может быть вопрос о неявном приведении типов данных.
  • Укажите все, что подходит. Типичным примером вопроса такого типа будет, скажем, вопрос: «Какие утверждения верны для синонимов?» и будет дано 4-5 разных утверждений, из которых верными могут быть как одно, так и все.
  • Какое утверждение не верно. Тут так же может быть вопрос, например про последовательность с несколькими утверждениями о них, среди которых одно будет не верным.
  • Каков будет результат выполнения. Вот это одни из наиболее сложных и длинных вопросов, потому как тут обычно попадаются выражения не на одну строчку, с применением разных вложенных функций. Или же например будет дано 2 sql-запроса, и среди вариантов ответа будут такие как: а) первый запрос выполнится успешно и вернет то-то и то-то, второй запрос с ошибкой, б) оба запроса выполнятся и вернут один и тот же результат, в) оба запроса выполнятся, но вернут разный результат, г) оба запроса не выполнятся.
  • Каким из вариантов можно получить такой результат. Вопросы этой группы обратны вопросам предыдущего типа. То есть тут наоборот даны структуры таблиц с данными, и дано что требуется получить. А в качестве вариантов — sql-запросы.
  • Укажите правильную последовательность действий. Типичным примером этой группы вопросов может служить вопрос о последовательности действий при коммите транзакции: когда запись попадает в лог, когда она попадает на диск, что происходит в redo-логе.

Для всех вопросов есть как минимум 4 варианта ответа, и ооочень много вопросов, на которые ответ включает более одного варианта. Так же очень много практических вопросов, к которым даны как минимум структуры таблиц, а порой и целые схемы со связями, и данные в этих таблицах. На такие вопросы уходит больше всего времени, так как надо во-первых — изучить структуру данных, прочитать условия и что требуется получить, а затем еще внимательно изучить варианты ответа. Но правда такого рода вопросы компенсируются достаточно короткими теоретическими вопросами. Да, еще есть возможность пометить вопрос, и тогда к нему можно будет вернуться. Когда вы дойдете до последнего вопроса, показывается табличка с отмеченными вопросами, а так же вопросами, на которые не было дано ответа (помечать можно как вопросы с отмеченными ответами, так и неотвеченные).

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

Результаты.

По истечении времени показывается табличка, в которой говорится, сколько вы набрали очков, какой проходной балл, ну и собственно самая главная фраза — прошли вы тест или нет. У меня было 69% при проходном балле в 60%. Так же дается краткое напутствие по каким темам у вас были допущены ошибки, и на что стоит обратить внимание. Но, конечно, после того, как увидишь строчку «Test result: PASSED», уже конечно смотришь на этот список сквозь пальцы 🙂

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

Ну а в целом, нет ничего невозможного, и если поставить перед собой цель, и что-то делать для её достижения, то она непременно будет достигнута!

Успехов!

Понравилась статья? Поделить с друзьями:
  • Как сдать экзамен по археологии
  • Как сдать экзамен по арбитражному процессу
  • Как сдать экзамен по античной литературе
  • Как сдать экзамен по английскому языку на сертификат
  • Как сдать экзамен по английскому языку в институте