лабораторный практикум. Русакова М.С. Лабораторный практикум. Практикум по базам данных самара 2015 министерство образования и науки российской федерации
Скачать 0.72 Mb.
|
Лабораторная работа №13 Индивидуальные задания В индивидуальном задании вам необходимо спроектировать и создать базу (в которой будет не менее 5 таблиц), заполнить ее (требования – не менее 10 записей в каждой таблице, записи должны быть осмысленными). Все функции и процедуры в базе должны быть оформлены в пакет, триггеры должны быть рабочими. Необходимо продемонстрировать работу всех подпрограмм пакета, триггеров. 1. База данных хроники восхождений в альпинистском клубе В базе данных должны записываться даты начала и завершения каждого восхождения, имена и адреса участвовавших в нем альпинистов, название и высота горы, страна и район, где эта гора расположена. Дайте выразительные имена таблицам и полям, в которые могла бы заноситься указанная информация. Написать пакет, состоящий из процедур и функций, которые позволили бы выполнить следующие действия с базой данных: для каждой горы показать список групп, осуществлявших восхождение, в хронологическом порядке; предоставить возможность добавления новой вершины с указанием названия вершины, высоты и страны местоположения; предоставить возможность изменения данных о вершине, если на нее не было восхождения; показать список альпинистов, осуществлявших восхождение в указанный интервал дат; предоставить возможность добавления нового альпиниста в состав указанной группы; показать информацию о количестве восхождений каждого альпиниста на каждую гору; показать список восхождений (групп), которые осуществлялись в указанный пользователем период времени; предоставить возможность добавления новой группы, указав ее название, вершину, время начала восхождения; предоставить информацию о том, сколько альпинистов побывали на каждой горе. Предусмотреть разработку триггеров, обеспечивающих каскадные изменения в связанных таблицах. Создать также триггеры для автоматического добавления значения первичного ключа в таблицы. 2. База данных медицинского кооператива Базу данных использует для работы коллектив врачей. В таблицы должны быть занесены имя, пол, дата рождения и домашний адрес каждого их пациента. Всякий раз, когда врач осматривает больного, явившегося к нему на прием, или сам приходит к нему на дом, он записывает дату и место, где проводится осмотр, симптомы, диагноз и предписания больному, проставляет имя пациента, а также свое имя. Если врач прописывает больному какое-либо лекарство, в таблицу заносится название лекарства, способ его приема, словесное описание предполагаемого действия и возможных побочных эффектов. Создать пакет, состоящий из функций и процедур, позволяющих: по заданной дате определить количество вызовов в этот день; определить количество больных, заболевших данной болезнью и вывести их фамилии и адреса; по заданному лекарству определить его побочный эффект; 90 по диагнозу вывести список назначенных лекарств; по заданной дате и фамилии врача вывести все адреса, которые он посетил в этот день; предоставить возможность добавления нового лекарства с описанием его свойств в БД. Предусмотреть разработку триггеров, обеспечивающих каскадные изменения в связанных таблицах. Вставку числовых значений первичного ключа сделать при помощи соответствующих триггеров. 3. База данных Городской Думы В базе хранятся имена, адреса, домашние и служебные телефоны всех членов Думы. В Думе работает порядка сорока комиссий, все участники которых являются членами Думы. Каждая комиссия имеет свой профиль, например, вопросы образования, проблемы, связанные с жильем и так далее. Данные по каждой из комиссий включают: ее нынешний состав и председателя, прежних председателей и членов этой комиссии, участвовавших в ее работе за прошедшие 10 лет, даты включения и выхода из состава комиссии, избрания ее председателей. Члены Думы могут заседать в нескольких комиссиях. В базу заносятся время и место проведения каждого заседания комиссии с указанием депутатов и служащих Думы, которые участвуют в его организации. Создать пакет с процедурами и функциями, которые позволяют выполнять следующие действия: показать список комиссий, для каждой ее состав и ФИО председателя; предоставить возможность добавления нового члена комиссии; показать список членов муниципалитета, для каждого из них список комиссий, в которых он участвовал и/или был председателем; предоставить возможность добавления новой комиссии с указанием ФИО председателя; для указанного интервала дат и конкретной комиссии выдать список ее членов с указанием количества пропущенных заседаний; предоставить возможность добавления нового заседания, с указанием присутствующих; по каждой комиссии показать количество проведенных заседаний в указанный период времени. Предусмотреть разработку триггеров, обеспечивающих каскадные изменения в связанных таблицах. Вставку числовых значений первичного ключа произвести при помощи соответствующих триггеров. 4. База данных рыболовной фирмы Фирме принадлежит небольшая флотилия рыболовных катеров. Каждый катер имеет «паспорт», куда занесены его название, тип, водоизмещение и дата постройки. Фирма регистрирует каждый выход на лов, записывая название катера, имена и адреса членов команды с указанием их должностей (капитан, боцман и т. д.), даты выхода и возвращения, а также вес пойманной рыбы отдельно по сортам (например, трески). За время одного рейса катер может посетить несколько банок. Фиксируется дата прихода на каждую банку и дата отплытия, качество выловленной рыбы (отличное, хорошее, плохое). На борту улов не взвешивается. Написать запросы, осуществляющие следующие операции: для каждого катера вывести даты выхода в море с указанием улова; предоставить возможность добавления выхода катера в море с указанием команды; для указанного интервала дат вывести для каждого сорта рыбы список катеров с наибольшим уловом; 91 для указанного интервала дат вывести список банок с указанием среднего улова за этот период; предоставить возможность добавления новой банки с указанием данных о ней; для заданной банки вывести список катеров, которые получили улов выше среднего; вывести список сортов рыбы и для каждого сорта список рейсов с указанием даты выхода и возвращения, количества улова; для выбранного пользователем рейса и банки добавить данные о сорте и количестве пойманной рыбы; предоставить возможность пользователю изменять характеристики выбранного катера; предоставить возможность добавления нового катера; для указанного сорта рыбы и банки вывести список рейсов с указанием количества пойманной рыбы. Предусмотреть разработку триггеров, обеспечивающих каскадные изменения в связанных таблицах. Вставку числовых значений первичного ключа реализовать при помощи соответствующих триггеров. 5. База данных фирмы, проводящей аукционы Фирма занимается продажей с аукциона антикварных изделий и произведений искусства. Владельцы вещей, выставляемых на проводимых фирмой аукционах, юридически являются продавцами. Лица, приобретающие эти вещи, именуются покупателями. Получив от продавцов партию предметов, фирма решает, на котором из аукционов выгоднее представить конкретный предмет. Перед проведением очередного аукциона каждой из выставляемых на нем вещей присваивается отдельный номер лота, играющий ту же роль, что и введенный ранее шифр товара. Две вещи, продаваемые на различных аукционах, могут иметь одинаковые номера лотов. В книгах фирмы делается запись о каждом аукционе. Там отмечаются дата, место и время его проведения, а также специфика (например, выставляются картины, написанные маслом и не ранее 1900 г.). Заносятся также сведения о каждом продаваемом предмете: аукцион, на который он заявлен, номер лота, продавец, отправная цена и краткое словесное описание. Продавцу разрешается выставлять любое количество вещей, а покупатель имеет право приобретать любое количество вещей. Одно и то же лицо или фирма может выступать и как продавец, и как покупатель. После аукциона служащие фирмы, проводящей аукционы, записывают фактическую цену, уплаченную за проданный предмет, и фиксируют данные покупателя. Создать пакет, состоящий из процедур и функций, позволяющий осуществить следующие операции: для указанного интервала дат вывести список аукционов с указанием наименования, даты и места проведения; добавить на указанный пользователем аукцион на продажу предмет искусства с указанием начальной цены; вывести список аукционов с указанием суммарного дохода от продажи, отсортированных по доходу; для указанного интервала дат вывести список предметов, которые были проданы на аукционах в этот период времени; предоставить возможность добавления факта продажи на указанном аукционе заданного предмета; 92 для указанного интервала дат вывести список продавцов с указанием общей суммы, полученной от продажи предметов в этот промежуток времени; вывести список покупателей, которые сделали приобретения в указанный интервал дат; предоставить возможность добавления записи о проводимом аукционе (место, время); для указанного места, вывести список аукционов; для указанного интервала дат вывести список продавцов, которые принимали участие в аукционах, проводимых в этот период времени; предоставить возможность добавления и изменения информации о продавцах и покупателях; вывести список покупателей с указанием количества приобретенных предметов в указанный период времени. Предусмотреть разработку триггеров, обеспечивающих каскадные изменения в связанных таблицах. Вставку числовых значений первичного ключа осуществить при помощи соответствующих триггеров. 6. База данных библиотеки Разработать информационную систему обслуживания библиотеки, которая содержит следующую информацию: названия книг, ФИО авторов, наименования издательств, год издания, количество страниц, количество иллюстраций, стоимость, название филиала библиотеки или книгохранилища, в которых находится книга, количество имеющихся в библиотеке экземпляров конкретной книги, количество студентов, которым выдавалась конкретная книга, названия факультетов, в учебном процессе которых используется указанная книга. Необходимо составить пакет из процедур и функций, который позволяет: для указанного филиала посчитать количество экземпляров указанной книги, находящихся в нем; для указанной книги посчитать количество факультетов, на которых она используется в данном филиале, и вывести названия этих факультетов; предоставить возможность добавления и изменения информации о книгах в библиотеке; предоставить возможность добавления и изменения информации о филиалах; предусмотреть разработку триггеров/процедур, срабатывающих на пользовательские исключительные ситуации. Предусмотреть разработку триггеров, обеспечивающих каскадные изменения в связанных таблицах. Вставку числовых значений первичного ключа реализовать при помощи соответствующих триггеров. 7. База данных по учету успеваемости студентов База данных должна содержать данные о контингенте студентов (фамилия, имя, отчество, год поступления, форма обучения (дневная/вечерняя/заочная), номер или название группы); об учебном плане (название специальности, дисциплина, семестр, количество отводимых на дисциплину часов, форма отчетности (экзамен/зачет)); о журнале успеваемости студентов (год/семестр, студент, дисциплина, оценка). Разработать пакет, состоящий из процедур и функций, позволяющий: для указанной формы обучения посчитать количество студентов этой формы обучения; для указанной дисциплины получить количество часов и формы отчетности по этой дисциплине; 93 предоставить возможность добавления и изменения информации о студентах, об учебных планах, о журнале успеваемости; при этом предусмотреть курсоры/триггеры, срабатывающие на некоторые пользовательские исключительные ситуации; предоставить возможность добавления и изменения информации о журнале успеваемости; для конкретного студента получить список всех оценок; для указанной группы и указанной дисциплины получить список всех неуспевающих и их количество. Предусмотреть разработку триггеров, обеспечивающих каскадные изменения в связанных таблицах. Вставку числовых значений первичного ключа осуществить при помощи соответствующих триггеров. 8. База данных для учета аудиторного фонда университета База данных должна содержать следующую информацию об аудиторном фонде университета. Наименование корпуса, в котором расположено помещение, номер комнаты, расположение комнаты в корпусе, ширина и длина комнаты в метрах, назначение и вид помещения, подразделение университета, за которым закреплено помещение. В базе данных также должна быть информация о высоте потолков в помещениях в зависимости от места расположения помещений в корпусе. Следует также учитывать, что структура подразделений университета имеет иерархический вид, когда одни подразделения входят в состав других (факультет, кафедра, лаборатория). Учесть такие характеристики комнаты, как количество мест, на которые она рассчитана, наличие доски, наличие розетки, наличие экрана и затемнения. Для машзалов учесть количество компьютеров и число стульев в классе, а также наличие доски. Помимо SQL-запросов для создания таблиц базы данных, разработать пакет, состоящий из процедур и функций, позволяющий: рассчитать данные о площадях и объемах каждого помещения; для указанного корпуса получить количество факультетов, их названия и структуру; предоставить возможность добавления и изменения информации о корпусах в университете, при этом предусмотреть курсоры/триггеры, срабатывающие на некоторые пользовательские исключительные ситуации; предоставить возможность добавления и изменения информации о комнатах в корпусах университета, при этом предусмотреть курсоры/триггеры, срабатывающие на некоторые пользовательские исключительные ситуации; рассчитать на каждом факультете количество аудиторий, пригодных для проведения лекций, практик у доски, занятий с презентационным оборудованием и занятий с аудиооборудованием, лабораторий; вывести номера аудиторий, сгруппировав их по вышеперечисленным признакам и разбив их по корпусам. Предусмотреть разработку триггеров, обеспечивающих каскадные изменения в связанных таблицах. Вставку числовых значений первичного ключа реализовать при помощи соответствующих триггеров. 9. База данных для регистрации происшествий Необходимо создать базу данных для регистрации происшествий. База данных должна содержать данные для регистрации сообщений о происшествиях (регистрационный номер сообщения, дата 94 регистрации, краткая фабула (тип происшествия); информацию о принятом по происшествию решении (отказано в возбуждении дел, удовлетворено ходатайство о возбуждении уголовного дела с указанием регистрационного номера заведенного дела, отправлено по территориальному признаку); о районе (месте) происшествия; информацию о лицах, виновных или подозреваемых в совершении происшествия (регистрационный номер лица, фамилия, имя, отчество, адрес, количество судимостей...), отношение конкретных лиц к конкретным происшествиям (виновник, потерпевший, подозреваемый, свидетель...). Помимо SQL-запросов для создания таблиц базы данных, разработать пакет, состоящий из процедур и функций, позволяющий: рассчитать данные о количестве происшествий в указанный промежуток времени; для указанного района вывести список всех происшествий, вывести список дат происшествий по конкретному району и виду происшествия; определить самый «криминальный» и самый «спокойный» районы; для указанного лица получить количество происшествий, в которых он зарегистрирован; предоставить возможность добавления и изменения информации о происшествиях, при этом предусмотреть курсоры/триггеры, срабатывающие на некоторые пользовательские исключительные ситуации; предоставить возможность добавления и изменения информации о лицах, участвующих в происшествиях, при этом предусмотреть курсоры/триггеры, срабатывающие на некоторые пользовательские исключительные ситуации. Предусмотреть разработку триггеров, обеспечивающих каскадные изменения в связанных таблицах. Вставку числовых значений первичного ключа осуществить при помощи соответствующих триггеров. 10. База данных для обслуживания работы конференции База данных должна содержать справочник персоналий участников конференции (фамилия, имя, отчество, ученая степень, ученое звание, научное направление, место работы, кафедра (отдел), должность, страна, город, почтовый индекс, адрес, рабочий телефон, домашний телефон, e-mail) и информацию, связанную с участием в конференции (докладчик или участник, дата рассылки 1-го приглашения, дата поступления заявки, тема доклада, отметка о поступлении тезисов, дата рассылки 2-го приглашения, дата поступления оргвзноса, размер поступившего оргвзноса, дата приезда, дата отъезда, потребность в гостинице). Помимо SQL-запросов для создания таблиц базы данных, разработать пакет, состоящий из процедур и функций, позволяющий: для указанной даты 1-й рассылки вывести список приглашенных и посчитать их количество; предоставить возможность добавления приглашенных на конференцию с указанием оргвзноса и даты его уплаты; вывести список приглашенных с указанием даты об уплате оргвзноса; для указанного интервала дат вывести список участников, уплативших оргвзнос в этом диапазоне; для указанного города вывести список участников с названиями докладов, поступивших из этого города; для указанного города вывести названия всех вузов, из которых приедут участники; провести статистический анализ – сколько студентов, аспирантов, профессоров приезжают на конференцию (сгруппировать по каждому городу) в процентном соотношении; 95 вывести сумму полученного оргвзноса и сумму ожидаемого оргвзноса; для указанного города вывести список нуждающихся в гостинице. Предусмотреть разработку триггеров, обеспечивающих каскадные изменения в связанных таблицах. Вставку числовых значений первичного ключа реализовать при помощи соответствующих триггеров. |