Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
database.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.12 Mб
Скачать

Раздел 4. Проектирование реляционных баз данных.

Практическая работа по теме: Метод нормальных форм.

Дано исходное отношение R, которое находится в 1 НФ. Проанализируйте значения атрибутов и выполните процедуру проектирования базы данных, преобразовав исходное отношение R.

ФИО

Зарплата

Фирма

Руководитель

Отдел

Товар

Поставщик

Стоимость

Киселев В.М.

18000

Надежда

Белкин Б.Н.

Хозтовары

Посуда

Cremco

1000

Гурский С.И.

16000

Надежда

Белкин Б.Н.

Канцтовары

Карандаш

Pencraft

3

Андреева Е.А.

20000

Надежда

Белкин Б.Н.

Косметика

Духи

Beautex

1400

Левин П.Г.

22000

Мечта

Томилов А.Н.

Игрушки

Машина

Signal

250

Носов А.П.

16000

Мечта

Томилов А.Н.

Игрушки

Самолет

Signal

220

Гофман В.Э.

26000

Мечта

Томилов А.Н.

Игрушки

Кукла

Signal

370

Сорокина Т.В.

17000

Дива

Александрова Е.Н.

Косметика

Помада

Beautex

250

Белкин Б.Н.

18000

Дива

Александрова Е.Н.

Косметика

Духи

Beautex

1200

Семин С.В.

22000

Феникс

Комаров А.П.

Хозтовары

Скатерть

Cremco

200

Григорьев А.Н.

19000

Феникс

Комаров А.П.

Игрушки

Конструктор

Signal

200

Практическая работа по теме: Проектирование базы данных.

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

Раздел 5. Определение структур данных и обслуживание баз данных.

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

  1. На основе Бланка экземпляра создайте таблицу Lichn_sved:

Имя столбца

kod

fam

name

data_rd

Sem_polozh

Phone

Тип ключа

 

 

 

 

 

 

NN/UN

NN

NN

NN

NN

NN

NN

Таблица FK

 

 

 

 

 

 

Столбец FK

 

 

 

FK

FK

 

Тип данных и длина

integer

varchar2(10)

varchar2(10)

date

varchar2(8)

char(8)

Пример данных

100 101 102 103 104 105 106

Иволгин Николаев Сидоров Егоров Васюков Смолина Рейкина

Иван Петр Николай Василий Василий Валентина Дарья

02-06-72 10-10-82 09-09-75 10-01-77 26-11-76 25-10-85 30-12-79

Женат Женат Холост Женат Женат Замужем Замужем

12-12-14 12-44-33 24-66-77 55-23-01 56-33-02 70-25-08 05-45-11

2. На основе Бланка экземпляра создайте таблицу Podrazhdelen:

Имя столбца

kod

fam

name

otdel

Data_prik

dolzhn

oklad

Тип ключа

 

 

 

 

 

 

 

NN/UN

NN

NN

NN

NN

NN

 

 

Таблица FK

 

 

 

 

 

 

 

Столбец FK

 

 

 

 

 

 

 

Тип данных и длина

integer

varchar2(10)

varchar2(10)

varchar2(6)

date

varchar2(15)

varchar2(10)

Пример данных

100 101 102 103 104 105 106

Иволгин Николаев Сиоров Егоров Васюков Смолина Рейкина

Иван Петр Николай Василий Василий Валентина Дарья

20 10 20 10 30 40 20

10-02-2000 10-02-2000 10-02-2000 15-04-2003 20-10-2001 10-03-2003 10-03-2003

Менеджер Администратор Менеджер Администратор Бухгалтер Секретарь Менеджер

5000 5500 5000 3000 4500 2700 5000

3. На основе Бланка экземпляра создайте таблицу Bebi:

Имя столбца

kod

name

Data_rozhden

Тип ключа

 

 

 

NN/UN

 

 

 

Таблица FK

 

 

 

Столбец FK

 

 

 

Тип данных и длина

integer

varchar2(10)

date

Пример данных

104 104 105 103 103 101 106

Вика Ваня Петя Оля Настя Витя Наташа

12-12-95 05-02-97 10-03-96 01-04-99 06-09-01 16-11-02 15-02-03

Практическая работа по теме: Операции с ограничениями.

  1. Заполните Бланки Экземпляров недостающей информацией.

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

  3. В созданные таблицы добавьте пропущенные ограничения.

На основе Бланка экземпляра создайте таблицу Dolzhn:

Имя столбца

kod

fam

name

dolzhn

stazh

kaf

Тип ключа

 

 

 

 

 

 

NN/UN

 

 

 

 

 

 

Таблица FK

 

 

 

 

 

 

Столбец FK

 

 

 

 

 

 

Тип данных и длина

integer

varchar2(10)

varchar2(10)

varchar2(10)

number(2)

number(2)

Пример данных

10 20 30 40

Иванов Петров Сидоров Егоров

Иван Петр Николай Василий

Преп Ст.Преп Преп преп

5 7 10 5

25 25 25 24

На основе Бланка экземпляра создайте таблицу Prep:

Имя столбца

kod

fam

name

predmet

grup

vid_zan

Тип ключа

 

 

 

 

 

 

NN/UN

 

 

 

 

 

 

Таблица FK

 

 

 

 

 

 

Столбец FK

 

 

 

 

 

 

Тип данных и длина

integer

varchar2(10)

varchar2(10)

varchar2(10)

number(3)

varchar2(8)

Пример данных

10 10 20 20 30 30 40

Иванов Иванов Петров Петров Сидоров Сидоров Егоров

Иван Иван Петр Петр Николай Николай Василий

СУБД ПЛ/1 СУБД Паскаль ПЛ/1 Паскаль ПЭВМ

256 123 256 256 123 256 244

Практика Практика Лекция Практика Лекция Лекция Лекция

На основе Бланка экземпляра создайте таблицу Oklad:

Имя столбца

dolzhn

oklad

Тип ключа

 

 

NN/UN

 

 

Таблица FK

 

 

Столбец FK

 

 

Тип данных и длина

varchar2(10)

number(3)

Пример данных

Преп Ст.Преп

500 800

На основе Бланка экземпляра создайте таблицу Stazh:

Имя столбца

Stazh

Dopl_stazh

Тип ключа

 

 

NN/UN

 

 

Таблица FK

 

 

Столбец FK

 

 

Тип данных и длина

number(2)

number(3)

Пример данных

5 7 10

100 100 150

Практическая работа по теме: «Создание и редактирование таблицы в среде SQL. Манипулирование данными»

  1. Запустить среду SQL plus

  2. Создать таблицу Acont с атрибутами:

Num Last_name First_name Patronymic_name Middle_name Phone_number Country City Zarplat

  1. Тип данных и размер поля определите самостоятельно.

  2. Просмотрите структуру таблицы Acont.

  3. Добавьте в созданную таблицу пять записей произвольными значениями.

  4. Просмотрите таблицу с данными.

  5. Добавьте в таблицу Acont новый столбец Adress.

  6. Обновите строки таблицы, заполнив значения нового атрибута Adress.

  7. Просмотрите обновленную таблицу Acont.

  8. Добавьте в таблицу новый столбец Date_ birth.

  9. Обновите существующие записи таблицы произвольными значениями даты.

  10. Обновите таблицу, указав значение атрибута Zarplat, повысив зарплату всем до 10000 рублей.

  11. Просмотрите таблицу Acont.

  12. Добавьте в таблицу еще пять строк, заполнив все атрибуты собственными значениями.

Практическая работа по теме: Простой запрос.

  1. Выведите содержимое всех столбцов и строк таблиц Lichn_sved, Podrazhdelen и Bebi.

  2. Выполните с таблицей Podrazhdelen следующие действия:

    1. Выведите фамилию и имя всех служащих.

    2. Получите список всех сотрудников с новым столбцом «Зарплата», в котором рассчитана заработная плата по формуле: oklad*1.2+oklad.

    3. Вычислите налог 13% с заработной платы в столбце Налог.

    4. Выведите сведения по столбцам Data_prik, Dolzhn, Oklad; должность должна быть в строке первой.

    5. Предотвратите выборку дубликатов строк из результата предыдущего запроса.

    6. Отсортируйте данные по столбцу Oklad в порядке возрастания.

    7. Отсортируйте данные таким образом, чтобы наибольший оклад в списке был первым.

    8. Выведите фамилию, дату приказа, должность и оклад для всех служащих. Результат отсортируйте по должности, а внутри должности – в порядке убывания фамилий сотрудников.

    9. Выведите фамилию, дату приказа, должность и оклад для менеджеров.

    10. Выведите фамилию, дату приказа, должность и оклад для менеджеров в порядке убывания по фамилии сотрудника.

  3. Выполните с таблицей Lichn_sved следующие действия:

    1. Получите список всех женатых сотрудников;

    2. Выведите имена, фамилии служащих, родившихся в 70-х годах;

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

    4. Получите сведения о служащих с кодами 100 и 102;

    5. Выведите фамилии, начинающиеся на букву Е.

Практическая работа по теме: Сложные запросы.

1. Из таблицы Lichn_sved выведите следующую информацию:

  1. Выберите всех женатых сотрудников, которые родились в 80-х годах.

  2. Выберите тех сотрудников, у которых телефон начинается на цифру 1 или цифру 2.

  3. Получите список всех холостяков, которые родились в сентябре.

  4. Выведите фамилии всех сотрудников заглавными буквами.

2. Из таблицы Podrazhdelen выведите следующую информацию:

  1. Выведите информацию о менеджерах и администраторах, у которых оклад равен 5000 рублей и более.

  2. Выведите информацию об инспекторах с окладом более 4300 рублей и администраторах с окладом 5000 рублей.

  3. Получите список всех фамилий сотрудников, три последних символа которых равны «ров», и длины этих фамилий.

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

  1. Из таблицы Bebi выведите следующую информацию:

  1. Выведите возраст (в месяцах) каждого ребенка в отдельном столбце «Возраст».

  2. Выведите даты рождения детей в новом столбце, где месяц отображается словом.

  3. Выведите список детей, которые родились с 1995 по 1999 годы.

  4. Получите список детей, которые родились весной.

Практическая работа по теме: Группировка строк в запросе.

    1. Из таблицы Podrazhdelen выведите следующую информацию:

      1. Выведите код и количество сотрудников, имеющих код 103.

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

      3. Выведите количество сотрудников по должностям внутри отделов.

      4. Получите номера отделов и среднего оклада для отделов, где средний оклад превышает 4500 рублей.

      5. Выведите должности и общий оклад для всех должностей с окладом более 3000 в месяц, кроме Инспектора ОК. Выходные строки отсортируйте по окладу, начиная с наибольшего.

      6. Составьте запрос для вывода минимального и максимального оклада по всем должностям в алфавитном порядке.

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

    2. Из таблицы Bebi выведите следующую информацию:

  1. Выведите количество детей у Петрова Петра в отдельном столбце «Дети».

  2. Подсчитайте количество детей у каждого сотрудника.

  3. Получите список старших детей у всех сотрудников.

Практическая работа по теме: Подзапросы.

Из таблицы Podrazhdelen выбрать следующие данные:

    1. Фамилии и должность сотрудников, имеющих такую же должность, как у Сидорова.

    2. Фамилии, имена сотрудников, работающих в том же отделе, где работает сотрудник по фамилии Шторкина.

    3. Фамилии, должности и окладов всех сотрудников с окладом ниже средней.

    4. Фамилии, должности и зарплаты всех сотрудников с зарплатой выше средней.

    5. Список служащих, работающих в отделе 20 или принятых 10 февраля 2002 года (используя многострочный запрос).

    6. Все отделы, где средний оклад выше, чем в отделе 15.

    7. Должность сотрудника, чей средний оклад больше среднего по всем сотрудникам.

    8. Код, имя и фамилию каждого сотрудника, у которого оклад выше среднего и работает в одном отделе с любым сотрудником, фамилия которого содержит букву «р».

Практическая работа по теме «Выборка данных из нескольких таблиц »

  1. Из таблиц Lichn_sved и Bebi выведите следующую информацию:

  1. Имена детей всех сотрудников.

  2. Количество детей у каждого сотрудника.

  1. Из таблиц Lichn_sved и Podrazhdelen выведите следующую информацию:

    1. Выведите информацию о менеджерах и администраторах, родившихся в 70-х годах.

    2. Выведите дату рождения инспекторов с окладом более 4300 рублей и администраторов с окладом 5000 рублей.

    3. Выведите оклад всех женатых сотрудников.

Практическая работа по теме: Создание, изменение и удаление последовательностей.

Задание 1.

  1. Создайте таблицу Gruppa со следующими атрибутами: id, fam, name, data_rd, adress.

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

Интервал между последовательными номерами равен 5; начальное значение – 1; максимальное значение – 20; циклическая организация не используется.

  1. Заполните таблицу 4 записями.

  2. Просмотрите содержимое таблицы.

  3. Добавьте еще одну запись.

  4. Что произошло? Почему?

  5. Измените последовательность: шаг приращения равен 10; минимальное значение – 30; максимальное значение – 50; режим циклической генерации используется.

  6. Добавьте 4 записи в таблицу.

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

  8. Выведите текущее число в последовательности.

  9. Удалите последовательность.

  10. Создайте новую последовательность, самостоятельно выбрав параметры.

  11. Добавьте в таблицу еще 3 записи.

Задание 2:

Какие из следующих команд не приведет к созданию последовательности? Объясните почему.

  1. CREATE SEQUENCE new_seq1 NOMAXVALUE;

  2. CREATE SEQUENCE 2new_seq START WITH 2;

  3. CREATE SEQUENCE new3_seq MIN 1 MAX 100 CYCLE;

  4. CREATE SEQUENCE new_4seq1 INCREMENT BY -1;

Дополнительное задание:

  1. Выведите список всех последовательностей:

Select sequence_name

from user_sequences;

  1. Проверьте параметры последовательности. Это можно сделать в таблице User_SEQUENCES словаря данных.

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

  1. На основе таблицы Podrazhdelen создайте представление Р_1, включающее код служащего, фамилию и номер отдела. Присвойте столбцу с фамилией заголовок «Фамилия».

  2. Выведите на экран содержимое представления Р_1.

  3. В представлении Р_1 для служащего с фамилией "Сидоров" смените номер отдела на 22.

  4. Проверьте, что "Сидоров" теперь приписан к отделу 22.

  5. На основе таблиц Podrazhdelen и Lichn_Sved создайте представление P_LS для вывода данных обо всех служащих отдела 20. Выходные данные должны включать код служащего, фамилию, имя, дату рождения, должность и номер отдела.

  6. Выведете структуру представления P_LS.

  7. Выведете содержимое представления P_LS.

  8. Выведите на экран название каждого отдела и количество служащих в нем.

  9. Добавьте в представление Р_1 данные еще об одном сотруднике: код - генерируемый из последовательности, фамилия - Ветров, Имя - Леонид, должность - Бухгалтер.

  10. Выведете содержимое представления Р_1. Опишите результат.

  11. Выведете содержимое таблицы Podrazhdelen. Опишите результат.

  12. На основе таблицы Podrazhdelen создайте представление Р_2, включающее код служащего, фамилию, должность и оклад. Добавьте предложение WITH READ ONLY.

  13. Добавьте в представление Р_2 данные еще об одном сотруднике: код - генерируемый из последовательности, фамилия - Селезнев, Имя - Андрей, должность - Менеджер. Опишите результат.

  14. Измените представление Р_1 так, чтобы оно содержало данные только о служащих отдела 22. Добавьте ограничение, запрещающее изменять номер отдела.

  15. Выведите содержимое представления Р_1.

  16. В представлении Р_1 верните служащему с фамилией «Сидоров» номер отдела 20. Объясните результат.

Практическая работа по теме: Индексы.

  1. Создайте для таблицы Podrazhdelen индексы (имя индекса и поле определите самостоятельно):

    1. Уникальный

    2. Неуникальный по столбцу внешнего ключа

  2. Создайте для таблицы Lichn_sved уникальный индекс (имя индекса и поле определите самостоятельно)

  3. Выведите из словаря данных индексы и информацию об уникальности для таблиц Podrazhdelen и Lichn_sved.

  4. Удалите ограничение PRIMARY KEY из главной таблицы вашей базы данных.

  5. Еще раз выведите из словаря данных индексы и информацию об уникальности для таблиц Podrazhdelen и Lichn_sved. Что изменилось и почему?

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

  7. Удалите неуникальный индекс по столбцу внешнего ключа из таблицы Podrazhdelen.

Практическая работа по теме: «Создание отчетов».

  1. Напишите команду, позволяющую сохранить результаты в файл.

  2. Создайте Отчет, содержащий сведения о преподавателях из таблицы Prep. Заголовки выведите русскими символами; атрибут vid_zan замените на «Вид занятия» и выведите на двух строках; символ подчеркивания заголовков смените с тире (-) на (*).

  3. Выведите этот же Отчет, уменьшив ширину столбцов Предмет и Группа.

  4. Создайте Отчет о доплатах преподавателям за стаж (таблица Stazh). Используя модель форматов, добавьте знак доллара перед значениями окладов. Каждую запись отделите от другой строкой из тире

  5. Выведите Отчет, содержащий следующие сведения о преподавателях: фамилия, имя и кафедра, на которой он работает. Добавьте верхний заголовок «Сведения о преподавателях», который выровнен по центру, и нижний заголовок «2004-05 уч. год», выровненный по правому краю; организуйте отступ двух строк после верхнего заголовка. Записи отделяться друг от друга строкой из тире не должны.

  6. Установите следующие размеры страницы:

  7. - количество строк перед верхним заголовком: 3;

  8. - количество строк на странице: 10;

  9. - количество символов в строке выберите столько, чтобы Отчет выводился на трех страницах.

  10. Выведите предыдущий Отчет (пункт 5), изменив верхний заголовок следующим образом: выровняйте текст заголовка «Сведения о преподавателях» по левому краю; а в правой части заголовка выведите текущий номер страницы. Для этого используйте параметр ‘PAGE:’ SQL.PNO SKIP 2

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

  12. Создайте Отчет, выводящий фамилию, имя, должность и оклад преподавателей, чей стаж более 5 лет.

  13. Выведите Отчет, представляющий сведения о том, сколько преподавателей работает на каждой кафедре.

  14. Выключите запись в файл.

  15. Закройте среду SQL+; запустите снова и откройте записанный файл.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]