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

Задание

Лабораторную работу следует выполнять в следующем порядке:

    1. Создать на компьютере sqledu02 рабочую папку для хранения файлов, получаемых при выполнении лабораторной работы №2. Эта папка должна располагаться в той же папке, что и папка для лабораторной работы №1, и называться "ЛР2" .

    2. Скопировать в эту папку файл сценария, созданный при выполнении лабораторной работы №1.

    3. Открыть окно "Редактор скриптов" в приложении "IBExpert".

    4. Используя кнопку [Загрузить из файла] на панели инструментов, открыть диалоговое окно "Open SQL File" и с его помощью открыть файл сценария, скопированный ранее в папку "ЛР2".

5.Изменить в сценарии путь до файла с базой данных, чтобы база данных создавалась в папке "ЛР2".

  1. Добавить в сценарий команды создания доменов с использованием всех типов полей, приведенных в табл.1. Необходимо обязательно следовать правилам оформления текста сценария.

  2. Выполнить сценарий, создав в базе данных не менее 11 доменов.

  3. Сохранить файл сценария.

  4. Зарегистрировать базу данных в приложении "IBExpert" и подключиться к созданной базе данных.

  5. Создать в диалоговом режиме столько доменов, сколько имеется в выпадающем списке колонки "Тип" типов данных.

  6. Создать в папке "ЛР2" резервную копию базы данных.

  7. Создать и сохранить в этой же папке файл с отчетом о выполнении лабораторной работы №2, который должен называться "Отчет.doc".

Ход работы

Подключившись к базе данных, можно выполнять операции по созданию, удалению и изменению доменов. В окне "Database Explorer" появляются вложенные узлы, которые можно использовать для выполнения операций с доменами.

Чтобы добавить новый домен, необходимо воспользоваться командой "Новый домен" контекстного меню узла "Домены". В результате откроется окно со сведениями о доменах (Рис. 1).

Рис. 1: Окно создания Домена

Для изменения имени домена достаточно отредактировать его в столбце "Имя домена". Для изменения типа данных следует воспользоваться выпадающим списком в столбце "Тип" (Рис. 2). Длину текстового поля можно изменить, если отредактировать значение в столбце "Длина".

Рис. 2: Окно "Database Explorer" с перечнем типов данных

Чтобы сделанные изменения были выполнены, необходимо нажать кнопку [Компиляция] (Ctrl+F9). В результате этого откроется диалоговое окно "Компиляция доменов…" (Рис. 3), в котором надо подтвердить (кнопка [Подтвердить]) или отменить (кнопка [Откатить]) выполнение операции.

Рис. 3: Диалоговое окно "Компиляция доменов"

Отчет о выполнении работы

Отчет о выполнении лабораторной работы №2 необходимо оформить на листах формата A4.

Отчет должен содержать описание и результаты работы, представляемые в следующей последовательности:

  1. Распечатка сценария создания базы данных с комментариями, которые должны содержать сведения об авторе, дате создания, всех выполняемых действиях и пояснения к доменам.

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

Лабораторная работа №3. Таблицы

Цель работы

Изучить способы создания, изменения и удаления таблиц. Получить навыки использования приложения "IBExpert" для создания, удаления и изменения структуры таблиц. Изучить SQL-операторы для работы с таблицами и индексами.

Исходные данные

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

Используемые программы

Все операции выполняются с помощью приложения "IBExpert". Отчет создается в редакторе "Microsoft Word".

Теоретические сведения

Таблицы (Tables)

Firebird – реляционная СУБД, поэтому все данные в Firebird хранятся в виде двумерных таблиц со строками и столбцами. Строки называются кортежами или записями, а столбцы – доменами или полями.

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

Основные ограничения, которым должны удовлетворять таблицы:

  1. Каждый столбец в таблице имеет уникальное имя.

  2. Все данные в столбце должны быть одного типа.

  3. Порядок строк и столбцов в таблице не имеет значения.

  4. В таблице не может быть двух одинаковых строк.

Язык, который управляет метаданными, называется Data Definition Language (DDL). К DDL относятся операторы для определения любых содержащихся в базе данных объектов, в том числе и таблиц. Операторы, определяющие структуру таблиц в Firebird, соответствуют стандарту SQL, и поэтому без изменений будут работать и во многих других СУБД.

Для создания таблиц используется оператор "CREATE TABLE", который приводит к созданию пустой таблицы. При создании таблиц задается имя таблицы, описание набора столбцов с их именами, типами и размерами, а также ограничения на хранящуюся в таблице информацию. Максимальная длина названий таблиц, полей и ограничений – 31 символ. Имена таблиц в пределах базы данных должны быть уникальными.

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

Упрощенный синтаксис оператора создания таблицы:

CREATE TABLE <Имя_Таблицы>

(

<описание столбца> [,

<описание столбца> | <ограничение> ...]

);

В определении столбца таблицы частично повторяется синтаксис, используе­мый при создании домена. Это понятно, поскольку оба описывают один и тот же объект. Синтаксис определения столбца:

<имя столбца> {<тип данных> | COMPUTED [BY] (<выражение>) | <имя домена>}

[DEFAULT [<литерал> | NULL | USER}]

[NOT NULL]

[<ограничение столбца>]

[COLLATE <порядок сортировки>]

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

В операторе CREATE TABLE элемент <ограничение> означает ограничение, которое задается на уровне таблицы без одновременного описания столбца*.

Пример создания таблицы "Человек" (домены ID и Name описаны в предыдущей лабораторной работе):

CREATE TABLE Person(

Pr_ID ID, -- номер человека

Pr_LastName Name, -- фамилия

Pr_FirstName Name, -- имя

Pr_Patronymic CHAR(30), -- отчество

Pr_FIO COMPUTED BY ( -- фамилия и инициалы

Pr_LastName || ' ' ||

SUBSTRING(Pr_FirstName FROM 1 FOR 1) || '.' ||

SUBSTRING(Pr_Patronymic FROM 1 FOR 1) || '.')

);

Первые три поля заданы с использованием доменов, тип поля Pr_Patronymic задан непосредственно при создании таблицы, а поле Pr_FIO является вычисляемым.

В этом операторе || означает операцию конкатенации (соединения) строк, SUBSTRING() – функция, возвращающая подстроку (в приведенном примере – первую букву полей "Pr_FirstName" и "Pr_Patronymic").

Если при описании поля не использовать домен, то Firebird все равно создает домен специально для этого поля. Имя таких доменов состоит из символов "RDB$" и порядкового номера. С такими системными доменами можно выполнять такие же операции, как и с обычными доменами.

Для удаления таблицы используется оператор DROP TABLE.

DROP TABLE Person; -- Пример удаления таблицы

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

Примеры операторов ALTER TABLE:

ALTER TABLE Person ADD Birthday DATE; -- добавление поля "День рождения"

ALTER TABLE Person DROP Pr_Patronymic; -- удаление поля "Отчество"

ALTER TABLE Person -- переименование поля "День рождения"

ALTER COLUMN Birthday TO Pr_Birthday;

Если требуется изменить тип поля, например, увеличить число символов, хранимых в поле, то необходимо изменять домен этого поля оператором ALTER DOMAIN или выполнить изменения в системных таблицах.

Индексы

Firebird (как и другие реляционные СУБД) хранит записи в таблицах в неупорядоченном виде. Записи, добавляемые в таблицу одна за другой, не обязательно окажутся "рядом". Данные, извлекаемые из таблицы, также не имеют какого-либо порядка, кроме того, который явно указан в запросе на выборку данных.

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

Устройство индексов на физическом уровне для нас совершенно не имеет значения. Важно только знать, что создание индексов может привести к значительному ускорению процессов поиска и сортировки.

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

Использование индексов имеет два отрицательных последствия:

    1. Для индексов дополнительно тратится дисковое пространство.

    2. Наличие индексов замедляет модификацию данных в таблице

Индексы создаются при помощи команды CREATE INDEX.

Синтаксис оператора создания индекса:

CREATE [UNIQUE] [ASC[ENDING] | DESC[ENGING]]

INDEX <Имя_Индекса> ON <Таблица> (Поле [, Поле ...]);

Индекс может быть либо возрастающим (ASC[ENDING]), либо убывающим (DESC[ENGING]). Если при создании индекса указать UNIQUE, то можно будет заносить в таблицу только уникальные значения индексированных полей.

Пример создания индекса:

-- индекс по фамилии человека:

CREATE INDEX Index_Person_Name ON Person(Pr_LastName);

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

Чтобы пересоздать индекс, можно использовать следующие способы:

  1. Перестроить индекс с помощью команды ALTER INDEX. Для этого надо последовательно выполнить две команды:

ALTER INDEX Имя_Индекса INACTIVE | ACTIVE;

  1. Удалить индекс (командой DROP INDEX), а затем повторно создать его.

  2. Выполнить резервное копирование и восстановление базы данных.

Индекс характеризуется числом в пределах от 0 до 1, которое называется статистикой. Это число зависит от числа различных значений поля в таблице. Оптимизатор запросов Firebird использует это число для определения эффективности применения индекса в запросе. Статистика определяется при создании и перестройке индекса, а также по команде пересчета статистики. Когда число записей в таблице изменяется, пересчет статистики может улучшить производительность. Пересчет статистики не перестраивает индекс, а только определяет статистику.

Команда пересчета статистики индекса:

SET STATISTICS INDEX Имя_Индекса;

Задание

Лабораторную работу следует выполнять в следующем порядке:

    1. Создать на сервере sqledu02 рабочую папку для хранения файлов, получаемых при выполнении лабораторной работы №3. Эта папка должна быть рядом с папками для предыдущих лабораторных работ и называться "ЛР3".

    2. Скопировать в эту папку файл сценария, созданный при выполнении лабораторной работы №2.

    3. Открыть окно "Редактор скриптов" в приложении "IBExpert" и прочитать в него файл сценария, скопированный ранее в папку "ЛР3".

    4. Изменить в сценарии путь до файла с базой данных, чтобы база данных создавалась в папке "ЛР3".

    5. Добавить в сценарий команды создания таблиц в соответствии с индивидуальным заданием. Должно получиться не менее 5 таблиц. При описании полей необходимо использовать и созданные ранее домены и непосредственно типы данных. В таблицах должно быть не менее трех вычисляемых полей.

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

    7. Выполнить сценарий и сохранить его в папке "ЛР3".

    8. Зарегистрировать созданную базу данных в программе "IBExpert" и подключиться к ней.

    9. Создать в своей базе данных таблицу в диалоговом режиме. Она должна называться "TestDialog" и содержать десять полей разных типов с произвольными именами. Скопировать в отчет сценарий создания таблицы "TestDialog", который сгенерирует "IBExpert".

    10. Создать в диалоговом режиме в таблице "TestDialog" три различных индекса и сценарии их создания скопировать в отчет.

    11. Создать в папке "ЛР3" резервную копию базы данных.

    12. Создать и сохранить в папке "ЛР3" файл с отчетом о выполнении лабораторной работы №3, который должен называться "Отчет.doc".

Ход работы

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

Для создания таблицы в диалоговом режиме, нажмите в окне "Database Explorer" правую клавишу мыши на узле "Таблицы" или на одной из имеющихся таблиц и в открывшемся меню выберите команду "Новая таблица (Ctrl+N)" (Рис 1). В результате откроется окно создания таблицы (Рис. 2).

Рис. 1: Окно "Database Explorer" создания таблицы

Рис. 2: Окно создания таблицы в диалоговом режиме

В верхней части этого окна вводится имя создаваемой таблицы (в приведенном случае – "TESTDIALOG").

Сетка в средней части окна содержит сведения о полях таблицы. Чтобы добавить поле в таблицу, следует нажать клавишу [Insert] или [Стрелка вниз]. В столбце "Название" вводится имя создаваемого поля, в колонке "Тип" выбирается тип данных, либо в колонке "Домен"– созданный ранее домен. Для текстовых полей (CHAR и VARCHAR) в колонке "Длина" вводится размер поля. Чтобы задать полю ограничение "NOT NULL" достаточно установить флажок в колонке "Не пусто".

В нижней части окна на вкладке "Описание поля" можно вводить для каждого поля поясняющие комментарии.

После ввода данных о всех полях таблицы следует нажать кнопку [Компиляция] (Ctrl+F9). В результате этого откроется диалоговое окно "Создание таблицы Имя_Таблицы…" (Рис. 3), в котором надо подтвердить (кнопка [Commit]) или отменить (кнопка [Откатить]) выполнение операции.

Рис. 3: Диалоговое окно создания таблицы

Если закрыть это диалоговое окно кнопкой [Подтвердить], то в окне "Database Explorer" появятся дополнительные строки и оно примет следующий вид (Рис. 4).

Рис. 4: Окно "Database Explorer

Теперь появится возможность добавить к таблице индексы. Для этого перейдите на вкладку "Индексы" (Рис. 5).

Рис. 5: Окно просмотра и редактирования индексов

Сетка на этой вкладке позволяет просматривать, редактировать, создавать и удалять индексы.

Для создания индекса выполните следующие действия:

    1. Нажмите в этой сетке клавишу [Новый индекс]. В результате будет вставлена новая строка.

    2. Задайте в колонке "Индекс" имя индекса.

    3. Нажмите кнопку в колонке "На поле". В результате откроется окно с двумя списками (Рис. 5). В левом списке "Available fields" будут находиться поля, которые можно добавить к индексу, в правом списке "Included fields" будут находиться поля, которые уже включены в список. Для формирования перечня полей, которые будут входить в индекс, переместите нужные поля из левого списка в правый.

    4. Если создается уникальный индекс, установите флажок в колонке "Уникальный".

    5. Чтобы активировать индекс установите флажок в колонке "Активность".

    6. В колонке "Тип сортировки" выберите способ сортировки.

    7. Чтобы создать индекс нажмите кнопку [Компиляция] (Ctrl+F9).

    8. В результате откроется диалоговое окно (Рис. 6), в котором надо под-твердить (кнопка [Подтвердить]) или отменить (кнопка [Откатить]) выполнение операции.

Рис. 6: Диалог создания индекса

После создания индекса его можно в любой момент изменить, если изменить параметры индекса и снова нажать кнопку [Компиляция].

Отчет о выполнении работы

Отчет о выполнении лабораторной работы №3 необходимо оформить на листах формата A4.

Отчет должен содержать описание и результаты работы, представляемые в следующей последовательности:

    1. Краткое описание таблиц, предназначенных для моделирования предметной области в соответствии с вариантом.

    2. Распечатка сценария создания базы данных с комментариями, которые должны содержать сведения об авторе, дате создания, всех выполняемых действиях и пояснения к таблицам и индексам.

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