double arrow

Ведение баз данных


Ввод данных.

В современных СУБД для ввода данных создаются специальные экранные формы. Формы - это специальные документы, отсвечивающие ввод и вывод данных при работе с базами данных. Они могут быть входные и выходные. Входная форма - это форма, в которую заносятся данные, выводимые из базы данных. Формы бывают двух типов - формы типа “бланк” и формы типа “таблица”. Форма “бланк” - это форма с горизонтальным размещением данных в ней, форма “табллица” - соответствует обычной таблице.

В СУБД имеются специальные генераторы экранных форм, которые без программирования позволяют конечному пользователю формировать экранные формы требуемого вида. В специальных СУБД генераторы экранных форм программируются. Это делается для того, чтобы экранная форма соответствовала схеме описания данных. Например в СУБД ПОТОК экранная форма для ведения базы данных “Описание местоположения реперов” должна соответствовать схеме описания элемента “ВЫСОТА” и схеме описания имени агрегата “РЕПЕР”.

Справочники.

В современных системах специальная информация заносится в специальные справочники данных. Справочник - это документ, в который заносится значение элемента и его код. Это делается в следующих случаях.




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

б) Объект базы данных может участвовать во многих связях, следовательно в различных записях и следовательно - файлах. Если его естественный идентификатор длинный, то он во-первых занимает много памяти, а во-вторых неудобно пользоваться. Поэтому составленный идентификатор заменяется коротким искусственным кодом.

в) Если естественный идентификатор объекта изменяется во времени, то искусственный код - не изменяется. Пользование им более удобно.

Справочники именуются. При их создании задается длина искусственного кода в символах или байтах и длина строки естественного идентификатора.

Ниже приводится справочник тип центра (табл.119), закрепления геодезического пункта.

Таблица 119. Справочник типов центров.

№ п/п Наименование типа Код
    Центр пункта триангуляции, полигонометрии, трилатерации 2, 3, 4 классов для районов неглубокого (до 1,5 м) промерзания грунта. Тип 1 г.р. Центр пунктов триангуляции, полигонометрии, трилатерации 2, 3, 4 классов для районов глубокого промерзания грунта (свыше 1,5 м) и для районов многолетней мерзлоты. Тип 2 г.р.        

Описание второго справочника приведено в таблице 120.

Таблица 120. Описание справочника типа центров.



Имя Длина записи в байтах или символах Длина кода в байтах или символах
Тип центра

Длина записи соответствует наибольшей длине наименования типа центра в справочнике. В данном случае она соответствует 76 символов. Для обозначения кода достаточно два символа.

Словари данных. Описание данных относится к метаинформации, т.е. к данным о данных. Централизованное хранилище метаинформации называется словарем данных. В этом случае для доступа к данным необходимо знать лишь их идентификаторы и формы представления. Например для чтения информации, хранящейся СУБД dBASE IV, достаточно знать формат DBF - файлов.

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

Целостность данных определяется правильностью данных в базе в любой момент времени. Это значит, что введенные данные должны полностью соответствовать схеме описания данных. Кроме этого должны реализовываться ограничения целостности связи. Это значит, что значение атрибута, являющегося внешним ключом, должно совпадать со значением атрибута являющегося ключом отношения, описывающего соответствующий объект. Например, значение атрибута ФИО (Внешний ключ) в объекте “ПЛАН” должно соответствовать значению этого атрибута (ключ отношения) объекта “ИСПОЛНИТЕЛЬ”.



Защита данных.

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

Защита данных от разрушений при сбоях оборудования называется обеспечением физической целостности данных.

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

Защита от некорректных обновлений называется логической и семантической целостностью. Это соответствует понятию целостности, рассмотренному ранее. При этом семантика относится к ограничениям целостности связи.

Защита данных от несанкционированного доступа осуществляется с помощью замков управления доступом. Простейшим вариантом замка управления доступом является пароль.

Корректировка данных.

Корректировка данных осуществляется при тех же экранных формах, что и ввод. Но могут создаваться и специальные формы для корректировки.

Манипулирование данными.

Под манипулированиями данными понимается процесс осуществления запросов к базе данных. Запросам соответствуют программы, составленные на традиционных языках высокого уровня (Си, Паскаль и др.) или на других специально разработанных языках.

Манипулирование данными осуществляется языком манипулирования данными (ЯМД).

Язык манипулирования данными бывает включающий и автономный. Включающий ЯМД состоит из операторов, составленных на основе известных языков высокого уровня.

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

ЯМД предназначен для пользователей - программистов, так как его можно создавать и использовать при знании языков программирования высокого уровня.

Для работы с записями баз данных в языке Си широко используется произвольный доступ к файлам.

Так для установки указателя записи - чтения на начало открываемого файла, описываемого структурной переменной типа FILE указываемой fp, используется функция

# include <stdio.h>

void rewind (FILE*fp)

Следующая функция сдвигает названный указатель на offset байт

# include <stdio.h>

int fseek (FILE*fp, long offset, int from _ where)

При этом если offset > 0 сдвиг осуществляется в сторону EOF (конца файла), а при offset < 0 - в сторону начала файла. Параметр from _ where принимает следующие значения:

SEEK _ SET (0) - сдвиг от начала файла,

SEEK _ CUR (1) - сдвиг от текущей позиции указателя,

SEEK _ END (2) - сдвиг от конца файла.

В случае успеха функция возвращает 0. В случае ошибки - EOF (-1).

Текущее значение указателя определяется (возвращается) функцией

# include <stdio.h>

long ftell (FILE*fp)

В случае ошибки возвращается - 1 типа long (-1L). Рассмотрим пример. Пусть структура файла имеет вид, приведенный ниже.

Структура файла.

Общее число записей в файле.
Запись 1 Заголовок Указатель записи - чтение для следующего заголовка
    Индикатор содержимого В - запись; - свободного пространства
    Длина ключа (не более 15) Длина записи (не более 127)
  Ключ записи
  Запись
Запись № .................................................................................

Необходимо установить указатель записи - чтения на конец файла, на который указывает fp и установить значение указателя. Эти операции осуществляются следующими инструкциями

fseek (fp, 0L, SEEK _ END);

a = ftell (fp);

Переменной а будет присвоено значение адреса памяти, соответствующего концу файла fp.

Определение текущего положения указателя и его установку осуществляют функции соответственно

# include <stdio.h>

int fgetpos (FILE*fp, fpos _ t*pos)

и

# include <stdio.h>

int fsetpos (FILE*fp, const fpos _ t*pos)

Значения определяемого и хранимого указателей помещаются по адресу памяти, задаваемого указателем pos.

В случае успеха функции возвращают 0, в противном случае - любое ненулевое число.

Пример. Пусть заголовок записи определен следующей структурой

struct file _ record {

long offset; /* указатель чтения - записи следующего заголовка */

char indicator: /* ‘B’ - запись

‘F’ - свободное место */

unsigned key _ length /* длина поля ключа в байтах */

unsigned length /* длина записи в байтах */

} work

необходимо прочитать запись с номером in _ line. Это задание будет выполнено с помощью следующих инструкций

fseek (fp, 0L, SEEK _ SET); /* установка указателя на начало файла */

fgetpos (fp, &f_p); /* текущие значения указателя помещаются по

адресу, задаваемому f_p */

for (cur _ line = 0; cur _ line <= in _ line; cur _ line ++) /* установка указателя

по адресу f_p */

{ fsetpos (fp, &f_p); /* чтение заголовка */

it (! fread (& work, sizeof (struct file _ record), 1, fp)

return EOF;

f_p = work . offset

}

fseek (fp, work . key _ length, SEEK _ CUR);

it (! fread (buffer, work . length, 1, fp))

return EOF;

return cur _ line;

}

В данной программе в цикле for читаются заголовки до достижения запис с номером in _ line. После этого функция fseek переводит указатель чтения записи от текущей позиции на длину ключа записи (key _ length). А функция fread осуществляет чтение записи из файла в buffer. Как следует из приведенных примеров функции произвольного доступа к файлам могут эффективно использоваться для создания баз данных.

Генерация отчетов.

Генерация отчетов выполняется также как и генерация форм ввода - вывода по специально составленным программам. Эти программы включены в состав современных СУБД. С их помощью получают документы разных типов: табличных, бланковых и произвольных. Для составления отчетов в главном меню имеется панель ОТЧЕТЫ (REPORT), работая с которой генерируется отчет любого вида.







Сейчас читают про: