Смекни!
smekni.com

База данных Кафедра (стр. 3 из 7)

2.3.3. Скорость доступа к данным

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

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

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

В этих условиях при проектировании базы данных необходимо находить разумный компромисс между требованиями по ускорению поиска данных и требования по скорости их обновления. В частности, использование индексов для небольших по объему таблиц вообще не оправдано. Если имеется индекс по группе полей, то поиск по первому из полей групп может прямо использовать этот индекс, следовательно, нет смысла по нему делать отдельный индекс. Если поиск по каким-либо полям редок, то построение по ним индекса тоже не эффективно. К сожалению, более конкретные рекомендации по определению состава индексов едва ли возможны. Оптимальный выбор зависит и от структуры базы и от характера ее использования [8].

2.4. Этапы создания базы данных в INTERBASE

Первым этапом является создание базы данных:

Базы данных InterBase-сервера хранятся в виде файлов, имеющих расширение .gdb. для создания новой БД в окне программы IBConsole выберем команду Database ® Create Database.

В появившемся диалоговом окне создания базы данных необходимо ввести следующие данные:

¨ Введите в поле Alias название базы данных: date_as;

¨ В первой строке таблицы Files укажите полное имя базы данных: C:\DATE\date.gdb и ее размер в страницах: 230;

Далее укажем в таблице Options дополнительные сведения о базе данных:

¨ Page size (размер страницы) - 4096. Это значение проставляется по умолчанию.

¨ Default character set (набор символов по умолчанию) выберем из списка WIN1251. Это необходимо для того, чтобы в нашей базе данных можно было сохранять строковые данные, содержащие символы кириллицы.

¨ SQL Dialect - вводим 3 [5].

Рисунок 3 - Диалоговое окно создания базы данных

После всего нажимаем ОК.

Программа IBConsole создает только файл базы данных, а каталог, в котором создается база данных, должен уже существовать на жестком диске. Например, в нашем случае, на диске С:\ должна существовать папка DATE, в противном случае база данных создана не будет, а на экране появится сообщение об ошибке.

Второй этап- создание объектов базы данных. Подключившись к базе данных, дважды щелкнув по ее значку, увидим все компоненты входящие в базу данных. Для работы с базами данных в составе IBConsole имеется дополнительный инструмент - программа для интерактивной работы с SQL-запросами «Interactive SQL». Для ее запуска следует выбрать в меню пункт Tools®Interactive SQL. Эта программа позволяет набирать SQL-запросы и выполнить, сразу же видя результат. Поэтому окно программы делится на две области: верхнюю - область SQL-запросов и нижнюю - область результатов.

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

Создание доменов

Столбцы в различных таблицах базы данных могут содержать однотипные данные. Кроме того, виды контроля этих данных также могут быть одинаковыми. В этих условиях описания данных и методов их контроля целесообразно выполнить один раз, тогда при описании таблиц достаточно указывать только имя соответствующего описания данных. Для этих целей и служат описания доменов. Перед тем как создавать столбцы, которые ссылаются на домены, необходимо задать описания доменов. Для этих целей существует команда CREAT DOMAIN. В результате ее выполнения создается шаблон, на который можно ссылаться в командах создания и модификации таблиц.

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

Столбцы, базирующиеся на доменах, наследуют характеристики домена, причем часть из них может быть предопределена в локальных описаниях столбцов. Прежде чем создавать домены, необходимо выполнить проектирование базы данных, включающее проектирование системы таблиц и их нормализацию [3].

SQL коды для создания доменов:

CREATE DOMAIN t_disciplina_p VARCHAR(80);

CREATE DOMAIN t_disciplina_s VARCHAR(50);

CREATE DOMAIN t_doljnost VARCHAR(50);

CREATE DOMAIN t_examen INTEGER;

CREATE DOMAIN t_fio VARCHAR(50);

CREATE DOMAIN t_gruppa VARCHAR(20);

CREATE DOMAIN t_itog INTEGER;

CREATE DOMAIN t_kol_vo_kreditov INTEGER;

CREATE DOMAIN t_lc1 INTEGER;

CREATE DOMAIN t_lc2 INTEGER;

CREATE DOMAIN t_pr1 INTEGER;

CREATE DOMAIN t_pr2 INTEGER;

CREATE DOMAIN t_semestr INTEGER;

CREATE DOMAIN t_specialnost_p VARCHAR(80);

CREATE DOMAIN t_specialnost_s VARCHAR(20);

CREATE DOMAIN t_srs1 INTEGER;

CREATE DOMAIN t_srs2 INTEGER;

Выполнив SQL коды получим:

Рисунок 4 - Окно IBConsole после создания доменов

Создание таблиц и индексов

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

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

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

Рисунок 5 - Окно Interactive SQL при создании таблицы группа и уникального индекса для данной таблицы.

Рисунок 6 - Таблица Студент

Выполнив данный код нажав комбинацию клавиш Ctrl+Enter мы получим таблицу, в которую затем мы можем внести записи. Однако стоит заметить т.к. между таблицей Student и Gruppa существует связь по полю Gruppa, то перед заполнением таблицы Student, необходимо заполнить соответствующие значения в таблицу Gruppa, иначе на экране появится сообщение об ошибке.

SQL коды для создания таблиц и индексов:

CREATE TABLE gruppa (

gruppa t_gruppa NOT NULL,

god_postuplenia varchar(20),

edvaizer VARCHAR(20)

);

CREATE UNIQUE INDEX XPKgruppa ON gruppa

(

gruppa

);

ALTER TABLE gruppa

ADD PRIMARY KEY (gruppa);

CREATE TABLE student (

kod_student INTEGER NOT NULL,

gruppa t_gruppa NOT NULL,

fio t_fio

);

CREATE UNIQUE INDEX XPKstudent ON student

(

kod_student

);

ALTER TABLE student

ADD PRIMARY KEY (kod_student);

CREATE TABLE Disciplina (

kod_disciplina INTEGER NOT NULL,

disciplina_p t_disciplina_p,

disciplina_s t_disciplina_s,

semestr INTEGER

);

CREATE UNIQUE INDEX XPKDisciplina ON Disciplina

(

kod_disciplina

);

ALTER TABLE Disciplina

ADD PRIMARY KEY (kod_disciplina);

CREATE TABLE specialnost (

shifr_specialnost VARCHAR(20) NOT NULL,

specialnost_p t_specialnost_p,

specialnost_s t_specialnost_s,

god_vvedenia varchar(20)

);

CREATE UNIQUE INDEX XPKspecialnost ON specialnost

(

shifr_specialnost

);

ALTER TABLE specialnost

ADD PRIMARY KEY (shifr_specialnost);

CREATE TABLE prepodavatel (

kod_prepod INTEGER NOT NULL,

fio t_fio NOT NULL,

doljnost t_doljnost NOT NULL

);

CREATE UNIQUE INDEX XPKprepodavatel ON prepodavatel

(

kod_prepod

);

ALTER TABLE prepodavatel

ADD PRIMARY KEY (kod_prepod);

CREATE TABLE vedomost (

shifr_specialnost VARCHAR(20) NOT NULL,

kod_prepod INTEGER,

kod_disciplina INTEGER NOT NULL,

kod_student INTEGER,

lc1 t_lc1,

lc2 t_lc2,

pr1 t_pr1,

pr2 t_pr2,

srs1 t_srs1,

srs2 t_srs2,

examen t_examen,

itog t_itog

);

CREATE UNIQUE INDEX XPKvedomost ON vedomost

(

shifr_specialnost,

kod_disciplina

);

ALTER TABLE vedomost

ADD PRIMARY KEY (shifr_specialnost, kod_disciplina);

CREATE TABLE uchebnii_plan (

kod_disciplina INTEGER NOT NULL,

shifr_specialnost VARCHAR(20) NOT NULL,

semestr t_semestr,

kol_vo_kreditov t_kol_vo_kreditov

);

CREATE UNIQUE INDEX XPKuchebnii_plan ON uchebnii_plan

(

kod_disciplina,

shifr_specialnost

);

ALTER TABLE uchebnii_plan

ADD PRIMARY KEY (kod_disciplina, shifr_specialnost);

ALTER TABLE student

ADD FOREIGN KEY (gruppa)

REFERENCES gruppa;

ALTER TABLE vedomost

ADD FOREIGN KEY (kod_prepod)

REFERENCES prepodavatel;

ALTER TABLE vedomost

ADD FOREIGN KEY (kod_student)

REFERENCES student;

ALTER TABLE vedomost

ADD FOREIGN KEY (shifr_specialnost)

REFERENCES specialnost;

ALTER TABLE vedomost

ADD FOREIGN KEY (kod_disciplina)

REFERENCES Disciplina;

ALTER TABLE uchebnii_plan

ADD FOREIGN KEY (shifr_specialnost)

REFERENCES specialnost;

ALTER TABLE uchebnii_plan

ADD FOREIGN KEY (kod_disciplina)

REFERENCES Disciplina;

Третий этап. Создав все объекты мы сможем увидеть их на дереве нашей базы (рис.7).