Здавалка
Главная | Обратная связь

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



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

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

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

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

 

2.8. Контрольные вопросы

1. Дать определение термина "Домен".

2. Где в InterBase используются домены?

3. Какова максимальная длина имени домена?

4. Какие из имеющихся типов данных не приведены в табл. 1.

5. Перечислить числовые типы данных InterBase.

6. Перечислить целые типы данных в порядке возрастания их размера.

7. Перечислить строковые типы данных.

8. Сколько различных типов данных можно использовать при создании доменов в диалоговом режиме?

9. Чем отличается тип данных DATEв диалектах 1 и 3.

10. Какие дополнительные новые типы добавились в диалекте 3?

11. В чем отличие типа данных VARCHARот CHAR?

12. Чему равно наибольшее целое число, которое можно сохранить в типе BIGINT?

13. Что означает аббревиатура BLOB?

14. Какие существуют способы изменения домена?

15. В какой системной таблице хранятся метаданные о доменах?


 


Лабораторная работа №3.

Таблицы

Цель работы

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

 

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

Исходными данными является индивидуальное задание и результат предыдущих лабораторных работ.

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

1. Программа "IB Expert".

2. Редактор "Microsoft Word" для создания отчета.

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

Таблицы (Tables)


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

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

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

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

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

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

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


 

Часть языка SQL, которая управляет метаданными, называется Data Definition Language (DDL). К DDL относятся операторы для определения любых содержащихся в базе данных объектов, в том числе и таблиц. Операторы, определяющие структуру таблиц в InterBase, соответствуют стандарту SQL, и поэтому без изменений будут работать и во многих других СУБД. Для создания таблиц используется оператор "CREATE TABLE", который приводит к созданию пустой таблицы без строк. При создании таблиц задается имя таблицы, описание набора столбцов с их именами, типами и размерами, а также ограничения на хранящуюся в таблице информацию. Максимальная длина названий таблиц, полей и ограничений – 31 символ. Имена таблиц в пределах базы данных должны быть уникальны.

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

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

 

CREATE TABLEИмя_Таблицы(<описание колонки> [, <описание колонки> |<ограничение> ...] );


 

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

 

<описание колонки> = Колонка {<тип данных> | COMPUTED[BY] (<вычисляемое выражение>) |Имя_Домена }[DEFAULT {Literal | NULL | USER}] [NOT NULL] [<ограничение поля>];

 

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

 

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

 

 

CREATE TABLEPerson(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 TABLEPerson;-- Пример удаления таблицы

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

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

-- добавление поля "День рождения":

ALTER TABLEPerson ADDBirthday DATE;

-- удаление поля "Отчество":

ALTER TABLEPerson DROPPr_Patronymic;

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

ALTER TABLEPerson ALTER COLUMNBirthday TOPr_Birthday;

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

Индексы

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

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

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


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

 

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

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

 

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

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

 


CREATE[UNIQUE] [ASC[ENDING] | DESC[ENGING]] INDEXИмя_Индекса ONТаблица(Поле [,Поле ...]);

 

 

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

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

-- индекс по фамилии человека: CREATE INDEXIndex_Person_Name ONPerson(Pr_LastName);

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

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

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

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

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

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

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

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

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

 

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


 

Задание

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

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

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

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

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

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

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

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

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

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

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

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

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


 

Ход работы

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

Для создания таблицы в диалоговом режиме, нажмите в окне "Database Explorer" правую клавишу мыши на узле "Tables" или на одной из имеющихся таблиц и в открывшемся меню выберите команду "New Table… (Ctrl+N)" (рис. 11). В результате откроется окно создания таблицы (рис. 12).

 

 


 

Рис. 11. Окно "Database Explorer" с перечнем таблиц

 

 


 

 

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

 

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

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

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

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


 

 

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

 

Если закрыть это диалоговое окно кнопкой [Commit], то в окне, показанном на рис. 12 появятся дополнительные вкладки и оно примет следующий вид (рис. 14).

Рис. 14. Окно просмотра и редактирования таблицы


 

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

 

 


 

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


 

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

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

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

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

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

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

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

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

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

8. В результате откроется диалоговое окно (рис. 16), в котором надо подтвердить (кнопка [Commit]) или отменить (кнопка [Rollback]) выполнение операции.

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

 

 


 

 

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

 








©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.