Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

метод уч пособие

.pdf
Скачиваний:
72
Добавлен:
16.03.2015
Размер:
1.68 Mб
Скачать

11

ЛАБОРАТОРНАЯ РАБОТА № 2 Индексация и поиск

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

Закладка выполнения лабораторной работы 2 представлена на рис. 3.

Рис. 3

Аналогично закладке работы 1 в верхней части расположены окно ввода команд, кнопка ее выполнения, окно вывода ошибок, окно подключения таблицы и окно отображения/редактирования таблицы (GRID). Команда DISPLAY STATUS выводит информацию о загруженной таблице, открытые индексы (в порядке их нумерации) и указывает главный (текущий) индекс, если он установлен.

Программа работы:

Изучить в приложении А создание индексов в режиме конструктора таблиц, а в программе справки работу команд SET

12

ORDER TO, SET NEAR, команд последовательного поиска LOCATE и индексированного поиска SEEK.

2.1Создать таблицу (выполнив команду CREATE <имя_таблицы>) с полями символьного, числового типа и типа DATE, заполнить ее произвольными данными (не менее 10 строк).

2.2Создать индексы типа REGULAR (регулярный) для каждого поля.

2.3Попеременно устанавливая текущие индексы каждого поля, (при помощи команды SET ORDER TO), определить, по какому принципу организуется сортировка полей.

2.4Написать и выполнить команды последовательного поиска для каждого поля задавая произвольный ключ поиска, определить номер строки результата поиска (номер можно определить в статусной строке, см. описание лабораторной работы 1).

2.5Написать и выполнить команды индексированного поиска для каждого поля, предварительно установив главный индекс соответствующего поля (или задав опцию номера индекса в команде поиска), и определить номер строки результата поиска.

2.6Повторить п.2.5, предварительно выполнив команду SET NEAR OFF и задав в качестве искомого значения несуществующее значение поля, равное примерно середине диапазона значений поля.

2.7Повторить п.2.5, предварительно выполнив команду SET NEAR ON и задав в качестве искомого значения несуществующее значение поля, равное примерно середине диапазона значений поля.

Выслать отчет и папку BASE2 с содержимым (удалив из нее BAK-файлы, если они образовались в процессе работы) диспетчеру на проверку.

13

ЛАБОРАТОРНАЯ РАБОТА № 3 SQL-SELECT (оператор выборки)

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

Закладка выполнения лабораторной работы 3 представлена на рис. 4. В верхней части находится окно ввода команд SQL, над ним кнопка выполнения запроса, при вводе команды SELECT и нажатии кнопки выполнения открывается окно (в случае отсутствия ошибок в команде) выполнения запроса, где в табличном виде представлен результат запроса. Результат может и не содержать строк, если нет данных, удовлетворяющих запросу (простейший пример: SELECT * FROM <таблица> WHERE 5>6). Закрывается окно запроса нажатием на значок закрытия окна.

Рис. 4

Ниже расположено окно ошибок, еще ниже история выполненных команд с кнопками изменения размеров фонта (+ и –) и кнопками загрузки, сохранения и очистки истории команд. Двойной клик по строке истории помещает ее содержимое в окно команд. Выполненная команда, если она не присутствует в списке,

14

помещается в нижнюю строку истории со сдвигом остальных команд вверх.

В базе data_lab3, находящейся в папке BASE3 находятся три таблицы:

1. OTD-таблица отделов со столбцами:

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

name_otd (символьного типа) — название отдела;

name_nach (символьного типа) — фамилия начальника;status (числового типа) — статус отдела.

2. SOTR-таблица сотрудников со с столбцами:

nom_sotr (числового типа) — номер сотрудника (первичный ключ);

nom_otd (числового типа) — номер отдела, в котором работает сотрудник (внешний ключ);

na

me1 (символьного типа) — фамилия сотрудника;

name2 (символьного типа) — имя сотрудника;

name3 (символьного типа) — отчество сотрудника;

city (символьного типа) — город рождения сотрудника;

date_b (типа дата) — дата рождения сотрудника;

zarpl (числового типа) — зарплата сотрудника.

3. DETI-таблица детей сотрудников со столбцами:

nom_sotr (числового типа) — номер сотрудника (внешний ключ);

name_d (символьного типа) — имя ребенка;

voz (числового типа) — возраст ребенка;

school (числового типа) — номер школы, в которой учится ребенок (если ребенок не учится в школе, номер имеет значе-

ние NULL).

Таблица OTD является родительской по отношению к таблице SOTR, а таблица SOTR является родительской по отноше-

15

нию к таблице DETI, в обоих отношениях связь типа «один ко многим», рис. 5.

Рис. 5

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

Программа работы:

3.1Изучить работу оператора SQL-SELECT (в учебном пособии и программе справки, в программе приведены две команды SELECT, изучить нужно именно SQL-команду).

3.2Выполнить команду SELECT * FROM sotr. Определить данные сотрудника, где номер строки выборки соответствует двум последним цифрам вашего пароля.

3.3Написать и выполнить в окне выполнения команд выборку, заданную в задании 1 (приложение В) в соответствии с вашим вариантом. Пример:

Выбрать сотрудников, родившихся 12 марта 1980 и фамилия которых начинается на 'Ф':

SELECT * FROM sotr WHERE date_b={^1980.03.12} and name1 like 'Ф%'

3.4 Определить количество строк результата команды, выполненной в п.3.3. Для определения количества строк использовать агрегированную функцию COUNT(*).

16

Пример:

SELECT count(*) FROM sotr WHERE date_b={^1980.03.12} and name1 like 'Ф%'

3.5Выполнить пункт 3.3 для задания 2 в соответствии с вариантом.

3.6Выполнить п.3.4 для второй команды.

Вышлите отчет для проверки диспетчеру.

17

ЛАБОРАТОРНАЯ РАБОТА № 4 Модификация SQL

Целью работы является изучение методов модификации данных (вставка, удаление строк и модификации существующих данных в базе данных) на основе команд SQL стандарта языка работы с реляционной базой данных.

Закладка выполнения лабораторной работы № 4 представлена на рис. 6. В верхней части находится окно ввода команд SQL, над ним кнопка выполнения команды, справа от кнопки расположено окно вывода ошибок, аналогичное предыдущим работам.

Рис. 6

В базе data_lab4, находящейся в папке BASE4, находятся две пустые таблицы:

1. Таблица сотрудников Table1, с полями:

номер сотрудника (первичный ключ) — Nomer (числовой

тип);

фамилия — Name1 (символьный тип);

имя — Name2 (символьный тип);

18

дата рождения — Date_b (тип дата);

зарплата — Zarpl (числовой тип).

2. Таблица заказов, принятых сотрудниками Table2:

Номер сотрудника, принявшего заказ (внешний ключ) – Nom (числовой тип);

продукция — Product (символьный тип);

дата продажи — Date_sale (тип дата);

стоимость — Qty (числовой тип).

Таблицы Table1 и Table2 отображаются соответственно в левом и правом GRID при нажатии кнопки ОТОБРАЗИТЬ ТАБЛИЦЫ. Кнопка УДАЛЕНИЕ ПОМЕЧЕННЫХ СТРОК предназначена для физического удаления строк, помеченных к удалению. Таблицы являются связанными, осуществлена поддержка ссылочной целостности ON DELETE CASCADE, т.е. при пометке к удалению строки родительской таблицы (Table1) автоматически помечаются к удалению и все ее порожденные строки в дочерней таблице (Table2). При любом другом нарушении ссылочной целостности действие команды модификации отменяется с сообщением ошибки. При выполнении пунктов 4.2 и 4.3 для набора удобно использовать текстовый редактор, занося команды в окно ввода команд, используя буфер (Ctrl/C и Ctrl/V). Все изменения данных в таблицах осуществлять при помощи SQL-команд:

INSERT, DELETE и UPDATE.

Программа работы:

4.1Изучить работу команд SQL:INSERT, UPDATE и DELETE (в учебном пособии и программе справки).

4.2С помощью оператора INSERT вставить в родительскую таблицу не менее 10 строк с произвольными осмысленными данными. В отчете привести список команд с одним общим пояснением.

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

19

4.4Вставить в дочернюю таблицу строку с нарушением ссылочной целостности, определить номер ошибки.

4.5Удалить строку из родительской таблицы, имеющей порожденные строки. Пояснить результат.

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

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

4.8Выслать отчет и папку BASE4 с содержимым (удалив из нее BAK-файлы, если они образовались в процессе работы) диспетчеру на проверку.

20

КОНТРОЛЬНАЯ РАБОТА № 2

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

Задачи контрольной работы:

1)В заданной сущности выделить не менее 6 атрибутов, которые необходимо хранить в таблице. Атрибуты должны быть логически обоснованы.

2)Наложить ограничения на сущность.

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

4)Описать в табличном виде атрибуты, в левом столбце название атрибута, в правых — свойства атрибута:

a) единственное или множественное значение;

b) уникальность значения атрибута среди всех значений сущности;

c) допустимость пустых значений (NULL);

d) задать домен, если он может быть определен (допустимые значения атрибута);

e) пример значения атрибута.

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

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

7)Определить максимальную нормальную форму.