Практикум по Базам Данных (Методические материалы) (1127013), страница 2
Текст из файла (страница 2)
Они изучают основы построения систем баз данных,получают представление о моделировании данных и методах управления данными с помощьюязыка SQL и других средств современных СУБД. Рассматриваются реляционные базы данных исистемы управления базами данных. Знания и навыки приобретаются в ходе выполнения 10практических заданий.В качестве базового программного средства выбрана СУБД MS SQL Server 2005. Данная СУБДимеет все типичные компоненты, характерные для программных продуктов подобного рода,позволяет освоить основные приемы работы. На занятиях практикума каждый студент поиндивидуальному варианту выполняет разработку модельной корпоративной системы базданных в среде MS SQL Server 2005, используя такие средства как SQL (T-SQL), триггеры, хранимыепроцедуры, ограничения прав доступа и проч.
Производится оптимизация запросов средствамисреды MS SQL Server.4Общие сведенияПрограммное обеспечениеДля выполнения заданий практикума рекомендуется использовать Microsoft SQL Server 2005 споследним пакетом обновлений (SP4) - достаточно издания Express, бесплатно доступного длязагрузки. Microsoft SQL Server 2008 также может быть использован, однако он имеет некоторыеотличия. Для работы необходимо установить Database Engine и Microsoft SQL Server ManagementStudio (или использовать сервер spprac.cs.msu.ru и выданные логин\пароль - в этом случае можноне устанавливать Database Engine).
Настоятельно рекомендуется установить Microsoft SQL ServerBooks Online и использовать в качестве основного справочного материала. Books Online для SQLServer 2005 также доступны в Интернете по адресу: http://msdn.microsoft.com/enus/library/ms130214(v=sql.90).aspx.Порядок сдачи и срокиПрактические задания выполняются по индивидуальным вариантам.
Номер варианта выдаетсяна первом занятии, формулировки заданий индивидуальных вариантов доступны по адресуhttp://bdis.umeta.ru/db/db_course/labs/index.html.При сдаче в установленные сроки каждое задание может быть оценено максимум на 8 баллов(4 балла – оценка за обязательную часть, 4 балла – оценка за ответы на дополнительныевопросы). Приведенная ниже таблица показывает, сколько заданий должно быть сдано студентомдля того, чтобы текущее сдаваемое задание оценивалось, исходя из максимума в 8 баллов.
Еслизаданий сдано меньше (и отсутствует уважительная причина), то максимальная оценка составляет4 балла, а дополнительные вопросы не задаются (исключение - задание №2). Первой неделейсчитается неделя первого занятия (организационного собрания).Количество ужесданных заданий12345678910№ недели567891011121314Время, отведенное на сдачу каждого практического задания – одно занятие. Студенты сдаютзадания в порядке очереди.
Допускается сдача нескольких заданий на одном занятии, однако присдаче каждого последующего задания студент оказывается в хвосте очереди, а в конце занятиявсе оценки за сдаваемые задания выставляются. Схема сдачи заданий в общем случае выглядитследующим образом:5 Студент показывает результаты выполнения задания. При этом все подготовленные запросыдолжны выполняться успешно, в противном случае задание отправляется на доработку, аоценка не выставляется. Преподаватель проверяет правильность написанных запросов.
Баллы за основную частьмогут быть снижены, если основная часть выполнена не полностью, запросы работаютневерно, очень неоптимальны, или если студент не может объяснить принцип их работы. Также могут быть заданы вопросы по тематике практического задания. Баллы за основнуючасть снижаются, если студент дает неверные, неполные или неточные ответы. Если задание сдается вовремя, то после сдачи основной части студенту задаётся несколькодополнительных вопросов и дается время на подготовку (до конца занятия). В концезанятия выставляется оценка. Баллы за дополнительную часть снижаются, если дополнительные задания не выполнены,выполнены не полностью или неверно.
Также баллы могут быть снижены за оченьнеоптимальные решения.Исключением является лишь задание №2 – за него всегда можно получить до 8 баллов исдавать несколько раз. Задания могут сдаваться в произвольном порядке, однако задания №4-10могут сдаваться только после сдачи заданий №2 и №3, так как опираются на базу данных изиндивидуального варианта.Итоговая оценкаПрактикум состоит из 10 практических заданий, максимальная оценка за каждое из которыхсоставляет 8 баллов.
Форма отчетности – зачет с оценкой. По результатам выполненияпрактических заданий в конце семестра выставляется оценка: «Удовлетворительно», если набрано от 20 до 39 баллов включительно. «Хорошо», если набрано от 40 до 59 баллов включительно. «Отлично», если набрано 60 и более баллов.В случае если до желаемой оценки студенту не хватает небольшого количества баллов, товозможно выполнение дополнительных заданий по договоренности с преподавателями.
Еслипосле зачета у студента не набирается баллов на оценку «удовлетворительно», на последующихпопытках сдачи максимум за каждое задание (кроме задания №2) составляет 2 балла. Задание№2 всегда оценивается исходя из максимума в 8 баллов.ТекущиерезультатыбудутпубликоватьсянаWeb-страничкепрактикума:(http://spprac.cs.msu.ru/). Просьба следить за своими оценками и сообщать преподавателям вслучае обнаружения ошибок.6Практическое задание №1. Введение в SQL и MS SQL ServerПостановка задачиПервое практическое задание заключается в знакомстве со средой Microsoft SQL Server 2005Management Studio и написании простейших SQL-запросов с использованием оператора SELECT.Для модельной базы данных «King Corporation» должны быть составлены 4 запроса согласноиндивидуальному варианту.
Скрипт для создания и заполнения модельной базы данных и еёописание, а также содержание индивидуальных вариантов доступны по адресуhttp://bdis.umeta.ru/db. После составления запросов следует убедиться в их правильности припомощи более простых запросов.Темы для проработкиОсновные понятия реляционных и SQL-ориентированных баз данных.Оператор SELECT.Агрегатные и встроенные функции Microsoft SQL Server.Структура учебной базы данных «King Corporation».Работа в среде Microsoft SQL Server Management Studio.ПримерыРассмотрим простой пример: определить минимальную сумму заказа товара «SB ENERGY BAR-6PACK».SELECT MIN(total) AS min_totalFROM item JOIN product ON item.product_id = product.product_idWHERE description = 'SB ENERGY BAR-6 PACK'min_total--------------------------------------2.40В этом запросе используется агрегатная функция MIN, операция внутреннего соединениятаблиц по условию (INNER JOIN или просто JOIN), а также ограничение WHERE.Рассмотрим еще один пример: выбрать продавца, у которого наивысшее отношениекомиссионные / зарплата.
Сначала рассмотрим вариант с вложенными подзапросами:SELECT first_name, last_name, commission/salary AS rateFROM employeeWHERE commission IS NOT NULLAND commission/salary =(SELECT MAX(commission/salary)FROM employeeWHERE commission IS NOT NULL)first_namelast_namerate--------------- --------------- --------------------------------------KENNETHMARTIN1.1200000000Убедиться в том, что этот запрос работает верно, можно при помощи более простого запроса:SELECT first_name, last_name, commission/salary AS rateFROM employee7WHERE commission IS NOT NULLORDER BY commission/salary DESCfirst_name--------------KENNETHKARENRAYMONDLIVIAPAULCYNTHIADANIELGREGORYKEVINMARYlast_name--------------MARTINSHAWPORTERWESTROSSWARDPETERSLANGEALLENTURNERrate--------------------------------------1.12000000000.96000000000.72000000000.66666666660.61538461530.40000000000.24000000000.24000000000.18750000000.0000000000Условие (commission IS NOT NULL) является необходмым, так как столбец commission допускаетнеопределённые значения.Рассмотрим теперь другие варианты написания этого запроса.
Например, можно избавиться отподзапросов, применив сортировку и ограничение количества результатов:SELECT TOP 1 first_name, last_name, commission/salary AS rateFROM employeeWHERE commission IS NOT NULLORDER BY commission/salary DESCfirst_namelast_namerate--------------- --------------- --------------------------------------KENNETHMARTIN1.1200000000(1 row(s) affected)Результат выполнения этого запроса совпадает с результатом выполнения исходного варианта,однако здесь кроется распространенная ошибка: в случае, если в базе данных будет более одногопродавца с максимальным отношением комиссионные / зарплата, то выводиться будет всё равнолишь один из них.
Этого легко избежать, применив конструкцию WITH TIES (подробнее обоператоре SELECT см. Books Online). Правильный вариант запроса без использования подзапросовбудет выглядеть так:SELECT TOP 1 WITH TIES first_name, last_name, commission/salary as rateFROM employeeWHERE commission IS NOT NULLORDER BY commission/salary DESCfirst_namelast_namerate--------------- --------------- --------------------------------------KENNETHMARTIN1.1200000000Следующий пример: выбрать среднегодовую сумму заказов покупателя «REBOUND SPORTS».SELECT s/ny AS averageFROM(SELECT SUM(total) AS sFROM customer JOIN sales_orderON customer.customer_id = sales_order.customer_idWHERE name = 'REBOUND SPORTS') t1,(SELECT COUNT(DISTINCT YEAR(order_date)) AS nyFROM customer JOIN sales_orderON customer.customer_id = sales_order.customer_idWHERE name = 'REBOUND SPORTS') t2average--------------------------------------1810.8666668В первом подзапросе подсчитывается общая сумма заказов для покупателя «REBOUNDSPORTS», а во втором считается количество лет, в которые этот покупатель что-то заказывал.Здесь следует обратить внимание на ключевое слово DISTINCT, позволяющее подсчитатьколичество неповторяющихся значений.В качестве последнего примера рассмотрим простейший запрос, который, тем не менее, частосоставляется неверно: найти среднее значение quantity в таблице item.