Знакомство с СУБД DB2. Язык DDL (120
.pdfCopyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
5. Для вас создана специальная база данных $DBYXX, где YXX — последние три цифры вашего логина. Во всех скриптах необходимо использовать свою базу данных.
2.2. Запуск скриптов в утилите SPUFI. Создание и определение таблиц
1.Выберите в меню СУБД DB2 опцию 1 для запуска утилиты SPUFI (интерфейс утилиты SPUFI — см. рис. 1).
2.В качестве входного набора данных введите строку ’TSOUsxx.CF82.SPUFIN(CF82DDE1)’,
где вместо TSOUsxx вставьте ваш логин (userid).
Текст скрипта CF82DDE1:
CREATE TABLE DEPT
( DEPTNO CHAR(3) NOT NULL, DEPTNAME VARCHAR(36) NOT NULL, MGRNO CHAR(6) ,
ADMRDEPT CHAR(3) NOT NULL, LOCATION VARCHAR(16) , PRIMARY KEY (DEPTNO) )
IN DATABASE $DBYXX;
CREATE UNIQUE INDEX DEPX ON DEPT(DEPTNO);
3. В качестве выходного набора данных введите строку ’TSOUsxx.CF82.SQLOUT’.
4.Выберите YES для опций 5—9 и нажмите кнопку ENTER.
5.Исследуйте появившееся окно настроек утилиты SPUFI и
нажмите кнопку ENTER.
6.Сделайте скриншот появившегося окна и опишите в отчете результат выполнения пп. 1—5. После выполнения пп. 1—5 можно редактировать и запускать скрипты в утилите SPUFI:
•можно редактировать набор данных как обычно, используя редактор команд ISPF;
•можно написать комментарий, если вставить в первых двух столбцах два тире (–).
7.Скрипт TSOUsxx.CF82.SPUFIN (CF82DDE1) создает таблицу DEPT (рис. 4). Просмотрите содержимое скрипта, читая следующую информацию:
11
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рис. 4. Структура таблиц EMP и DEPT
•скрипт, написанный на языке DDL, создает (CREATE) таблицу DEPT. Если в имени таблицы не определен владелец, ваш логин автоматически станет владельцем;
•перечень описаний столбцов следует за выражением CREATE.
Вкаждом пункте списка определены имя столбца, его атрибуты, а также поддержка нулевой характеристики. Например, первый столбец в таблице известен как DEPTNO. Это будет трехбайтовая колонка, содержащая символьные данные. В этом столбце нельзя сохранять NULL-данные. Третий столбец будет называться MGRNO. Это шестибайтовая колонка, содержащая символьные
12
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
данные. В отличие от столбца DEPTN столбец MGRNO разрешает сохранять NULL-данные, поскольку нет четко указанного запрета. Есть возможность использовать другие типы данных: INTEGER, SMALLINT, DECIMAL, DATE, TIME, TIMESTAMP и VARCHAR. Для дальнейшего обсуждения атрибутов этих и других типов данных обратитесь к справочному руководству по языку SQL. При создании столбцов также можно указать свойство ’NOT NULL WITH DEFAULT’. Если значение не указано по умолчанию в синтаксисе команды, оно зависит от выбранного типа столбца;
•после списка столбцов найдите определение первичного ключа (PRIMARY KEY). В рассматриваемом скрипте столбец DEPTNO выбран в качестве первичного ключа. Если в PRIMARY KEY входит более одного столбца, то их имена перечисляются
вскобках, разделенные запятыми. Любой столбец в первичном ключе должен быть определен как NOT NULL или NOT NULL WITH DEFAULT. Как правило, свойство NOT NULL должно быть указано, поскольку значение первичного ключа уникально. Исключение может быть сделано для временных столбцов. По умолчанию значение для времени (CURRENT TIMESTAMP) измеряется в микросекундах;
•для обеспечения соблюдения уникальных значений в первичном ключе скрипт CF82DDE1 также содержит код DDL, создающий уникальный индекс (UNIQUE INDEX) в столбцах первичного ключа.
Вы получили табличное пространство по умолчанию, поэтому нет необходимости определять его.
8. Нажмите кнопку F3, чтобы сохранить скрипт и вернуться в главное меню утилиты SPUFI.
Замечание. Имейте в виду, что, если опции 5 и 6 отмечены звездочками, значит, этот этап редактирования (подготовки скрипта к запуску) уже пройден.
9. Нажмите кнопку ENTER, чтобы выполнить следующие шаги: запустить, автоматически сохранить изменения базы данных в случае успешного завершения скрипта (autocommit) и просмотреть вывод (в наборе данных, указанном в п. 4 настроек утилиты SPUFI (см. рис. 1)).
Убедитесь, что SQL-скрипт выполнен правильно.
13
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
10. Следующий SQL-скрипт CF82DDE2 создает таблицу EMP. Просмотрите содержимое скрипта, читая следующую информацию:
•первое выражение создает таблицу EMP. Обратите внимание на типы столбцов и определение NULL-атрибутов. Свойства ссылочной целостности (Referential Integrity Characteristics) не являются частью определения новой таблицы;
•выражение Создать Индекс (CREATE INDEX) создает уникальный индекс (UNIQUE INDEX) для того, что будет называться первичным ключом. Если уникальный индекс существует, когда первичный ключ определен, менеджер баз данных будет использовать этот индекс в качестве индекса первичного ключа (PRIMARY KEY);
•выражение ALTER добавляет необходимые свойства ссылочной целостности. Первичный ключ определяет столбец EMPNO в качестве единственного столбца первичного ключа.
Обратите внимание на внешний ключ (FOREIGN KEY). Он указывает имя внешнего ключа (REMPDEPT), столбец(ы) в ключе (WORKDEPT), ссылку на родительскую таблицу (DEPT) и правило удаления DELETE RULE (SET NULL). Отметим, что это правило удаления возможно только потому, что внешний ключ столбца позволяет сохранять нулевые значения. Если внешний ключ не указан прямо, СУБД DB2 создает имя. Имя может иметь от одного до восьми символов в длину. Внешний ключ столбца(ов) должен соответствовать спецификации первичного ключа столбца(ов) в соотнесенной родительской таблице в отношении типа и размера. Не нужно создавать никаких ссылок на столбцы, содержащиеся в исходной таблице. Так как таблица может иметь только один первичный ключ, названия родительской таблицы достаточно. Другие правила удаления — RESTRICT и CASCADE. Если правило не указано, используется RESTRICT.
Замечание. Выражение ALTER в скрипте было использовано в качестве иллюстрации. Таблицы с зависимостями от других таблиц можно создать с помощью SQL-оператора CREATE с описанием FOREIGN KEY;
•второй индекс создан для внешнего ключа в таблице EMP. Хотя этот индекс не является необходимым, его рекомендуется создавать, если зависимая таблица будет содержать какие-либо зна-
14
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
чительные объемы данных. В противном случае процедура проверки ограничения ссылочной целостности может давать плохие результаты.
11.Запустите скрипт CF82DDE2. Убедитесь, что SQL-скрипт выполнен правильно.
12.После запуска скрипта CF82DDE2 исследуйте и запустите скрипт CF82DDE3 (создание вида VPHONE). Этот вид является обьединением таблиц EMP и DEPT. В данный момент обе таблицы пустые, так что SELECT должен вернуть 0 строк.
2.3.Изменение данных, изучение ссылочной целостности
1.Измените и исследуйте SQL-скрипт CF82DDE4, который вставляет все данные из таблицы master EMP в вашу таблицу EMP,
азатем вставляет все данные из таблицы master DEPT в вашу таблицу DEPT.
Это имитирует выборку данных из производной таблицы в тестовую таблицу.
2.Запустите SQL-скрипт CF82DDE4.
3.Отметьте в отчете результат запуска скрипта. Объясните произошедшее.
4.Теперь измените и исследуйте SQL-скрипт CF82DDE5, который похож на скрипт CF82DDE4, но сначала вставляет строки из таблицы master в родительскую (DEPT), а затем в таблицу EMP.
5.Запустите SQL-скрипт CF82DDE5.
6.Отметьте в отчете результат запуска скрипта.
7.Теперь то же выполните для оператора UPDATE. Измените и исследуйте SQL-скрипт CF82DDE6, который отражает необходимость переименования двух департаментов: название D01 должно быть изменено на C01, название D11 должно стать D31.
8.Запустите SQL-скрипт CF82DDE6.
9.Отметьте в отчете результат запуска скрипта и объясните
его.
10.Собственно, там была ошибка в требованиях: название департамента D01 в действительности должно быть изменено на название C10. Скрипт CF82DDE7 исправляет эту ошибку. Измените и исследуйте SQL-скрипт CF82DDE7.
11.Запустите SQL-скрипт CF82DDE7.
15
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
12.Отметьте в отчете результат запуска скрипта.
13.Как вы думаете, что СУБД DB2 проверяет при запуске двух
предыдущих скриптов?
14.Как называется отношение, которое вызвало «провал» второго обновления?
15.Компания хочет изменить название департамента D11 на
название D31, но обновление таблицы DEPT было предотвращено из-за ограничений. Таким образом, было решено сначала изменить значения таблицы EMP. Измените и исследуйте SQL-скрипт CF82DDE8.
16.Запустите SQL-скрипт CF82DDE8.
17.Отметьте в отчете результат запуска скрипта.
18.Как вы думаете, как название департамента D11 может быть
изменено на название D31?
19.То же выполните для оператора DELETE. Компания хотела бы удалить название департамента D11 из таблицы DEPT.
20.Измените и исследуйте SQL-скрипт CF82DDE9. Так же, как
ипредыдущий скрипт, он показывает, какие сотрудники находятся в отделе.
21.Запустите SQL-скрипт CF82DDE9.
22.Отметьте в отчете результат запуска скрипта.
23.Что произошло с тремя сотрудниками, которые работали в департаменте D11? Что-нибудь изменилось в их информации? Почему?
24.Что произошло бы, если бы были назначены правила удаления CASCADE?
25.Что произошло бы, если бы были назначены правила уда-
ления RESTRICT?
26. Повлияли ли удаления из таблицы EMP на ссылочную целостность? Значимы ли для этого правила удаления?
2.4. Обновление данных
Чтобы завершить работу (и это можно еще использовать, если данные повреждены), есть SQL-скрипт ОБНОВИТЬ (REFRESH), который удаляет данные из таблицы EMP и вставляет новый набор данных из таблиц master.
1.Измените и исследуйте SQL-скрипт CF82DDER.
2.Запустите SQL-скрипт CF82DDER.
16
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
2.5. Самостоятельная работа
Разработать структуру базовых таблиц (не менее трех) базы данных (смотри ниже варианты предметной области базы данных), удовлетворяющих требованиям целостности, непротиворечивости и неизбыточности.
Создать структуры базовых таблиц и наполнить их содержимым, состоящим из более чем 10 записей. При создании структуры таблиц целесообразно задавать ключевые (уникальные) поля. Это поможет в дальнейшем для организации связей между таблицами.
Примерные варианты предметной области базы данных
1.Студенческая библиотека.
2.Прокат видеокассет.
3.Риэлторская фирма.
4.ГИБДД (Государственная инспекция безопасности дорожного движения) города X.
5.Студенты вуза.
6.Кадры предприятия.
7.Компьютерный фонд вуза.
8.Временные трудовые коллективы.
9.Городская телефонная сеть.
10.Автокаталог.
11.Аудиторный фонд вуза.
12.Авиапассажирские перевозки города X.
13.Склад предприятия.
14.Кадры (преподаватели).
15.Экзаменационная сессия.
16.Турагентство города X.
17.Услуги от А до Я.
18.Музыкальные торговые объекты региона X.
19.Авиалинии «Голубое небо» (пассажирские и транспортные перевозки).
20.Сборка и реализация компьютеров.
21.Продуктовые магазины района X.
22.Оптовая база.
23.Спортивные комплексы региона X.
24.Районный расчет квартплаты.
25.Фирмы покупки и сбыта автомобилей.
17
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
26. Налоговая инспекция. Налоги с физических и юридических лиц.
Возможна другая тематика для создания баз данных по согласованию с преподавателем.
3. ТРЕБОВАНИЯ К ОТЧЕТУ
Отчет о выполнении лабораторной работы должен содержать ответы на вопросы, поставленные перед студентом в методических указаниях, скриншоты результатов выполнения практических заданий, структуру разработанной базы данных, SQL-код для ее создания и ответы на контрольные вопросы. Оформление отчета должно быть выполнено в соответствии с требованиями ГОСТов.
4.КОНТРОЛЬНЫЕ ВОПРОСЫ
1.Какие существуют компоненты языка SQL?
2.Как запустить SQL-скрипт?
3.Чем отличается вид от таблицы?
4.Как создать таблицу? Как создать вид?
5.Перечислите свойства ссылочной целостности.
6.Какие виды правил удаления существуют?
7.Какие есть способы восстановления утерянных данных в СУБД DB2?
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
ЛИТЕРАТУРА
1. DB2 SQL Reference. International Business Machines Corporation,
2003.
2.Ebbers M., O’Brien W., Ogden B. Introduction to the New Mainframe: z/OS Basics. IBM corp., 2005.
3.Bruni P., Anders M. DB2 for z/OS: Data Sharing in a Nutshell. International Business Machines Corporation, 2006.
19
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
|
ОГЛАВЛЕНИЕ |
|
1. |
Теоретическая часть . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |
4 |
|
1.1. Общие сведения о СУБД DB2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |
4 |
|
1.2. Физическое устройство СУБД DB2 . . . . . . . . . . . . . . . . . . . . . . . . |
6 |
|
Структуры данных СУБД DB2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . |
6 |
|
Системные структуры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |
9 |
2. |
Практическая часть . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |
10 |
|
2.1. Настройка СУБД DB2 для работы в интерфейсе ISPF . . . . . . |
10 |
|
2.2. Запуск скриптов в утилите SPUFI. Создание и определение |
|
|
таблиц . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |
11 |
|
2.3. Изменение данных, изучение ссылочной целостности . . . . . . |
15 |
|
2.4. Обновление данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |
16 |
|
2.5. Самостоятельная работа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |
17 |
3. |
Требования к отчету . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |
18 |
4. |
Контрольные вопросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |
18 |
Литература . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |
19 |
|
