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

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



В·ователем данных. Процедура AddTable реализована следующим образом.

procedure AddTable(NameTable: string);(Tables,PathToTables);(Tables);(Tables,NameTable);

CloseFile(Tables);;

В качестве входного параметра выступает имя таблицы. Далее следует обращение к стандартным процедурам AssignFile и Append. AssignFile связывает файловую переменную с именем файла, Append - инициирует запись в существующий файл. Процедуры AddField, AddIndex реализованы анадогично.

Процедура AddKey позволяет вводить первичные ключи и внешние ключи, в зависимости от выбора режима пользователем. Переменная Logic типа boolean показывает, осуществлялись ли ранее записи в файл. Алгоритм этой процедуры представлен на рисунке 1.

Функции InTable, InField, InKey имеют выходное значение типа boolean. Они проверяют наличие соответствующего элемента во введенных данных.

Функции InTable в качестве параметра получает имя таблицы, наличие которой в файле Tables необходимо проверить. Далее выполняются процедуры открытия файла, считывается строка из файла и проверяется ее совпадение с входным параметром. В случае совпадения их значений функция принимает значение True, иначе - False.

Функция InField имеет два параметра: имя таблицы NameTable и имя поля NameField. Данная функция работает следующим образом. Получаем стоку из файла Field. Вид этой строки таков, что сначала записано имя таблицы, а затем принадлежащее ей поле с указанием типа и его размера. Проверяем равенство входного параметра NameTable и первых символов строки, содержащих имя поля, в случае равенства проверяем также соответствие параметра NameField имени поля в данной строке файла. Таким образом просматриваем все строки файла. Функция принимает значение True в том случае если оба параметра совпали с информацией в строке файла.

Функция InKey проверяет существования ключа у таблицы. Имеет 2 входных параметра: NameTable и Why. Результат функции формируется следующим образом. В случае обнаружения в файле Keys записи соответствующей паре значений NameTable и Why функция возвращает значение True, которое свидетельствует о наличии первичного либо внешнего ключа у таблицы. В противном случае возвращается значение False, что говорит об отсутствии ключа с данным именем у таблицы.

Эти функции используются для проверки корректности ввода данных пользователем.

Значения функций FSpisokTables, FSpisokField, FSpisokKeys типа string содержат строку с содержимым соответствующего файла. Формат возвращаемого результата этих функций следующий: каждая строка файла отделена от последующей знаком &. Все эти функции реализованы аналогичным образом. Схема функций представлена на рисунке 2.

Функция FPrintStr возвращает содержимое каталога строкой. В этой строке последовательно представлена информация каталога по каждой таблице, разделенная знаком &. Алгоритм это функции представлен на рисунке 3.

Процедура PrintData использует функцию FPrintStr и на основе ее результата выводит все поля заданной пользователем таблицы в текстовую таблицу StringGrid. Алгоритм работы этой процедуры можно записать следующим образом:

1.SpisokPrint:= FPrintStr;

2.Находим информацию в строке SpisokPrint о требуемой таблице;

.Заносим имя требуемой таблицы в StringGrid;

Рисунок 1 - Алгоритм процедуры AddKey

Рисунок 2 - Схема функций FSpisokTables, FSpisokField, FSpisokKeys

4.Находим информацию о ключах таблицы и заносим в StringGrid;

5.В переменную Column заносим имена всех полей и записываем в таблицу StringGrid;

.В переменную ColumnType заносим типы полей и записываем в таблицу StringGrid;

Процедура PrintTables выводит имена всех содержащихся в файле Tables.txt отношений и количество полей в каждом из них. Для реализации этой процедуры просматриваем строки файла Tables и выводим из в текстовую таблицу StringGrid.

Рисунок 3 - Алгоритм функции FPrintStr

Далее, просматривая строки файла Field считаем количество полей для каждой таблицы и эти значения также выводим в текстовую таблицу. PrintRelations - процедура, осуществляющая вывод в многострочное текстовое поле Memo информацию о связях между отношениями на основе содержимого файла Keys. Результат выполнения процедуры PrintIndex - вывод в StringGrid имени индекса и его принадлежность к полю и таблице. Работа данной процедуры основывается на просмотре информации файла Index.

. Описание интерфейса приложения

Разработанное приложение имеет удобный интерфейс. На форме имеется меню, которое позволяет выбрать некоторое действие или выйти из программы. Пользователь может осуществлять следующие действия:

добавить таблицу

добавить поле

добавить ключ

просмотреть каталог

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

При выборе пункта меню Добавить -> Поле пользователю, с помощью раскрывающегося списка, предлагается выбрать таблицу, в которое будет добавляться поле, ввести имя поля, выбрать его тип и длину типа. Состояние флага Индекс говорит о наличии или отсутствии индекса для данного поля таблицы. Пример работы приложения в таком состоянии представлена на рисунке 4.

Рисунок 4 - Пример работы приложения

Выбор пункта меню Добавить -> Ключ позволяет выбирать пользователю таблицу, куда требуется добавить ключ и его тип. В случае добавления первичного ключа, требуется ввести имя поля, которое будет однозначно идентифицировать запись таблицы. В случае выбора внешнего ключа пользователь